Git / git clone 、git pull 和 git fetch
一、git clone
Git 的 clone 命令的工作如下:
1、自動將遠程主機命名為 origin,拉取它的所有數據。
2、創建一個指向它的 master 分支的指針,并且在本地將其命名為 origin/master。
3、創建一個與 origin 的 master 分支在指向同一個地方的本地 master 分支。
?
二、git fetch
1、本地有提交,遠程也有別人的推送
遠程庫有人推送,提交了 C0 和 C1:
?本地提交了 D0 和 D1:
只要你不與 origin 服務器連接,你的 origin/master 指針就不會移動。
?2、同步
如果要同步遠程庫到你的工作,運行 git fetch origin 命令。
$ git fetch origin這個命令功能:
(1)查找 “origin” 是哪一個服務器,從中抓取本地沒有的數據;
(2)更新本地數據庫,移動 origin/master 指針指向新的、更新后的位置。
要特別注意的一點是 fetch 抓取到新的遠程跟蹤分支時,本地的工作區(workspace)不會自動生成一份可編輯的副本,抓取結果是直接送到版本庫(Repository)中。如下圖:
?
打個比方,在遠程庫 origin 新建了一個分支 dev,git fetch 后本地不會生成一個新的分支 dev(可用 git branch 查看),只有一個不可以修改的 origin/dev 指針。
3、在 origin/master 后繼續工作
如果想要在 origin/master 分支上工作,可以新建分支 test 并將其建立在遠程跟蹤分支之上:
$ git checkout -b test(本地分支) origin/master(遠程分支)這會給你新建一個用于工作的本地分支 test,并且起點位于 origin/master。
4、合并
??? 如果想把拉取的結果合并到本地分支,需要手動合并。使用如下命令:
$ git chekout master $ git merge origin/master然而,看到上面的合并結果會想到命令 git pull 。在大多數情況下它的含義是一個 git fetch 緊接著一個 git merge 命令。即 git pull 是 git fetch 和 git merge 的兩步的和。
但是由于 git pull 的使用經常令人困惑,所以通常單獨顯式地使用 fetch 與 merge 命令會更好一些。
?
(SAW:Game Over!)
總結
以上是生活随笔為你收集整理的Git / git clone 、git pull 和 git fetch的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搞懂函数调用前后堆栈恢复的过程
- 下一篇: GDB / TUI 模式