我一直在尝试使用 gitlab CE 设置存储库,作为设置的一部分创建了一个存储库并一直在使用它,当我遇到时,在我对文件进行一些修改并使用签出切换分支后,我即使我有未暂存的文件,也可以进行切换,这与我以前的经历不同,在我进行提交或存储之前,我不允许签出。
这种体验超越了无缝切换分支的目的,而不必担心意外的渗透。
下面突出显示了这些步骤。
somasundaram.s@user /d/projects/repositories/newrepo (master)
$ ls -ltr
total 1
-rw-r--r-- 1 somasundaram.s 1049089 13 Apr 4 16:28 README
-rw-r--r-- 1 somasundaram.s 1049089 0 Apr 4 16:31 hi
somasundaram.s@user /d/projects/repositories/newrepo (master)
$ git branch new-branch
somasundaram.s@user /d/projects/repositories/newrepo (master)
$ git checkout new-branch
Switched to branch 'new-branch'
somasundaram.s@user /d/projects/repositories/newrepo (new-branch)
$ touch newfile
somasundaram.s@user /d/projects/repositories/newrepo (new-branch)
$ ls -ltr
total 1
-rw-r--r-- 1 somasundaram.s 1049089 13 Apr 4 16:28 README
-rw-r--r-- 1 somasundaram.s 1049089 0 Apr 4 16:31 hi
-rw-r--r-- 1 somasundaram.s 1049089 0 Apr 4 16:37 newfile
somasundaram.s@user /d/projects/repositories/newrepo (new-branch)
$ git checkout master
Switched to branch 'master'
somasundaram.s@user /d/projects/repositories/newrepo (master)
$ ls -ltr
total 1
-rw-r--r-- 1 somasundaram.s 1049089 13 Apr 4 16:28 README
-rw-r--r-- 1 somasundaram.s 1049089 0 Apr 4 16:31 hi
-rw-r--r-- 1 somasundaram.s 1049089 0 Apr 4 16:37 newfile
git checkout 将未暂存的文件带到新分支
这不是一个错误。
这就是 git 的行为方式.
![enter image description here](https://i.stack.imgur.com/gmhK6.png)
在下图中您可以看到3 states
.
Git has three main states that your files can reside in:
它们都在您的分支机构之间共享。但是当你结账分支时你改变了HEAD所以你最终会得到staging area && working directory
即使您签出分支,也可以在存储库之间共享。
How to checkout different branch with clean working directory and stage area?
如果您希望签出干净的分支,而工作目录和暂存中没有任何“剩余”,您可以创建一个新的worktree
这将导致共享视图您的存储库(所有内容都是共享的),但带有不同的工作目录和暂存区。
来自 git v2.5
git worktree add <new_path>
现在在任何分支机构中做任何您想做的事情。它将创建 2 个彼此分离的独立工作文件夹,同时指向同一个存储库。
使用 wortree 你不需要做任何事情clear
or reset
以删除所有已上演和未跟踪的内容。
这是如何做到这一点的演示:
![enter image description here](https://i.stack.imgur.com/gXv1I.png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)