所有git本地分支都共享同一个工作目录吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了所有git本地分支都共享同一个工作目录吗?相关的知识,希望对你有一定的参考价值。
情况:
我从master分支创建了一个新的本地分支,然后在新分支中检出时创建并保存了一个新文件。然后,我切换回master分支并运行git status。
在这一点上,我似乎有不同的结果:
- 有时文件显示为未跟踪的文件,我可以在我的工作目录文件夹中'物理地'看到该文件。
- 其他时候它没有显示为未跟踪的文件,并且我在工作目录文件夹中看不到它。
目前我无法复制2,尽管我很肯定这正在发生,所以我怀疑当发生这种情况时我正在做一些不同的事情。我想知道是什么导致这些混合结果?
注意:我正在RStudio终端中运行它,但是我认为这与正在发生的事情无关。
有时文件显示为未跟踪的文件,我可以在我的工作目录文件夹中'物理地'看到该文件。
如果在工作目录中创建新文件,则该文件是“未跟踪的”。这意味着git对它一无所知,并且不会对其进行管理。因此,当您切换分支时,未跟踪的文件仍将在那里。
例如,这里我们刚刚在名为newfeature.c
的分支上创建了名为newfeature
的文件:
$ ls
newfeature.c README
$ git status
On branch newfeature
Untracked files:
(use "git add <file>..." to include in what will be committed)
newfeature.c
nothing added to commit but untracked files present (use "git add" to track)
由于未跟踪,因此当我们切换到master
时仍将可见:
$ git co master
Switched to branch 'master'
$ ls
newfeature.c README
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
newfeature.c
nothing added to commit but untracked files present (use "git add" to track)
其他时候它没有显示为未跟踪的文件,并且我在工作目录文件夹中看不到它。
如果已将文件提交到分支,然后切换到该文件不存在的分支,它将从工作目录中删除。它仍然是您存储库的一部分,当您切换回该存储库所在的分支时,它将被替换。
如果返回上一示例的newfeature
分支,然后将newfeature.c
添加到存储库:
$ git co newfeature
Switched to branch 'newfeature'
$ git add newfeature.c
$ git commit -m "this is a new feature"
[newfeature 10525e6] this is a new feature
1 file changed, 1 insertion(+)
create mode 100644 newfeature.c
$ git status
On branch newfeature
nothing to commit, working tree clean
$ ls
newfeature.c README
然后切换到master
分支:
$ git co master
Switched to branch 'master'
$ ls
README
$ git status
On branch master
nothing to commit, working tree clean
$
我们不再看到该文件,因为它现在是newfeature
分支的一部分。由于它是存储库的一部分,因此它由git管理。
您可能还会看到另一种情况。考虑一下您在一个分支中明确地removed一个文件,但在另一个分支中仍然存在该文件的情况。您对文件进行了更改(在文件所在的分支上),但是随后尝试切换到另一个分支而不提交这些更改。在这种情况下,您将获得:
error: Your local changes to the following files would be overwritten by checkout:
testfile
Please commit your changes or stash them before you switch branches.
Aborting
以上是关于所有git本地分支都共享同一个工作目录吗?的主要内容,如果未能解决你的问题,请参考以下文章