25

現在のブランチからマスターへのすべてのコミットをリベースしてスカッシュしようとしています。これが私がやろうとしていることです:

git checkout -b new-feature

私が試した後、いくつかのコミットを行います:

git rebase -i master

この場合、コミットはnew-featureブランチに残ります

git checkout master
git rebase -i new-feature

それは私と編集ウィンドウに noop メッセージを表示します。

私はコマンドについて知っています:

git merge --squash new-feature

しかし、私は現在rebaseコマンドの学習に取り組んでいます。

4

2 に答える 2

55

手順を見てみましょう。

1 - 新しい機能ブランチを作成します

git checkout -b new-feature

2 - これで、新しいブランチで必要なものを追加/削除および更新できます

git add <new-file>
git commit -am "Added new file"
git rm <file-name>
git commit -am "Removed a file"
cat "add more stuff to file" >> <new-file>
git commit -am "Updated files"

3 - 次に、コミットを選択して 1 つのきれいなコミット メッセージにまとめます。

git rebase -i master

ここで覚えておく必要がある重要なことは、最初のコミット以降のすべてのコミットで、"pick" というテキストを "squash" に変更することです。これにより、すべてのコミットが master ブランチに押しつぶされます。

4 - マスター ブランチを選択する

git checkout master

5 - HEAD とマスター ブランチを new-feature がある場所に移動します。

git rebase new-feature

このビジュアル ツールですべてのコマンドを試すことができます: http://pcottle.github.io/learnGitBranching/

于 2013-08-03T13:59:57.467 に答える
7

リベースするとき、Git はコミットを別のブランチに移動しません。すべてのコミットを含むブランチを移動します。その上にリベースした後にコミットをマスターに取得したい場合はgit merge <branch tip or commit of branch>、マスターブランチをそのコミットに早送りするために使用します。

于 2013-03-31T08:20:57.787 に答える