簡體   English   中英

如何在保留原始提交歷史記錄的同時將分支重新建立為master?

[英]How to rebase a branch to master while keeping the original commit history?

我已經閱讀了http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html 這是我需要達到的目標:

1>壓扁我的開發分支並保持master分支干凈

2>通過開發分支保留提交歷史記錄,以方便檢查。

在上面的鏈接中,作者介紹了將折疊本地master分支的提交歷史記錄的工作流。 為了歸檔我的目標,我完成了以下測試工作流程。 但是,我認為有更好的方法可以執行相同的操作。

《第一步》:客房整理

git branch
#   develop
# * master

git lg2
# * 5a8b846 - Fri, 22 Jan 2016 15:16:37 -0600 (31 minutes ago) (develop)
# |           Moving license into its own file - Mark
# * 9e8bc03 - Fri, 22 Jan 2016 15:16:05 -0600 (32 minutes ago)
# |           Adding license - Mark
# * 8c7b282 - Fri, 22 Jan 2016 15:15:15 -0600 (33 minutes ago)
# |           Removing some bad formatting in the README - Mark
# * 3797e5b - Fri, 22 Jan 2016 15:14:39 -0600 (33 minutes ago) (HEAD -> master)
#             add README - Mark

<<步驟2 >>:基於development創建一個重復分支,以便在重新設置基礎后可以保留development的原始提交歷史記錄

git checkout develop
# Switched to branch 'develop'

git checkout -b developRebase
# Switched to a new branch 'developRebase'

git branch
#   develop
# * developRebase
#   master

git lg2
# * 5a8b846 - Fri, 22 Jan 2016 15:16:37 -0600 (41 minutes ago) (HEAD -> developRebase, develop)
# |           Moving license into its own file - Mark
# * 9e8bc03 - Fri, 22 Jan 2016 15:16:05 -0600 (42 minutes ago)
# |           Adding license - Mark
# * 8c7b282 - Fri, 22 Jan 2016 15:15:15 -0600 (42 minutes ago)
# |           Removing some bad formatting in the README - Mark
# * 3797e5b - Fri, 22 Jan 2016 15:14:39 -0600 (43 minutes ago) (master)
#             add README - Mark

<<步驟3 >>:將新分支重新建立為master

git rebase -i master developRebase
# [detached HEAD 04c1710] Removing some bad formatting in the README
#  Date: Fri Jan 22 15:15:15 2016 -0600
#  1 file changed, 5 insertions(+), 1 deletion(-)
# Successfully rebased and updated refs/heads/developRebase.

git lg2
# * 04c1710 - Fri, 22 Jan 2016 15:15:15 -0600 (48 minutes ago) (HEAD -> developRebase)
# |           Removing some bad formatting in the README - Mark
# | * 5a8b846 - Fri, 22 Jan 2016 15:16:37 -0600 (46 minutes ago) (develop)
# | |           Moving license into its own file - Mark
# | * 9e8bc03 - Fri, 22 Jan 2016 15:16:05 -0600 (47 minutes ago)
# | |           Adding license - Mark
# | * 8c7b282 - Fri, 22 Jan 2016 15:15:15 -0600 (48 minutes ago)
# |/            Removing some bad formatting in the README - Mark
# * 3797e5b - Fri, 22 Jan 2016 15:14:39 -0600 (48 minutes ago) (master)
#             add README - Mark

<<步驟4 >>:將新更改合並到主

git checkout master
# Switched to branch 'master'

git merge developRebase
# Updating 3797e5b..04c1710
# Fast-forward
#  README | 6 +++++-
#  1 file changed, 5 insertions(+), 1 deletion(-)

git lg2
# * 04c1710 - Fri, 22 Jan 2016 15:15:15 -0600 (49 minutes ago) (HEAD -> master, developRebase)
# |           Removing some bad formatting in the README - Mark
# | * 5a8b846 - Fri, 22 Jan 2016 15:16:37 -0600 (47 minutes ago) (develop)
# | |           Moving license into its own file - Mark
# | * 9e8bc03 - Fri, 22 Jan 2016 15:16:05 -0600 (48 minutes ago)
# | |           Adding license - Mark
# | * 8c7b282 - Fri, 22 Jan 2016 15:15:15 -0600 (49 minutes ago)
# |/            Removing some bad formatting in the README - Mark
# * 3797e5b - Fri, 22 Jan 2016 15:14:39 -0600 (49 minutes ago)
#             add README - Mark

<<步驟5 >>:刪除臨時分支

git branch -d developRebase
# Deleted branch developRebase (was 04c1710).

git lg2
# * 04c1710 - Fri, 22 Jan 2016 15:15:15 -0600 (49 minutes ago) (HEAD -> master)
# |           Removing some bad formatting in the README - Mark
# | * 5a8b846 - Fri, 22 Jan 2016 15:16:37 -0600 (48 minutes ago) (develop)
# | |           Moving license into its own file - Mark
# | * 9e8bc03 - Fri, 22 Jan 2016 15:16:05 -0600 (48 minutes ago)
# | |           Adding license - Mark
# | * 8c7b282 - Fri, 22 Jan 2016 15:15:15 -0600 (49 minutes ago)
# |/            Removing some bad formatting in the README - Mark
# * 3797e5b - Fri, 22 Jan 2016 15:14:39 -0600 (50 minutes ago)
#             add README - Mark

有人可以給我更好的方法來做同樣的事情嗎?

在步驟2中,

git checkout develop
git checkout -b developRebase

可以在一個電話中完成

# Create a new branch called 'developRebase' based on branch 'develop'
# and immediately check out that new branch:
git checkout develop -b developRebase

在第3步中,您可以縮短

git rebase -i master developRebase

git rebase -i master

因為您已經在developRebase分支developRebase (已在步驟2的最后進行了檢查),並且當前分支是要重新建立基礎的分支的默認分支。

除此以外,我認為沒有太多改進之處。 您的方法似乎很好。 (我猜對git lg2git branch的許多調用只是說明性的,並且/或者用於檢查每個步驟是否產生預期的結果。)

暫無
暫無

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

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