web-dev-qa-db-ja.com

Git:ブランチからマスターにコミットをリベースしてスカッシュする方法は?

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

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コマンドの学習に取り組んでいます。

24

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

6
knittl

手順を見ていきましょう。

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

ここで覚えておかなければならない重要なことは、最初のコミット後のすべてのコミットについて、「ピック」を示すテキストを「スカッシュ」に変更することです。これにより、すべてのコミットがマスターブランチに押し下げられます。

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

git checkout master

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

git rebase new-feature

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

52
Joe