我是git的新手,我一直在尝试理解为什么git一直在显示我在另一个分支中的一个分支中所做的更改,当我运行git checkout在分支之间切换时,首先我试着不使用git add,但没有起作用。然而,我随后尝试使用git add,但没有解决这个问题。我还没有使用git commit。
这基本上就是我要做的:
$ 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“来避免这种情况吗?
发布于 2011-04-04 02:00:40
切换分支会带来未提交的更改。要么先提交,运行git checkout .
撤消它们,要么在切换之前运行git stash
。(您可以使用git stash apply
找回您的更改)
发布于 2011-04-04 03:21:10
简短的回答是:是的,你需要提交。不过,请确保在正确的分支上执行此操作!
分支是指向提交的指针。当您在检出分支的情况下提交时,分支将前进以指向该新提交。当你签出一个分支时,你是在签出它所指向的提交。(您可以将提交视为工作树的快照。)
因此,如果您有尚未提交的更改,它们将不会受到切换分支的影响。当然,如果切换分支与您的更改不兼容,git checkout
将简单地拒绝这样做。
git add
是一个用于暂存更改的命令,然后您将提交这些更改。它不会将这些更改记录到存储库的历史记录中。它只是将它们放入一个暂存区(索引);然后,git commit
使用该暂存区的内容来创建提交。
https://stackoverflow.com/questions/5531362
复制相似问题