想在github上保存一些平时写的测试程序,所以就建立了一个repository:https://github.com/commshare/testProgram

建立好之后,怎么把本地的代码上传呢。是个问题。

之前有clone到本地,然后再add 和push到服务器的经历:

centos6.3 安装gitosis http://blog.csdn.net/commshare/article/details/17002447
和http://blog.csdn.net/commshare/article/details/16965559   基于centos6.3第一次搭建一个git 服务器
当然,github上我已经有了第一个repository:http://blog.csdn.net/commshare/article/details/14166961  首次部署github上的repository
现在这个是把windows系统里,本地磁盘的一个文件夹里头的文件传到github上保存。

=============================

参考http://blog.sina.com.cn/s/blog_63eb3eec0101cf6x.html

参考 http://www.cnblogs.com/findingsea/archive/2012/08/27/2654549.html

参考 http://artori.us/git-github-usage/

参考 http://lazynight.me/2898.html

(1)安装git的工具,github的工具被墙了,所以装 这个TortoiseGit:http://msysgit.github.com/

下载地址 : http://code.google.com/p/tortoisegit/

装好之后,右键就不同了。

(2)在所要上次文件夹里头点击上面的git init here

(3)打开git bash  ,准备 ssh key。

ssh-keygen -t rsa -C "[email protected]"

存在这里:

要把id_rsa.pub传到github上,做为一个新的key。

Welcome to Git (version 1.8.4-preview20130916)

Run 'git help git' to display the help index.
Run 'git help <command>' to display help for specific commands.

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)
$ ssh-keygen -t rsa -C "c*********[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/ZhangBin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/ZhangBin/.ssh/id_rsa.
Your public key has been saved in /c/Users/ZhangBin/.ssh/id_rsa.pub.

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)

(4)加入key到github上。

测试是否成功:

$ ssh -T [email protected]
The authenticity of host 'github.com (192.30.252.130)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.252.130' (RSA) to the list of know
n hosts.
Hi commshare! You've successfully authenticated, but GitHub does not provide she
ll access.

(5)加入新的账户(用户名和邮箱)

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)
$ git config --global user.name "zhangbin"

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)
$ git config --global user.email

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)
$

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)
$ git config --global user.email "c####[email protected]"

(6) 加入远程的github上的仓库,文件就是传入到这个仓库里头的。

进入要上传的仓库,右键git bash,添加远程地址:

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)

$ git remote add orign [email protected]:c*******e/testProgram.git

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)
$ git pull
fatal: No remote repository specified.  Please, specify either a URL or a
remote name from which new revisions should be fetched.

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)
$ git pull origin master
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

还是写成origin吧,

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)
$ git remote add origin [email protected]:commshare/testProgram.git

(7)成功的从远程仓库取出数据

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)
$ git pull origin master
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From github.com:commshare/testProgram
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master

(8)给远程仓库传入数据

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)
$ git add ./testTHIS.cpp

这个a 出错了:

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)
$ git commit -m -a "test this pointer of C++ "
error: pathspec 'test this pointer of C++ ' did not match any file(s) known to g
it.

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)
$ git commit -m  "test this pointer of C++ "
[master 172c3c8] test this pointer of C++
 1 file changed, 27 insertions(+)
 create mode 100644 testTHIS.cpp

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)
$ git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 584 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:commshare/testProgram.git
   3a7460a..172c3c8  master -> master

ZhangBin@ZHANGBIN-PC /E/codeReocrdi (master)
$

======================================

然后,我又使用我的ubuntu12.04的zhangbin用户向这个仓库传入代码:

zhangbin@Ubuntu32:~/codeStore/testcode$ ls
FIFO  testBool  testBool.c  testlseek  testlseek.c  ts_length  ts_length.c
zhangbin@Ubuntu32:~/codeStore/testcode$ git init
Initialized empty Git repository in /home/zhangbin/codeStore/testcode/.git/

zhangbin@Ubuntu32:~/codeStore/testcode$ git remote add origin [email protected]:commshare/testProgram.git
zhangbin@Ubuntu32:~/codeStore/testcode$ git add testlseek

报错,好像是说先要加入新的用户:

zhangbin@Ubuntu32:~/codeStore/testcode$ git commit -m "test lseek for getting a file's length"
[master (root-commit) 7c752bc] test lseek for getting a file's length
 Committer: ZhangBin@Ubuntu32 <zhangbin@Ubuntu32.(none)>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

git config --global user.name "Your Name"
    git config --global user.email [email protected]

