10

ファイルを「ステージング」状態に移動するときに、Git が実際に何を保存しているかを理解したいと思います。

次のシーケンスを検討してください。

新しいファイルが追加され、ローカル リポジトリにコミットされます。

touch file.txt
git add file.txt
git commit

ファイルに変更を加えます。

echo text1 > file.txt
git add file.txt

次に、コミットする前に、ファイルを再度編集します。

echo text2 > file.txt

git ステータスは次を示します。

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   file.txt
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   file.txt
#

次に、ファイルをコミットします。

git commit file.txt

git は、file.txtへの新しい 2 回目の更新のステージングを、指示されずにどのように処理できますか? 「ステータス」出力は、最初のリビジョンをチェックインしようとしているかのように見えますが、ステージングされていない変更をチェックインせずに差し控えます。

この場合に実行される暗黙の段階はありますか?

4

2 に答える 2

10

Git は、コミット (ファイルのスナップショット) とラベル (ブランチなど) の 2 つと考えてください。

Git は、実際には、あなたgit addではなく、あなたのときにコミットを作成しますgit commit。したがってgit add、変更されたファイルに対して実行すると、それらの変更を含むコミットが作成され、その特定のコミットに「ステージング」ラベルが割り当てられました。

を実行する前にファイルを再度変更するgit commitと、「ステージングされたコミット」(git commitまだ実行されていない) と、追加もコミットもされていないファイルへの新しい変更が含まれます。それgit statusがあなたの両方を示すことができる方法です。

するとgit commit、実際には現在のブランチ ラベルをその特定のコミットに移動する (そして「ステージング」ラベルを削除する) ため、コミットは「ステージング」ではなく「マスター」(または現在のブランチ) としてマークされます。 .

于 2012-04-26T04:58:45.857 に答える
4

git commit <somefiles>git add <somefiles>は、 が後に続くことと同等git commitです。を実行するとgit commit、git はステージングされたすべての変更をコミットしますが、問題のファイルを最後にステージングしてから行われた編集はコミットしません。

于 2012-04-26T04:28:43.407 に答える