【背景】
折騰:
【記錄】將googlecode上面的crifanLib遷移到Github上
期間出錯:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Administrator@PC-20131018OHXV /cygdrive/e/dev_root/git/crifanLib $ git remote add origin https: //github .com /crifan/crifanLib .git Administrator@PC-20131018OHXV /cygdrive/e/dev_root/git/crifanLib $ git remote - v origin https: //github .com /crifan/crifanLib .git (fetch) origin https: //github .com /crifan/crifanLib .git (push) Administrator@PC-20131018OHXV /cygdrive/e/dev_root/git/crifanLib $ git push origin master Username for 'https://github.com' : Password for 'https://admin@crifan.com@github.com' : To https: //github .com /crifan/crifanLib .git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://github.com/crifan/crifanLib.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. |
出錯了。
很明顯是:
本地沒有update到最新版本的項目(git上有README.md文件沒下載下來)
本地直接push所以會出錯。
【解決過程】
1.看到提示里面,感覺是本地的代碼不是最新的。
所以覺得應該是類似於svn中的,先update一下,再去commit,估計就可以了。
所以先去pull試試:
結果直接pull好像是不對的:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Administrator@PC-20131018OHXV /cygdrive/e/dev_root/git/crifanLib $ git pull warning: no common commits remote: Counting objects: 6, done . remote: Total 6 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (6 /6 ), done . From https: //github .com /crifan/crifanLib * [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. |
看來需要先搞懂pull的用法。
2.估計是指定對應的要pull的目標即可。
所以再去試試pull origin:

?
1 2 3 4 5 |
Administrator@PC-20131018OHXV /cygdrive/e/dev_root/git/crifanLib $ git pull origin You asked to pull from the remote 'origin' , but did not specify a branch. Because this is not the default configured remote for your current branch, you must specify a branch on the command line. |
也還是不對。
有空再繼續搞懂原理后再弄。。
3.搜:
error: failed to push some refs to
參考:
github – git error: failed to push some refs to – Stack Overflow
去試試:

?
1 2 3 4 5 6 |
Administrator@PC-20131018OHXV /cygdrive/e/dev_root/git/crifanLib $ git pull --rebase origin master From https: //github .com /crifan/crifanLib * branch master -> FETCH_HEAD First, rewinding head to replay your work on top of it... Applying: add local crifanLib to github |
可以看到,此時已經把github上最新的文件下載下來了:

即,那個README.md文件。
4.接着再去:
git push origin master

?
1 2 3 4 5 6 7 8 9 10 11 |
Administrator@PC-20131018OHXV /cygdrive/e/dev_root/git/crifanLib $ git push origin master Username for 'https://github.com' : Password for 'https://crifancrifancrifan@github.com' : Counting objects: 19, done . Delta compression using up to 4 threads. Compressing objects: 100% (14 /14 ), done . Writing objects: 100% (18 /18 ), 112.33 KiB, done . Total 18 (delta 0), reused 0 (delta 0) To https: //github .com /crifan/crifanLib .git 6bae951..32d67c7 master -> master |
即可成功把本地的文件都上傳到github上面去了。
5.此時再去github網站上也就可以看到對應文件了:

【注意】
此處注意到,此時所用的用戶,是那個當前電腦的名詞,很長的那個,而不是crifan:

那是因為之前那個:
【已解決】cygwin中用git去config配置用戶名和郵箱出錯:error: cannot run vi: No such file or directory
時,當時沒有解決掉用戶名的問題就去commit了。
所以用戶名是當時的,當前電腦的用戶名。而不是我自己的crifan。
而此時已經解決了修改用戶名的問題。
等下次再去上傳,或許可以把用戶名變過來了。