After doing this, you may fix the identity used for this commit with:

git commit --amend --reset-author

1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100755 testlseek
zhangbin@Ubuntu32:~/codeStore/testcode$ git config --global user.name "zhangbin" 
zhangbin@Ubuntu32:~/codeStore/testcode$ git config --global user.email "我的邮箱@gmail.com"

还是报错,加入了用户之后,似乎应该先add?但实际上,上一个add在没有加入用户的时候,已经add成功了。

所以这下面没有testlseek了。

zhangbin@Ubuntu32:~/codeStore/testcode$ git commit -m "test lseek for getting a file's length"
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
# FIFO/
# testBool
# testBool.c
# testlseek.c
# ts_length
# ts_length.c
nothing added to commit but untracked files present (use "git add" to track)

直接这样报错:好像是要指定分支的:
zhangbin@Ubuntu32:~/codeStore/testcode$ git push
Warning: Permanently added the RSA host key for IP address '192.30.252.131' to the list of known hosts.
To [email protected]:commshare/testProgram.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:commshare/testProgram.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.
zhangbin@Ubuntu32:~/codeStore/testcode$ git add ./testlseek.c ./testlseek commit -m "test lseek for getting a file's length"
error: unknown switch `m'
usage: git add [options] [--] <filepattern>...

-n, --dry-run         dry run
    -v, --verbose         be verbose

-i, --interactive     interactive picking
    -p, --patch           select hunks interactively
    -e, --edit            edit current diff and apply
    -f, --force           allow adding otherwise ignored files
    -u, --update          update tracked files
    -N, --intent-to-add   record only the fact that the path will be added later
    -A, --all             add changes from all tracked and untracked files
    --refresh             don't add, only refresh the index
    --ignore-errors       just skip files which cannot be added because of errors
    --ignore-missing      check if - even missing - files are ignored in dry run

加入新的文件:
zhangbin@Ubuntu32:~/codeStore/testcode$ git add ./testlseek.c ./testlseek

注释成功:
zhangbin@Ubuntu32:~/codeStore/testcode$ git commit -m "test lseek for getting a file's length"
[master ed859ef] test lseek for getting a file's length
 1 file changed, 49 insertions(+)
 create mode 100644 testlseek.c

push失败:要指定分支
zhangbin@Ubuntu32:~/codeStore/testcode$ git push
To [email protected]:commshare/testProgram.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:commshare/testProgram.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

zhangbin@Ubuntu32:~/codeStore/testcode$ git push origin master
To [email protected]:commshare/testProgram.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:commshare/testProgram.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

貌似拉下来也失败:
zhangbin@Ubuntu32:~/codeStore/testcode$ git pull
warning: no common commits
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 3 (delta 0)
Unpacking objects: 100% (6/6), done.
From github.com:commshare/testProgram
 * [new branch]      master     -> origin/master
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

If you often merge with the same branch, you may want to
use something like the following in your configuration file:
    [branch "master"]
    remote = <nickname>
    merge = <remote-ref>

[remote "<nickname>"]
    url = <url>
    fetch = <refspec>

See git-config(1) for details.

这么拉就好了:
zhangbin@Ubuntu32:~/codeStore/testcode$  git pull origin master
From github.com:commshare/testProgram
 * branch            master     -> FETCH_HEAD
Merge made by the 'recursive' strategy.
 README.md    |    2 ++
 testTHIS.cpp |   27 +++++++++++++++++++++++++++
 2 files changed, 29 insertions(+)
 create mode 100644 README.md
 create mode 100644 testTHIS.cpp

这么推也是好的:

zhangbin@Ubuntu32:~/codeStore/testcode$ git push origin master
Counting objects: 9, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (8/8), 3.93 KiB, done.
Total 8 (delta 0), reused 0 (delta 0)
To [email protected]:commshare/testProgram.git
   172c3c8..3414346  master -> master
zhangbin@Ubuntu32:~/codeStore/testcode$

===========删掉一个文件

git rm --cached filename 
git commit -m "hehe" 
git push origin branch

======================后来老是遇到这些问题,就是push不上去,必须先pull===================

root@Ubuntu32:/home/zhangbin/STM/testcode# vi test_StrDup.c
root@Ubuntu32:/home/zhangbin/STM/testcode# gcc -o test_StrDup test_StrDup.c 
test_StrDup.c: In function ‘strDup’:
test_StrDup.c:6:16: warning: incompatible implicit declaration of built-in function ‘strlen’ [enabled by default]
test_StrDup.c:9:10: warning: incompatible implicit declaration of built-in function ‘memcpy’ [enabled by default]
root@Ubuntu32:/home/zhangbin/STM/testcode# ./test_StrDup 
after copy is [zhangbinhometown] 
root@Ubuntu32:/home/zhangbin/STM/testcode# git add test_StrDup.c 
root@Ubuntu32:/home/zhangbin/STM/testcode# git commit -m "字符串复制,来自live555"
[master d6ab4d6] 字符串复制,来自live555
 1 file changed, 18 insertions(+)
 create mode 100644 test_StrDup.c
root@Ubuntu32:/home/zhangbin/STM/testcode# git push
To [email protected]:commshare/testProgram.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:commshare/testProgram.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.
root@Ubuntu32:/home/zhangbin/STM/testcode# git push origin master
To [email protected]:commshare/testProgram.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:commshare/testProgram.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.
root@Ubuntu32:/home/zhangbin/STM/testcode# git push git pull
fatal: 'git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
root@Ubuntu32:/home/zhangbin/STM/testcode# git push
^C
root@Ubuntu32:/home/zhangbin/STM/testcode# git pull
remote: Counting objects: 15, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 13 (delta 5), reused 11 (delta 3)
Unpacking objects: 100% (13/13), done.
From github.com:commshare/testProgram
   8bd6223..39097c5  master     -> origin/master
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

If you often merge with the same branch, you may want to
use something like the following in your configuration file:
    [branch "master"]
    remote = <nickname>
    merge = <remote-ref>

[remote "<nickname>"]
    url = <url>
    fetch = <refspec>

See git-config(1) for details.
root@Ubuntu32:/home/zhangbin/STM/testcode# git push origin master
To [email protected]:commshare/testProgram.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:commshare/testProgram.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.
root@Ubuntu32:/home/zhangbin/STM/testcode# git pull origin master
From github.com:commshare/testProgram
 * branch            master     -> FETCH_HEAD
Merge made by the 'recursive' strategy.
 testIFDEFINE.c          |   26 ++++++++++++++++++++++++++
 testUpasting.cpp        |   37 +++++++++++++++++++++++++++++++++++++
 testUpastingVirtual.cpp |   37 +++++++++++++++++++++++++++++++++++++
 3 files changed, 100 insertions(+)
 create mode 100644 testIFDEFINE.c
 create mode 100644 testUpasting.cpp
 create mode 100644 testUpastingVirtual.cpp
root@Ubuntu32:/home/zhangbin/STM/testcode# git push origin master
Counting objects: 7, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 759 bytes, done.
Total 5 (delta 2), reused 0 (delta 0)
To [email protected]:commshare/testProgram.git
   39097c5..e0fa03f  master -> master
root@Ubuntu32:/home/zhangbin/STM/testcode#

######add 2014 01 13 #################################

后来,又新建立了一个java的测试工程保存路径。

加入了一些android的工程:

root@Ubuntu32:/home/zhangbin/ffmpeg/android/ndk-samples# git init
Initialized empty Git repository in /home/zhangbin/ffmpeg/android/ndk-samples/.git/
root@Ubuntu32:/home/zhangbin/ffmpeg/android/ndk-samples# git remote add origin https://github.com/commshare/meTestJavaProgram.git
root@Ubuntu32:/home/zhangbin/ffmpeg/android/ndk-samples# ls
bitmap-plasma    hello-jni       native-activity  san-angeles
gles3jni         hello-neon      native-audio     Teapot
HelloComputeNDK  module-exports  native-media     test-libstdc++
hello-gl2        MoreTeapots     native-plasma    two-libs
root@Ubuntu32:/home/zhangbin/ffmpeg/android/ndk-samples# git add hello-jni
root@Ubuntu32:/home/zhangbin/ffmpeg/android/ndk-samples# git commit -m "use hello-jni project to test fprintf replacement for android platform "
[master (root-commit) 038d666] use hello-jni project to test fprintf replacement for android platform
 38 files changed, 462 insertions(+)
 create mode 100755 hello-jni/.classpath
 create mode 100755 hello-jni/.project
 create mode 100755 hello-jni/.settings/org.eclipse.jdt.core.prefs
 create mode 100644 hello-jni/AndroidManifest.xml
 create mode 100755 hello-jni/bin/AndroidManifest.xml
 create mode 100755 hello-jni/bin/HelloJni.apk
 create mode 100755 hello-jni/bin/classes.dex
 create mode 100755 hello-jni/bin/classes/com/example/hellojni/BuildConfig.class
 create mode 100755 hello-jni/bin/classes/com/example/hellojni/HelloJni.class
 create mode 100755 hello-jni/bin/classes/com/example/hellojni/R$attr.class
 create mode 100755 hello-jni/bin/classes/com/example/hellojni/R$string.class
 create mode 100755 hello-jni/bin/classes/com/example/hellojni/R.class
 create mode 100755 hello-jni/bin/dexedLibs/annotations-bf65d065d2bf11dc7706959d18f5bc41.jar
 create mode 100755 hello-jni/bin/resources.ap_
 create mode 100755 hello-jni/gen/com/example/hellojni/BuildConfig.java
 create mode 100755 hello-jni/gen/com/example/hellojni/R.java
 create mode 100755 hello-jni/jni/Android.mk
 create mode 100755 hello-jni/jni/hello-jni.c
 create mode 100644 hello-jni/libs/armeabi/gdb.setup
 create mode 100755 hello-jni/libs/armeabi/gdbserver
 create mode 100755 hello-jni/libs/armeabi/libhello-jni.so
 create mode 100755 hello-jni/obj/local/armeabi/libhello-jni.so
 create mode 100644 hello-jni/obj/local/armeabi/objs-debug/hello-jni/hello-jni.o
 create mode 100644 hello-jni/obj/local/armeabi/objs-debug/hello-jni/hello-jni.o.d
 create mode 100755 hello-jni/project.properties
 create mode 100644 hello-jni/res/values/strings.xml
 create mode 100644 hello-jni/src/com/example/hellojni/HelloJni.java
 create mode 100755 hello-jni/tests/.classpath
 create mode 100755 hello-jni/tests/.project
 create mode 100755 hello-jni/tests/.settings/org.eclipse.jdt.core.prefs
 create mode 100644 hello-jni/tests/AndroidManifest.xml
 create mode 100755 hello-jni/tests/bin/AndroidManifest.xml
 create mode 100755 hello-jni/tests/bin/classes/com/example/hellojni/HelloJniTest.class
 create mode 100755 hello-jni/tests/bin/classes/com/example/hellojni/tests/BuildConfig.class
 create mode 100755 hello-jni/tests/bin/jarlist.cache
 create mode 100755 hello-jni/tests/gen/com/example/hellojni/tests/BuildConfig.java
 create mode 100755 hello-jni/tests/project.properties
 create mode 100644 hello-jni/tests/src/com/example/hellojni/HelloJniTest.java
root@Ubuntu32:/home/zhangbin/ffmpeg/android/ndk-samples# git push origin master
Username for 'https://github.com': 
Password for ': 
To https://github.com/commshare/meTestJavaProgram.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/commshare/meTestJavaProgram.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

root@Ubuntu32:/home/zhangbin/ffmpeg/android/ndk-samples# git pull origin master
warning: no common commits
remote: Reusing existing pack: 17, done.
remote: Total 17 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (17/17), done.
From https://github.com/commshare/meTestJavaProgram
 * branch            master     -> FETCH_HEAD
Merge made by the 'recursive' strategy.
 testWriteByteArray/.classpath                      |    6 ++
 testWriteByteArray/.project                        |   17 ++++
 .../.settings/org.eclipse.jdt.core.prefs           |   11 +++
 testWriteByteArray/bin/writeArray.class            |  Bin 0 -> 1540 bytes
 testWriteByteArray/home.txt                        |    1 +
 testWriteByteArray/src/writeArray.java             |   93 ++++++++++++++++++++
 6 files changed, 128 insertions(+)
 create mode 100644 README.md
 create mode 100644 testWriteByteArray/.classpath
 create mode 100644 testWriteByteArray/.project
 create mode 100644 testWriteByteArray/.settings/org.eclipse.jdt.core.prefs
 create mode 100644 testWriteByteArray/bin/writeArray.class
 create mode 100644 testWriteByteArray/home.txt
 create mode 100644 testWriteByteArray/src/writeArray.java
root@Ubuntu32:/home/zhangbin/ffmpeg/android/ndk-samples# git push origin master
To https://github.com/commshare/meTestJavaProgram.git
   1710880..e4eb82c  master -> master
root@Ubuntu32:/home/zhangbin/ffmpeg/android/ndk-samples# 
---------------------
作者:commshare
来源:CSDN
原文:https://blog.csdn.net/commshare/article/details/17078093
版权声明:本文为博主原创文章,转载请附上博文链接!

05-01 03:11