簡體   English   中英

如何將當前在分支上的一些最后的Git提交移動到另一個分支上?

[英]How to move some last Git commits currently on a branch, onto another branch?

我有一個存儲庫,在那里我一直在master分支上工作,最近又添加了約10項提交,現在希望將它們提交到另一個分支上,因為它們描述了我現在認為是實驗性的工作(我仍在學習Git的良好實踐)。

考慮到這一點,我現在想將這最后10個提交從自己的分支中拿出來,這樣我就可以將master提交清理並保留給“發布” /“穩定”提交。

為了說明,我有:

        b--b (feature B)
       /       
X--X--X--Z--Z--Z--Z--Z--Z (master)
    \
     a--a--a (feature A)

您可以看到標有XZ提交都在master分支上,而我想要的是標有Z提交(現在被認為是實驗性的“功能Z”工作)位於它們自己的分支上,而master以最右邊的X結尾。 為了說明,所需的圖形:

        b--b (feature B)
       /       
X--X--X (master)
    \  \
     \  Z--Z--Z--Z--Z--Z (feature Z - the new branch I want)
      \
       a--a--a (feature A)

這樣,我就可以將我的master保留用於發布和穩定的提交,並能夠根據需要合並到A,B和Z功能中。

那么,如何將“ Z”提交移動到自己的分支上?

git checkout master
git branch feature-Z
git reset <commit_id>

其中commit_id是b分支之前最后X次提交的標識符。

為了完整起見,答案在這里-http://git-scm.com/docs/git-reset-搜索文本“撤消提交,使其成為主題分支”-該示例顯示了使最后3次提交成為分支並將master重置為這3個提交之前的提交:

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 3 commits.
#
nothing to commit (working directory clean)
$ git branch topic/wip
$ git reset --hard HEAD~3
$ git checkout topic/wip
Switched to branch topic/wip

只需重命名master並在最后一個X處啟動一個新master:

git checkout master; git branch -m feature; git checkout -b master HEAD~6

在所需的新分支中創建和簽出
強制主分支N提交回來(在您的情況下為10)

git checkout -b feature-z
git branch -f master HEAD~10

暫無
暫無

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

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