"ステージング"状態にファイルを移動するときにGitが実際に格納しているものを理解したいと思います。gitステージング領域はどのようにファイルを格納しますか?
は、次のシーケンスを考えてみましょう:
新しいファイルが追加され、ローカルリポジトリにコミットされています
touch file.txt
git add file.txt
git commit
私は、ファイルに変更を加える:
echo text1 > file.txt
git add file.txt
私はその後、ファイルを編集する前に再度編集してください。
echo text2 > file.txt
gitのステータスは示しています。Gitはされずに FILE.TXT に新しい、2回目の更新をステージング処理することができますどのように
git commit file.txt
:
# 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
#
を、私はそのファイルをコミット言った? 「状態」の出力は、最初のリビジョンをチェックインしようとしたように見えますが、未確認の変更はチェックせずに保留します。
この場合、暗黙の段階がありますか?
私が上記のテストを実行したときに観察した動作は、ファイル( "text2")のステージングされていない内容をレポにも提出することです。この解釈は正しいのでしょうか?私はそれがファイルの "段階"バージョン( "text1")を提出すると思います。私はこれが "git checkout file.txt"を実行することによってrepotにあることを確認しています。 –
私はちょうどテストをしましたが、結果は得られませんでした。 'mkdir gittest'' cd gittest' 'git init'' echo text 1> test.txt' 'git add .'' git commit -m '初期コミット '' echo text 2> test.txt' 'git add .' 'echo text 3> test.txt'この段階では、段階的な変更(" text 2 ")とunstagedな変更(" text 3 ")があります。今、 'git checkout test.txt'と' cat test.txt'です。私は "テキスト2"を取得します。段階的な変更でローカル変更は破棄されました。 – redhotvengeance
テストシーケンスと同じ結果が得られます。しかし、 'echo text 3> test.txt'ステップの後に' git commit'を実行すると(私の元の投稿と同じように)、それは暗黙のうちに "text 3"コンテンツをステージングして、レポ分かりやすくするために、私がここで行う順序は次のとおりです: 'mkdir gittest'' cd gittest' 'git init'' echo text 1> test.txt' 'git add .'' git commit -m '最初のcommit'' 'echo text 2 > test.txt '' git add .' 'echo text 3> test.txt'' git commit -m 'new'' 'git checkout test.txt'' cat test.txt'、結果として "text 3 " –