我有一個master分支,並且爲我的日常工作簽出了一個名爲test_branch的新分支。我在test_branch中做了很多冗餘的「git commit」,所以在test_branch中有很多歷史提交日誌。當我將test_branch合併到master時,不希望將這些歷史記錄合併到主文件中。如何才能合併僅源文件?如何在使用「git merge」時僅合併沒有提交日誌的更改?
回答
你這樣做:
git checkout master
git merge --squash test_branch
這給你一個大師新版本,並承諾當這會不會是一個合併。
之間的更改我想要什麼,謝謝 – ctxrr 2015-01-21 07:08:59
請理解這樣做的含義以及在執行此操作之前兩個案例中項目變更的歷史記錄。 – 2015-01-21 07:41:24
請注意,這與在存儲庫根目錄中執行'git checkout master'和'git checkout test_branch - .'完全相同。 – 2015-01-21 10:47:48
git merge
命令合併提交。它不合並文件。 test_branch
上的開發路徑將成爲您項目歷史的一部分。如果您對此不滿意,您應該在該分支上執行rebase -i
並編輯以清理歷史記錄,以便看起來像您想要的,然後合併分支。如果您不關心歷史記錄,可以使用git merge --squash
將test_branch
上的所有提交壓縮爲對主文件的單個提交。然而,這將破壞細密的歷史,並不會真正爲你帶來任何好處。
許多版本控制系統認爲一個分支是與主開發線完全分離的東西,而且主分支在合併之後唯一可以看到的就是合併本身。使用git,由於其分支的輕量級特性,分支合併到您的主分支的發展歷史也將可見。
你想「擠壓」或「重新綁定」你的提交。你可以閱讀關於如何做到這一點的細節:Squash my last X commits together using Git
- 1. 合併git分支時,如何避免提交日誌分支?
- 2. 如何提交良好的更改並使用git保持簡單日誌
- 3. 合併提交沒有更改ID?
- 4. 如何刪除git日誌中僅有的特定提交
- 5. 在顯示git日誌時忽略合併提交
- 6. Git的合併與--squash同時保持每個日誌提交
- 7. 沒有自動提交的git合併
- 8. EGit:沒有提交合並
- 9. 在解析git merge confilct時合併兩個更改
- 10. Git合併沒有歷史提交
- 11. git的日誌文件名--follow沒有顯示提交更改的文件
- 12. git看提交id的提交日誌
- 13. 爲什麼git在合併後失去了日誌提交?
- 14. 如何合併僅包含在git分支中的提交
- 15. 如何讓Jenkins git僅在有變更時才提交?
- 16. git commit --amend - 當沒有更改時,提交散列被更改
- 17. github - 提交沒有將我的更改合併
- 18. Rebase/Replay僅合併提交
- 19. 提交在公關沒有在git日誌中看到
- 20. 合併未提交的更改
- 21. Git恢復提交併添加更改,即使在提交更多提交後
- 22. PHP獲取特定提交的Git更改日誌
- 23. 在合併其他更改提交
- 24. 如何合併git日誌歷史記錄中的不同提交
- 25. Git:如何合併上游更改而不會導致合併提交?
- 26. Git:恢復我修改後的更改合併提交
- 27. 如何在沒有特定提交的情況下搜索git日誌
- 28. 過濾git日誌以僅顯示提交提示
- 29. Git在合併之前合併提交
- 30. git空白提交的解決方法:僅提交'REAL'更改
你是什麼意思的「提交日誌」? – 2015-01-21 06:39:23
@ Noufal Ibrahim我的意思是我在test_branch中做了很多「git commit」,其中很多都沒用,所以我不希望在我的主分支中顯示此提交歷史記錄。我只是想合併源代碼 – ctxrr 2015-01-21 06:41:53