首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么无论我是否运行git add,当我切换分支(修改、添加、删除文件)时,git都会一直显示我的更改?

为什么无论我是否运行git add,当我切换分支(修改、添加、删除文件)时,git都会一直显示我的更改?
EN

Stack Overflow用户
提问于 2011-04-04 01:55:02
回答 2查看 47.2K关注 0票数 126

我是git的新手,我一直在尝试理解为什么git一直在显示我在另一个分支中的一个分支中所做的更改,当我运行git checkout在分支之间切换时,首先我试着不使用git add,但没有起作用。然而,我随后尝试使用git add,但没有解决这个问题。我还没有使用git commit。

这基本上就是我要做的:

代码语言:javascript
复制
$ git clone <a_repository>  
$ git branch  
* master  
$ git branch testing  
$ git checkout testing  
...edit a file, add a new one, delete...  
$ git status  
    # On branch testing  
    # Changed but not updated:  
    #   (use "git add/rm <file>..." to update what will be committed)  
    #   (use "git checkout -- <file>..." to discard changes in working directory)  
    #  
    #       deleted:    file1.txt  
    #  
    # Untracked files:  
    #   (use "git add <file>..." to include in what will be committed)  
    #  
    #       file2.txt  
no changes added to commit (use "git add" and/or "git commit -a")  
$ git branch  
  master  
* testing  
$ git checkout master  
D       file1.txt  
Switched to branch 'master'  
$ git status  
    # On branch master  
    # Changed but not updated:  
    #   (use "git add/rm <file>..." to update what will be committed)  
    #   (use "git checkout -- <file>..." to discard changes in working directory)  
    #  
    #       deleted:    file1.txt  
    #  
    # Untracked files:  
    #   (use "git add <file>..." to include in what will be committed)  
    #  
    #       file2.txt  
no changes added to commit (use "git add" and/or "git commit -a")  

我认为,当使用分支时,无论你在一个分支中做什么,它对所有其他分支都是不可见的。这不就是创建分支的原因吗?

我尝试使用"git add“,但更改在两个分支中都可见。在分支之间切换之前,我需要运行"git commit“来避免这种情况吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-04 02:00:40

切换分支会带来未提交的更改。要么先提交,运行git checkout .撤消它们,要么在切换之前运行git stash。(您可以使用git stash apply找回您的更改)

票数 155
EN

Stack Overflow用户

发布于 2011-04-04 03:21:10

简短的回答是:是的,你需要提交。不过,请确保在正确的分支上执行此操作!

分支是指向提交的指针。当您在检出分支的情况下提交时,分支将前进以指向该新提交。当你签出一个分支时,你是在签出它所指向的提交。(您可以将提交视为工作树的快照。)

因此,如果您有尚未提交的更改,它们将不会受到切换分支的影响。当然,如果切换分支与您的更改不兼容,git checkout将简单地拒绝这样做。

git add是一个用于暂存更改的命令,然后您将提交这些更改。它不会将这些更改记录到存储库的历史记录中。它只是将它们放入一个暂存区(索引);然后,git commit使用该暂存区的内容来创建提交。

票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5531362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档