git rebase -i
は、squash
またはfixup
によって前のものとコミットをマージすることができます。どちらのオプションも少なくとも1つのコミットがpick
-edであることが必要です。最初のコミットを使用したいが、そのコミットメッセージを破棄したい場合はどうですか?言い換えれば、最初のコミットを後続のコミットとマージさせたいのであれば、どうしたらよいですか?gitインタラクティブ・リベースでコミットを次のコミットとマージするには?
1
A
答えて
1
あなただけの(すなわち、CentOSに*咳のLinuxディストリビューション*特定の無名の更新はありません咳を除く全員に、Gitは1.7.12以降で利用可能)--root
フラグを必要としています。
はとBを退治した結果がちょうどA + B(の-コミットソートはかなりは、この単純な代数に従わないんが、それは我々の場合のために働く)であること。考えてみましょうしたがって、B + A = A + Bのため、コミット#1をコミット#2にスカッシュするか、コミット#2にコミット#2をコミットするかは関係ありません。もちろん、これは縮んだ一緒にコミットのメッセージを数えませんので、それを詳しく見てみましょう。
git rebase -i --root
を実行して、ルートコミットを含むすべてをリベースできるとします。あなたは今持っている:squash
へ
pick cb57fdd initial commit
pick 478acbd second commit
変更秒1とファイルを書き込み、エディタを終了します。 Gitは2つのコミットを押しつぶして、もう一度あなたのエディタを起動します、そして、あなたは以下を参照してください。
# This is a combination of 2 commits.
# This is the 1st commit message:
initial commit
# This is the commit message #2:
second commit
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Sat Nov 19 14:44:07 2016 -0800
#
# interactive rebase in progress; onto 45bc10c
# Last commands done (2 commands done):
# pick cb57fdd initial commit
# squash 478acbd second commit
(正確な詳細がコミット内容としてはもちろんだけでなく、あなたのGitのバージョンによって異なります)。
好きなエディタにいるので、新しいコミットメッセージを作成するのは簡単です。たとえば、最初のコミットのメッセージ全体を削除することができます。それを行い、ファイルを書き、エディタを終了すると、すべて設定されます。
0
- 最初のコミットハッシュを参照し、それを他の人を救う
$ git branch
- (たとえば、
branch-1
)支店名を参照してください(たとえば、最初のコミット)
$ git log
- は初段するチェックアウト
$ git checkout first-commit
- 変更にコミットメッセージ
$ git commit --amend -am 'new-commit-msg' --allow-empty
をコミット
- は今、すべての先物の基礎コミット
git checkout branch-1
- が
new-commit
$ git replace first-commit new-commit
- 書き換えによって
first-commit
を交換し、新しいコミットハッシュ(たとえば、新しい-commmit)戻るあなたの 'ブランチ-1' の枝に
$ git log
- を保存します交換時
$ git filter-branch -- --all
- 変更を強制的に適用します
git push -f origin HEAD
関連する問題
- 1. git - 1つのコミットとして一連のコミットをマージする
- 2. Gitでのマージとコミットの混同
- 3. Gitはマージの前にコミットします
- 4. Git:コミットを逆マージする方法は?
- 5. Git - コミット間のインタラクティブなログ/ナビゲート
- 6. Git:ブランチからマスターへのリベースとスカッシュのコミット方法は?
- 7. Git復帰コミットのマージとアンセット
- 8. マージ後のGitブランチとコミット履歴
- 9. Gitはリベース:今では非以降のコミット
- 10. Squash GITでのマージ後のブランチのコミット
- 11. Git:コミットの範囲を対話的にリベースします
- 12. 1回のコミットでSVNとGITにコミットするには?
- 13. git - マージするときに特定のコミットをスキップする
- 14. マスターの1つのマージで3つのコミットを1つのコミットにリベースできますか?
- 15. リベース後にスカッシュがコミットする
- 16. Git:プルリクエストをマージするときに複数のコミットを1回コミットするには?
- 17. gitのコミットURLをコミットする
- 18. Gitのマージまたはリベース?
- 19. コミットを以前のコミットにマージするには?
- 20. Gitはコミットごとにマージしますか?
- 21. 古いコミットをリベースすることはできますか?
- 22. Git:コミットとのマージ競合を破棄する方法
- 23. 2つのgitコミットのマージを見つけるには?
- 24. Gitリポジトリ:奇妙なマージ競合コミット
- 25. Git - マージされたブランチで新しいコミット - これらの新しいコミットをマージする方法?
- 26. マージの前にGitコミットのメッセージを修正する
- 27. gitのブランチに最新のマージをコミットする方法
- 28. gitブランチがさらにコミット/マージするのを防ぐ方法
- 29. マージ後のGit push(force)は別のブランチにコミットします
- 30. は、どのように私はコミットされていない、対話型リベースとコミットを編集するには?
これは、最初のコミットで*メッセージ*を編集する方法の1つですが、OPが要求した別のコミットと一緒にそのコミットをスクラッシュしません。 ( 'git filter-branch'を使うつもりなら、' git filter-branch'コマンドでジョブ全体を実行することができますので '-msg-filter'を使うと不要です。if [$ GIT_COMMIT = <ルートコミットID>];次にcat/tmp/newmsg;そうでなければcat; fi''など)。 – torek