簡體   English   中英

GIT合並--no-ff

[英]GIT merge --no-ff

在這篇文章中,我將邀請git方面的專家嘗試解釋git merge --no-ff如何幫助我們。 我在這里閱讀了http://nvie.com/posts/a-successful-git-branching-model/ (我個人認為這是一篇非常好的文章),其中git merge --no-ff:“這樣可以避免丟失信息關於特征分支的歷史存在,並將所有一起添加特征的提交分組在一起。” 因此,我發現它非常有用,並進行了一些實驗。

問題是關於如何從git日志信息中知道哪些提交屬於每個功能。 為此,我做了下一個實驗。 假設兩個用戶正在一個軟件項目中開發兩個不同且獨立的功能(以避免合並沖突)。 從最后一個穩定版本開始,我們將按以下步驟進行:

git init touch AAA.txt git add AAA.txt git commit -m "My stable software version" //this will simulate our project repository

因此,從這點開始,兩個用戶(名稱為Alice和Bob)創建了兩個不同的分支,並開始使用這些功能:

git branch feature1_Alice git branch feature2_Bob現在,Alice和Bob開始同時工作和提交。 我們可以將他模擬為:

git checkout feature1_Alice touch f1_A1.txt git add f1_A2.txt git commit -m "Solving little bug on feature 1" Bob在Alice執行此操作后,在時間軸上做了兩次commit:

git checkout feature2_Bob touch f2_B1.txt git add f2_B1.txt git commit -m "Starting feature 2" touch f2_B2.txt git add f2_B2.txt git commit -m "feature 2: implementing new functionality"然后愛麗絲完成功能:

git checkout feature1_Alice touch f2_A3.txt git add f2_A3.txt git commit -m "Feature 1 finished"

然后Bob完成了feature2:

git checkout feature2_Bob touch f1_A3.txt git add f1_A3.txt git commit -m "Feature 2 finished"

現在,我們將新功能合並到主分支中:

git checkout master git log輸出:

提交c58dd35054f83c089292d090781438f37feeffa3

作者:胡安

日期:2017年4月25日星期二10:30:01 +0200

My stable software version

git merge --no-ff feature1_Alice //We put a message on the created commit

現在git log輸出:

提交50c5d1570fe0c047f72200bd57ef6cef6fa9077e合並:c58dd35 c136a23作者:juan日期:2017年4月25日星期二10:48:12 +0200

Merging feature 1 to main
Merge branch 'feature1_Alice'

提交c136a23c49c546e5f48d9d0634e9bc51d67370cd作者:juan日期:Tue Apr 25 10:41:49 2017 +0200

Feature 1 finished

提交c9dbb1b49444555fca528f562d3a38143fd521e9作者:juan日期:2017年4月25日星期二10:35:24 +0200

Solving little buf on feature 1

提交58afad2b46565e614a99d94d1e1aa1c8520f9f2b作者:juan日期:Tue Apr 25 10:35:01 2017 +0200

Starting feature 1

提交c58dd35054f83c089292d090781438f37feeffa3作者:juan日期:Tue Apr 25 10:30:01 2017 +0200

My stable software version

最后合並功能2:

git merge --no-ff feature2_Bob git log commit 3f27f78fefb30080ace629e561a242a4f8dbca56合並:50c5d15 2eee0c1作者:juan日期:Tue Apr 25 10:54:20 2017 +0200

Merging feature 2 to master
Merge branch 'feature2_Bob'

提交50c5d1570fe0c047f72200bd57ef6cef6fa9077e合並:c58dd35 c136a23作者:juan日期:2017年4月25日星期二10:48:12 +0200

Merging feature 1 to main
Merge branch 'feature1_Alice'

提交2eee0c1bb732443ae7d6f4893d651abfd558d55a作者:juan日期:Tue Apr 25 10:43:14 2017 +0200

Feature 2 finished

提交c136a23c49c546e5f48d9d0634e9bc51d67370cd作者:juan日期:Tue Apr 25 10:41:49 2017 +0200

Feature 1 finished

提交cd3bee2906e02df22866ba710891d21eaebb8013作者:juan日期:2017年4月25日星期二10:40:12 +0200

feature 2: implementing new functionality

提交c6fdf092b2645f7d4088f9f439e820a9a820b891作者:juan日期:Tue Apr 25 10:37:39 2017 +0200

Starting feature 2

提交c9dbb1b49444555fca528f562d3a38143fd521e9作者:juan日期:2017年4月25日星期二10:35:24 +0200

Solving little buf on feature 1

提交58afad2b46565e614a99d94d1e1aa1c8520f9f2b作者:juan日期:Tue Apr 25 10:35:01 2017 +0200

Starting feature 1

提交c58dd35054f83c089292d090781438f37feeffa3作者:juan日期:Tue Apr 25 10:30:01 2017 +0200

My stable software version

誰能打電話給我,我如何從提交歷史中看到並合並影響每個功能的提交? 當我們及時插入來自不同功能(或功能和母版)的替代提交時,我看不到該網絡中的優勢。

使用--no-ff的唯一區別是,合並提交具有有關已合並哪些提交的信息,但是這對於跟蹤提交歷史記錄毫無用處。

提前致謝。

您可以使用git log --graph --oneline --decorate --all來查看存儲庫圖,也可以只調用gitk來可視化您的歷史記錄。 簡單git log提供的線性文本版本不會顯示您要查找的信息。

在查看圖形表示形式時,合並提交可確保您看到兩個分支在何處相遇,而快速向前合並將導致不同的分支顯示為線性,盡管它們是並行開發的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM