3

我是 git 新手,我遇到了这个奇怪的事情。我结帐到一个分支,做一些更改,然后我结帐到 master,我在另一个分支中所做的更改就在那里。我不确定我是否误解了这个概念或者我做错了什么。git 版本是来自 msysgit 的 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 
4

1 回答 1

4

在您的示例中,从未告诉 Git 跟踪 text.txt。

在你签出 master 之前,你必须告诉 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'

签出到 master 分支后,Git 将恢复其状态和 text.txt。

于 2012-08-05T03:36:25.320 回答