主和主题分支都有变化

时间:2012-06-30 01:27:25

标签: git branching-and-merging

我的主git分支中有一个名为“自述文件”的文件。该文件包含以下文本:

  

这是主分支

我创建了一个名为'justatest'的主题分支,并编辑了其中的'Readme'文件。我编辑了这个文件(当最新的分支被检出时)说出以下内容:

  

这是主分支   这个文本只能在'justatest'分支中看到

当我在'justatest'主题分支时,它显示正确,但当我切换到主分支时,这是文件所说的内容:

  

这是主分支   这个文本只能在'justatest'分支中看到

正如您所看到的,即使我检出了主题分支,它也会在主分支中进行更改! WHY ???

最糟糕的是,如果我不喜欢我在主题分支中所做的更改并删除它,则更改主分支中的REMAIN !!那里的安全在哪里???

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

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

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

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

您可以通过反复执行

在已检出的最后两个分支之间进行切换
git checkout -

cd也是如此。

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