簡體   English   中英

合並分支時的git南瓜

[英]git squash when merging branches

我想知道如果您在分支之間擠壓並且從之間的遠程推/拉發生了什么情況。

DEVELOPER 1
1. $ git checkout foo
2. $ git commit -m 'changed file' file.txt
   $ git commit -m 'changed another file' file2.txt
3. $ git push

DEVELOPER 2
4. $ git checkout foo
5. $ git pull    // gets commits from 2. above
6. $ git checkout bar
7. $ git merge foo
8. $ git rebase -i HEAD~3

在1-3中-我對某些文件進行了本地更改,分別提交它們,然后推送。 在4-8中-有人拉我的提交,簽出另一個分支,合並第一個分支,然后嘗試壓縮合並中的提交。

這會弄亂歷史嗎,是“壞事”嗎?

git rebase -i HEAD~3會在bar分支中重放提交(壓縮或不壓縮),而分支foo所引用的提交則保持不變。

它是壞的,如果你的分支bar已被推(見“ git的變基開發分公司 ”),因為你需要強制推,讓其他開發人員對bar遇到了麻煩。

但這也很不好,因為它將復制提交內容(在foo分支的內容和在bar壓縮的內容之間),從而使將來從foobar任何合並都可以再次應用commit 2和3。
這就是rebase的選項-p (-- --preserve-merges )可以派上用場的地方,以便保留合並的父級。 但這可能與您要執行的操作(壁球)不兼容。

通常,盡量不要修改您剛剛拉出的公共歷史記錄(如分支foo上的commit 2和3)

暫無
暫無

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

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