1

私はgitを初めて使用し、ブランチとマージを学んでいます。

次の操作を実行すると:

git チェックアウト -b テスト

新しいブランチが作成され、そのブランチに切り替えられます。私がいつ:

vim テストファイル

テキストを入力して保存すると、テストファイルが期待どおりに作成されます。ただし、次のコマンドを使用して別のブランチに変更すると:

git チェックアウト マスター

また

git checkout unrelatedBranch

テストファイルは、これらの他のブランチにも同じ内容で存在することがわかりました。

この動作は、分岐がどのように機能するかについての私の理解と矛盾しています。いくつかのインターネット リソースは、ここで使用したコマンドが必要なものであることを示しています。

誰かが私が間違っていること、またはこれが望ましい動作である理由を教えてもらえますか?

4

3 に答える 3

3

testfile追跡されておらず、変更はコミットされていません。

結果として、すべてのブランチにtestfile あるわけではありません。枝はありません。Gitはそれがそこにあることさえ知らないので、ブランチを切り替えるときに作業ディレクトリからそれを一掃することはできません。gitが追跡されていないファイルをいじるのは嫌なので、これは(予期しない場合でも)役立つ動作です。

行う:

git add testfile
git commit -m "Adding testfile to branch test"
git checkout master

テストファイルが消えるのがわかります。

于 2013-03-04T19:19:35.287 に答える
3

testfileはバージョン管理されていないようです。

最初に実行して、が下git statusに表示されるかどうかを確認してください。testfileUntracked files

例:

git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   testfile
no changes added to commit (use "git add" and/or "git commit -a")

testfile上記の例のようにリストされている場合はuntracked files、コマンドを使用してバージョン管理に追加する必要がありますgit add

git add testfile

最後に、を使用して変更をコミットすることを忘れないでくださいgit commit

于 2013-03-04T19:20:09.487 に答える
2

ファイルが追跡されていないことが原因である可能性があります。

やってみてください:git add testfile新しいブランチに追加します。

于 2013-03-04T19:15:27.613 に答える