一、克隆遠程倉庫已有分支
當作為一個新成員參與別人已經建好的項目中,此時遠程已經有有一些分支了。
1、克隆
從遠程下載代碼步驟如下:打開VS,切換到“團隊資源管理器”,點上方“主頁”右側的下拉三角,選擇項目->連接到團隊項目,然后選擇“克隆”,填入Git的Remote Url和要克隆到的本地目錄(該目錄必須為空),然后點克隆按鈕即可將項目克隆到本地。

2、本地拉取遠程的一個新分支
只需單擊同步里面的 提取。

常見名詞解釋
拉取(Pull):將遠程版本庫合並到本地版本庫,相當於(Fetch+Meger)
獲取/提取(Fetch):從遠程版本庫獲得最新版本
合並(Meger):將兩個版本庫進行合並操作
提交(Commit):將所做的更改,存入本地暫存庫
推送(Push):將所做的更改,存入遠程版本庫
同步(Pull+Push):先將遠程庫拉取,再將本地庫推送到遠程庫,相當於(Pull+Push)
變基到(Switch):切換分支(雙擊即可切換)
git pull 從遠程拉取最新版本 到本地 自動合並 merge git pull origin master。。即:git pull = git fetch + git merge,這樣可能會產生沖突,需要手動解決。
git fetch 從遠程獲取最新版本 到本地 不會自動合並 merge git fetch origin master git log -p master ../origin/master git merge orgin/master
實際使用中 使用git fetch 更安全 在merge之前可以看清楚 更新情況 再決定是否合並
二、初建項目並push到github上
1、在遠程Github等服務器新建一個空Repositories,這里起名GitTest。
打開VS2013,新建項目GitTestProject,右鍵單擊解決方案,選擇“將解決方案添加到源代碼管理器”,選擇Git
同步,推送到遠程倉庫

注:若沒有的這個選項話,也可以用git bash去操作:
連接遠程倉庫,在本地的命令框中輸入下面的命令,即連接到了名為poster的倉庫上
git remote add origin https://github.com/xxxx/yyy.git
把本地項目推送到遠程倉庫:
git push -u origin master
三、提交代碼
暫存想提交的文件,不想提交的右鍵暫存。提交臨時文件,拉取再推送。
有沖突時,可以點擊沖突,然后對比文件,選擇使用遠程的代碼還是本地代碼,然后再次提交。
四、忽略文件
把某些目錄或文件加入忽略規則,后發現並未生效,原因是.gitignore只能忽略那些原來沒有被追蹤的文件,如果某些文件已經被納入了版本管理中,則修改.gitignore是無效的。
那么解決方法是先把本地緩存刪除:
git rm -r --cached .
將本地代碼重新加入
git add .
不想提交的文件,最好一開始提交 之時 就不要提交到遠程。
五、還原修改
如果提交了一次代碼到遠程,然后發現想撤銷上次提交,即想要還原修改,轉到修改還原的代碼處,單擊方法引用處的

在右側即可點還原操作。然后單擊同步,進行同步到遠程即可
六、常見問題
1、Git Push Error: dst refspec xxxx(分支號) matches more than one.
最近工作中遇到這樣的問題,使用的是Git做版本控制,在PUSH代碼的時候,出現如下錯誤:
- error: dst refspec XXX matches more than one.
- error: failed to push some refs to 'git@xxx.xx:xxx.git'
初步一看,還想,怎么可能,出現兩個相同的分支?表示很不解。
查看Git服務器上的分支也只有一個指定名稱的分支,最后無意間發現服務器上有一個和分支名稱相同的tag,按照項目組的習慣,tag一般都是以時間作為名稱的,這里怎么會出現這個,好奇中刪掉它重試,果然,Git把tag和分支搞在一起了,tag名稱不能和分支名稱完全相同,不知道這是Git個別版本的bug還是就這樣機制。
2、git中進入帶有空格的目錄下的解決辦法
比如,要進入Program Files目錄下,有兩種方法:
- 將Program Files目錄用引號引起來。
$ cd "Program Files"
- 將空格處使用空格引號
$ cd Program" "Files
3.Git clone 錯誤 | error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
4.Permanently added the RSA host key for IP address '192.30.255.113' to the list of known hosts.
為IP地址192.30.255.113的主機(RSA連接的)持久添加到hosts文件中。
5.Windows下git出現Permission denied的解決辦法
本地git bash 使用git clone git@github.com:***.git方式下載github代碼至本地時需要依賴ssh key,遇到權限不足問題時一般都是SSH key失效或者SSH key不存在,重新創建SSH key一般就可以解決問題;
6.Github倉庫太大,公司限制速度,下載不了
可以嘗試用 碼雲 去搜下是否有相同的庫
7、Git每次push都需要輸入用戶名和密碼
問題:
已經添加了 SSH key,但是 push 的時候,需要輸入,用戶名和密碼
原因:
出現這種情況的原因是我們使用了http的方式clone代碼到本地,相應的,也是使用http的方式將代碼push到服務器。
git clone https://github.com/xxxxx
這就容易導致這個問題的出現。而如果采用ssh方式的話,是這樣clone代碼的:
git clone git@github.com:xxxxx
解決辦法:
將http方式改為ssh方式即可。
1.先查看當前方式:git remote -v
2.把http方式改為ssh方式。先移除舊的http的origin:git remote rm origin
3.再添加新的ssh方式的origin:git remote add origin git@github.com:xxxx/linux-system-programming.git
4.改動完之后直接執行git push是無法推送代碼的,需要設置一下上游要跟蹤的分支,與此同時會自動執行一次git push命令,此時已經不用要求輸入用戶名及密碼啦!
git push --set-upstream origin master
參考:
