現在のブランチからマスターへのすべてのコミットをリベースしてスカッシュしようとしています。これが私がやろうとしていることです:
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
コマンドの学習に取り組んでいます。
リベースするとき、Gitはコミットを別のブランチに移動しません。すべてのコミットを含むブランチを移動します。上にリベースした後にコミットをマスターに取得したい場合は、git merge <branch tip or commit of branch>
を使用してマスターブランチをそのコミットに早送りします。
手順を見ていきましょう。
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/