git 中的 no ff 引數是什麼意思

2021-10-10 12:50:25 字數 1272 閱讀 1028

git在合併分支時,一般都會加上 --no-ff 引數,像這樣:

$ git checkout develop

$ git merge --no-ff feature

那這裡的 --no-ff 引數具體作用是什麼呢?

主要是為了禁止 git 的快進式合併。

git 在合併兩個分支時,如果順著乙個分支走下去可以到達另乙個分支的話,那麼在合併兩者時,git 只會簡單地把指標右移,這種操作就是「快進」(fast-forward),像這樣:

a---b---c feature

/d---e---f master

現在你要把 feature 分支合併到 master 分支,執行下面命令:

$ git checkout master

$ git merge feature

執行完命令後,結果就會變成:

a---b---c feature

/ master

d---e---f

因為 feature 分支就在 master 的下游,所以上述操作後就會直接移動 master 的指標,最終結果是 master 和 feature 都指向了 c。那我們來看看如果執行 git merge --no-ff feature 命令的話,將會是下面的結果:

a---b---c feature

/ \

d---e---f-----------g master

由於 --no-ff 命令禁止了快進式的合併,所以在 master 上會生成乙個新的提交,此時 master 會指向 g。

其實從合併後的**來看,結果是一樣的,區別就在於 --no-ff 會讓 git 生成乙個新的提交物件。

所以你可能會問了,既然如此,為什麼要這樣?

因為通常我們把 master 作為主分支,上面存放的都是比較穩定的**,提交頻率也很低,而 feature 一般是我們的開發分支,上面會存許多零碎的提交,而快進式合併會把 feature 的提交歷史混入到 master 中,攪亂 master 的提交歷史。所以如果你根本不在意提交歷史,也不愛管 master 幹不乾淨,那麼 --no-ff 其實沒什麼用。不過,如果某一次 master 出現了問題,你需要回退到上個版本的時候,比如上例,你就會發現退乙個版本到了 b,而不是想要的 f,因為 feature 的歷史合併進了 master 分支裡。

git 上的pull request 是什麼意思?

1 git 上有常見的pull request 功能 2 pull request 的含義 解釋一 有乙個倉庫,叫repo a。你如果要往裡貢獻 首先要fork這個repo,於是在你的github賬號下有了乙個repo a2。然後你在這個a2下工作,commit,push等。然後你希望原始倉庫rep...

android中的 inflate是什麼意思

inflate 的作用就是將乙個用xml定義的布局檔案查詢出來,注意與findviewbyid 的區別,inflate是載入乙個布局檔案,而findviewbyid則是從布局檔案中查詢乙個控制項。1.獲取layoutinflater物件有三種方法 layoutinflater inflater la...

ajax中url是什麼意思 url是什麼意思?

實際上,我們在使用網際網路的過程中,其中有許多東西都是只會用,而不知道它到底是啥名字,看見了也不理解它是做什麼的,比如今天我將和大家說的url,實際上就是我們在網際網路生活中非常常見的乙個東西。web前端學習 打造全網web前端全棧資料庫 總目錄 看完學的更快,掌握的更加牢固,你值得擁有 持續更新 ...