21

amend コマンドと squash コマンドの違いは何ですか? 私は両方を試してみましたが、どちらも適切な管理のために同じことをしていることがわかりました.

4

3 に答える 3

19

Git では、コミットが実際に破棄されることはめったにありません。孤立した状態になるか、detachedになります。つまり、ブランチやタグなどの参照によって指されたり、到達可能になったりすることはありません。

ただし、「修正」と「つぶし」同様の概念です。

通常、修正は、ステージングした作業を HEAD コミットと結合する単一のコミット操作です。これは、コミットを作成したばかりで、コンテンツを追加する必要があることに気付いた場合に非常に便利です。commit コマンドを思い出して、--amendオプションを使用するだけです。

スカッシングはより抽象的な用語です。修正はスカッシュの一種だと思います。コミットを結合するときはいつでも、それらを押しつぶしていると言えます。ブランチで少しの間作業していて、まとめて 1 つのコミットにする必要がある 5 つのコミットを行った場合は、対話的にリベースしてそれらをまとめてつぶすことができます。

Git にはいくつかの修正/スカッシュ方法がありますが、それらはすべて、コミット履歴を整理する (つまり、ブランチの履歴を書き直すことを意味する) という概念を中心にしています。

于 2016-01-27T17:42:45.923 に答える
15

amend最後のコミットのみを変更します。

squash複数のコミットを 1 つのコミットにマージするようなものです。

コミットが 1 つだけの場合、それらの効果は似ている場合があります。

https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History

于 2016-01-27T17:41:06.703 に答える