当我切换Git分支时,更改的文件会发生什么情况? [英] What happens to changed files when I switch Git branches?
本文介绍了当我切换Git分支时,更改的文件会发生什么情况?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
尽管我使用Git已经有一段时间了,但我仍然不能理解它的分支机制。具体来说,请考虑一个新项目foo
,其中包含由以下简单命令初始化的单个文件bar.txt
:
$ mkdir foo
$ cd foo
$ git init
$ touch bar.txt
$ git add .
$ git commit -m 'Initial commit'
现在当我创建分支foobar
时,git branch
显示我仍在master
:
$ git branch foobar
$ git branch
foobar
* master
但当我更改文件bar.txt
:
$ echo quux >> quux.txt
$ git status
modified: quux.txt
然后,当我签出另一个分支时,我可以看到文件bar.txt
也在那里被修改:
$ git checkout foobar
$ git status
modified: quux.txt
我已经知道,此行为允许我选择要将更改提交到哪个分支,但我觉得这很烦人。我怀疑我无法理解Git分支背后的基本思想。有没有办法告诉Git,当我对master
进行更改时,我不希望它们在我可能选择签出的任何其他分支中可见?
推荐答案
在提交之前,您在工作目录中所做的更改不属于任何分支。因此,您的错误之处在于认为,当您签出一个分支,然后修改一个文件时,您已经对"该分支"进行了修改。您还没有这样做,您已经修改了工作目录。
因此,您有一个基于一个分支的脏工作目录,而您签出了另一个分支--未提交的更改保留在工作目录中,否则它们不会保存在任何地方。您将无法再次签出第一个分支并重新显示本地更改。
您可能希望在切换分支之前执行git stash
操作。这会将本地更改保存到临时分支,您可以稍后使用git stash pop
返回该分支。
这篇关于当我切换Git分支时,更改的文件会发生什么情况?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文