当我切换Git分支时,更改的文件会发生什么情况? [英] What happens to changed files when I switch Git branches?

查看:10
本文介绍了当我切换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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