[英]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
壓縮的內容之間),從而使將來從foo
到bar
任何合並都可以再次應用commit 2和3。
這就是rebase的選項-p
(-- --preserve-merges
)可以派上用場的地方,以便保留合並的父級。 但這可能與您要執行的操作(壁球)不兼容。
通常,盡量不要修改您剛剛拉出的公共歷史記錄(如分支foo
上的commit 2和3)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.