3

私はgitを初めて使用し、この奇妙なことをしています。ブランチにチェックアウトし、いくつかの変更を加えてから、マスターにチェックアウトすると、他のブランチで行った変更がそこにあります。コンセプトを誤解しているのか、何か間違っているのかわかりません。git バージョンは msysgit の 1.7.11-preview20120710 です。

これは私が作成した一連のコマンドです。mybranch でファイル text.txt を削除すると、マスターでもファイルが削除されます。

db@DB-PC /f/Projects/Controls (master) 
$ ls
AcNumericSingleToolStripTextBox.vb  NumericSingleTextBox.vb

db@DB-PC /f/Projects/Controls (master)
$ touch text.txt

db@DB-PC /f/Projects/Controls (master)
$ git checkout -b mybranch
Switched to a new branch 'mybranch'

db@DB-PC /f/Projects/Controls (mybranch)
$ ls
AcNumericSingleToolStripTextBox.vb  NumericSingleTextBox.vb  text.txt

db@DB-PC /f/Projects/Controls (mybranch)
$ rm text.txt

db@DB-PC /f/Projects/Controls (mybranch)
$ ls
AcNumericSingleToolStripTextBox.vb  NumericSingleTextBox.vb

db@DB-PC /f/Projects/Controls (mybranch)
$ git checkout master
D       Controls/text.txt
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 5 commits.

db@DB-PC /f/Projects/Controls (master)
$ ls
AcNumericSingleToolStripTextBox.vb  NumericSingleTextBox.vb

Text.txt はもう master にありません。

デポの編集

その例のtext.txtを作成する前に問題がありました。ここで、AcNumericSingleToolStripTextBox.vb を mybranch の NumericSingleToolStripTextBox.vb に名前変更しました。マスターで変更を確認できます。

db@DB-PC /f/Projects/Controls (master)
$ ls
AcNumericSingleToolStripTextBox.vb  NumericSingleTextBox.vb

db@DB-PC /f/Projects/Controls (master)
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 7 commits.
#
nothing to commit (working directory clean)

db@DB-PC /f/Projects/Controls (master)
$ git checkout -b mybranch
Switched to a new branch 'mybranch'

db@DB-PC /f/Projects/Controls (mybranch)
$ ls
AcNumericSingleToolStripTextBox.vb  NumericSingleTextBox.vb

db@DB-PC /f/Projects/Controls (mybranch)
$ mv AcNumericSingleToolStripTextBox.vb NumericSingleToolStripTextBox.vb

db@DB-PC /f/Projects/Controls (mybranch)
$ ls
NumericSingleTextBox.vb  NumericSingleToolStripTextBox.vb

db@DB-PC /f/Projects/Controls (mybranch)
$ git checkout master
D       Controls/AcNumericSingleToolStripTextBox.vb
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 7 commits.

db@DB-PC /f/Projects/Controls (master)
$ ls
NumericSingleTextBox.vb  NumericSingleToolStripTextBox.vb 
4

1 に答える 1

4

あなたの例では、Git は text.txt を追跡するように指示されたことはありません。

マスターをチェックアウトする前に、Git に追跡するように指示する必要があります。

$ git add text.txt

text.txt がステージングされたら、ブランチへの追加をコミットします。

$ git commit -m 'Added text.txt'

mybranch で、text.txt を削除することを Git に伝えます。変更をコミットして、その変更を mybranch に関連付けます。

$ git rm text.txt
$ git commit -m 'Removed text.txt'

マスター ブランチにチェックアウトした後、Git はその状態と text.txt を復元します。

于 2012-08-05T03:36:25.320 に答える