13

私はブランチで作業していたリポジトリを持っていて、master最後に別のブランチに追加したい 10 個ほどのコミットを追加しました。それらは、現在実験的であると考えている作業を説明しているためです (私はまだ良い Git プラクティスを学んでいます)。

masterこの考慮事項に照らして、「リリース」/「安定」コミットのみのためにクリーンで予約できるように、これらの最後の 10 個のコミットをいわば独自のブランチを形成したいと考えています。

説明するために、私が持っているものは次のとおりです。

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

XとでマークされたコミットZはすべて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」コミットを独自のブランチに移動するにはどうすればよいですか?

4

4 に答える 4

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

commit_id は、b が分岐する前の最後の X コミットの識別子です。

于 2010-12-30T13:49:20.023 に答える
6

完全を期すために、答えはここにあります-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
于 2011-08-12T20:26:48.857 に答える
2

master の名前を変更し、最後の X: で新しい master を開始するだけです。

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

于 2010-12-30T14:16:24.927 に答える