先看圖,不說話
git fetch origin 之後……
注意:git fetch 命令會更新 remote 索引。
看完圖之後,以下語法要搞清楚:
推送本地serverfix -> serverfix(origin): $ git push origin serverfix
通過此語法,你可以把本地分支推送到某個命名不同的遠端分支:
若想把遠端分支叫作awesomebranch
,可以用:git push origin serverfix:awesomebranch
來推送資料。
接下來,當你的協作者再次從伺服器上獲取資料時($ git fetch origin),他們將得到乙個新的遠端分支origin/serverfix
:
有的只是乙個你無法移動的origin/serverfix
指標。
如果要把該內容合併到當前分支,可以執行git merge origin/serverfix
。
如果想要乙份自己的serverfix
來開發,可以在遠端分支的基礎上分化出乙個新的分支來:$ git checkout -b serverfix origin/serverfix
(git checkout -b [分支名] [遠端名]/[分支名]。)
從遠端分支checkout
出來的本地分支,稱為
跟蹤分支(tracking branch)。
在跟蹤分支裡輸入git push
,git pull
git 會自行推斷。
$ git checkout --track origin/serverfix 相當於$ git checkout -b serverfix origin/serverfix
刪除遠端分支
git push [遠端名] :[分支名]。
1. git fetch
:相當於是從遠端獲取最新版本到本地,不會自動merge:
git fetch origin master
2. git pull
:相當於是從遠端獲取最新版本並merge到本地:git pull origin master
例子:$ git checkout experiment
它的原理是: 回到兩個分支最近的共同祖先c2,生成一系列檔案補丁,放在c4後面(master的後面),得到(c3'),以及experiment分支。
例子:$ git rebase --onto master server client
它的原理是:首先找到server client共同的節點c3,將c3到client的c8,c9 rebase……
git分支的衍合
把乙個分支中的修改整合到另乙個分支的辦法有兩種 merge和rebase,當開發程序分叉到兩個不同的分支,又各自提交了更新。最容易的整合分支的方法是merge,它會把兩個分支最新的快照以及兩者的共同祖先進行三方合併,合併的結果是產生乙個新的提交物件。其實還有另外乙個選擇,可以在乙個分支裡發生的變化補...
git分支的衍合
一般我們使用衍合的目的,是想要得到乙個能在遠端分支上乾淨應用的補丁 比如某些專案你不是維護者,但想幫點忙的話,最好用衍合 先在自己的乙個分支裡進行開發,當準備向主專案提交補丁的時候,根據最新的 origin master 進行一次衍合操作然後再提交,這樣維護者就不需要做任何整合工作 譯註 實際上是把...
git學習五(分支的衍合rebase)
它的原理是回到兩個分支最近的共同祖先,根據當前分支 也就是要進行衍合的分支experiment 後續的歷次提交物件 這裡只有乙個 c3 生成一系列檔案補丁,然後以基底分支 也就是主幹分支master 最後乙個提交物件 c4 為新的出發點,逐個應用之前準備好的補丁檔案,最後會生成乙個新的合併提交物件 ...