[解決済み] gitでコミットをつぶすとはどういう意味ですか?
質問
gitのコミットを消すとはどういう意味ですか?Githubでコミットをつぶすにはどうしたらいいですか?
私はGitの初心者で、coala-analyzerの新人のバグに割り当てを依頼しました。バグを修正したら、今度は自分のコミットをつぶすように言われました。どうすればいいのでしょうか?
どのように解決するのですか?
Gitは、あなたの作業ディレクトリのスナップショットの高度なデータベースと考えることができます。
Gitの非常に優れた機能の一つは、コミットの履歴を書き換えることができることです。
これを行う主な理由は、そのような履歴の多くは、それを作成した開発者だけに関係するものなので、共有リポジトリに投稿する前に簡略化したり、より素晴らしいものにしたりする必要があるためです。
コミットを削除する
とは、慣用的な観点から言うと、そのコミットで導入された変更をその親コミットに移動して、2つ (あるいはそれ以上) のコミットから1つにすることです。
この作業を複数回繰り返すと
n
を1回にコミットする。
視覚的に、コミットタグのついたところから作業を開始した場合 開始 このようになります。
新しいコミットでは、青の色合いが少し濃くなっていることにお気づきでしょうか。これは意図的なものです。
Gitではスカッシュを行うには
リベース
という特殊な形式の
インタラクティブリベース
.
一連のコミットをブランチにリベースする際の簡略化
B
から始めると、それらのコミットによってもたらされたすべての変更をそのまま適用することになります。
B
元の先祖の代わりに
視覚的な手がかり
青の濃淡の違いにもご注目ください。
インタラクティブなリベースでは、コミットをどのようにリベースするかを選択することができます。 このコマンドを実行すると
git rebase -i branch
最終的に、リベースされるコミットをリストアップしたファイルができあがります。
pick ae3...
pick ef6...
pick 1e0...
pick 341...
コミットに名前を付けませんでしたが、この4つが意図しているのは 開始 から ヘッド
このリストのいいところは
編集可能
.
コミットを省略することもできますし、また
つぶす
.
最初の単語を次のように変更するだけです。
スクワッシュ
.
pick ae3...
squash ef6...
squash 1e0...
squash 341...
エディターを閉じて、マージの競合が見つからなかった場合、このような履歴が残ります。
あなたの場合、別のブランチにリベースするのではなく、以前のコミットにリベースしたいのでしょう。
最初の例のように履歴を変換するには、次のように実行する必要があります。
git rebase -i HEAD~4
を以下のように変更します。 スクワッシュ を最初のコミット以外のすべてのコミットに適用し、エディタを閉じます。
履歴の変更に関する注意事項
Gitでは、コミットが編集されることはありません。刈り込んだり、到達できないようにしたり、クローンしたりすることはできますが、変更することはできません。
リベースの際、実際には新しいコミットを作成していることになります。
古いものはもうどのrefからも到達できないので、履歴には表示されませんが、まだそこにあるのです!
これがリベースで実際に得られるものです。
すでにどこかにプッシュしてある場合は、履歴を書き換えることで実際にブランチが作成されます!
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] まだプッシュされていない Git マージを元に戻す
-
[解決済み] Gitを使って最後のXコミットをまとめる
-
[解決済み] git rebase の取り消し
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】Gitでコミットをチェリーピックするというのはどういう意味ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 現在のブランチのトラッキング情報がありません。
-
[解決済み】Git:コミットに何も追加されていないが、未追跡のファイルが存在する
-
[解決済み】以下の追跡されていないワーキングツリーファイルは、マージによって上書きされますが、私は気にしません。
-
[解決済み】ローカルに変更があるにもかかわらず、git pushが「すべて最新」と言う
-
[解決済み】Git Extensions。Win32 エラー 487: cygwinのヒープ用に領域を確保できなかった、Win32エラー0
-
[解決済み】gitの「not something we can merge」エラーの解決方法
-
[解決済み】マージが終了していません(MERGE_HEADは存在します)。
-
[解決済み] エラーです。リベースを使用してプルできません。あなたはステージングされていない変更を持っています
-
[解決済み] Gitを使って最後のXコミットをまとめる
-
[解決済み】gitはどのようにファイルを保存するのですか?