我是git的新手,我有这个奇怪的事情。我结帐到一个分支,做一些更改,然后我结帐主人,我在另一个分支的变化是在那里。我不确定我是否误解了这个概念或者我做错了什么。 msysgit的git版本是1.7.11-preview20120710。
这是我做的一系列命令,我删除了mybranch中的文件text.txt,然后在master中删除了文件。
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之前我遇到了问题。现在我在mybranch中将AcNumericSingleToolStripTextBox.vb重命名为NumericSingleToolStripTextBox.vb,我可以看到master中的更改:
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
答案 0 :(得分:4)
在你的例子中,Git从未被告知跟踪text.txt。
在您结帐之前,您必须告诉Git跟踪它。
$ git add text.txt
暂停text.txt后,将添加内容提交给分支。
$ git commit -m 'Added text.txt'
在mybranch上,告诉Git你要删除text.txt。通过提交更改将该更改与mybranch相关联。
$ git rm text.txt
$ git commit -m 'Removed text.txt'
签出主分支后,Git将恢复其状态和text.txt。