2

我的主 git 分支中有一个名为“Readme”的文件。该文件具有以下文本:

这是主分支

我创建了一个名为“justatest”的主题分支,并在其中编辑了“Readme”文件。我编辑了这个文件(同时签出了 justatest 分支)说以下内容:

这是主分支 此文本只能在“justatest”分支中看到

当我在“justatest”主题分支中时,它显示正确,但是当我切换到主分支时,文件内容如下:

这是主分支 此文本只能在“justatest”分支中看到

如您所见,即使我签出了一个主题分支,它也会在主分支中进行更改!为什么???

最糟糕的是,如果我不喜欢我在主题分支中所做的更改并将其删除,那么更改将保留在主分支中!这哪里安全???

4

2 回答 2

1

如果您在主题分支中提交更改,那么您可以签出主分支并发现您的更改仅在主题分支中可见,直到您将它们合并回主分支。

例子:

[matthewh@folio temp]$ git branch
* master
[matthewh@folio temp]$ cat Readme 
This is the master branch
[matthewh@folio temp]$ git checkout -b justatest
Switched to a new branch 'justatest'
[matthewh@folio temp]$ echo "This text should only be seen in the justatest branch" >> Readme 
[matthewh@folio temp]$ git commit -am "Modified readme"
[justatest 1afc6c7] Modified readme
 1 files changed, 1 insertions(+), 0 deletions(-)
[matthewh@folio temp]$ git branch
* justatest
  master
[matthewh@folio temp]$ cat Readme 
This is the master branch
This text should only be seen in the justatest branch
[matthewh@folio temp]$ git checkout master
Switched to branch 'master'
[matthewh@folio temp]$ cat Readme 
This is the master branch
[matthewh@folio temp]$ git merge justatest
Updating 88aa000..1afc6c7
Fast-forward
 Readme |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
[matthewh@folio temp]$ cat Readme 
This is the master branch
This text should only be seen in the justatest branch
于 2012-06-30T01:35:32.137 回答
1

当您进行编辑时,它们不属于任何分支。这些更改仅在您的工作文件夹中。允许在您有一些尚未提交的未完成工作时更改分支 - 只要它们不与文件的提交版本冲突。

在您的情况下,它甚至更简单。由于您刚刚创建了分支,因此 master 和这个新分支都指向同一个提交。添加并提交更改后,切换分支将具有您期望的行为。

git add -A
git commit -m "my changes"
git checkout master

你的文件将是你分支之前的样子。

您可以通过反复执行在您签出的最后两个分支之间翻转

git checkout -

这也是如此cd

查看http://progit.org/book以获取有关工作目录和索引的信息。

于 2012-06-30T01:42:47.300 回答