我很难理解git在某些情况下的行为,并且无法复制(否则我会理解):
我的工作流程有时会导致这个问题,具体如下:
git status上。我不明白结帐如何对需要任何注意(提交或重置)的本地回购进行更改。我以为结账会让我在另一个树枝上留下一个干净的回购品。
我在这里错过了什么?
编辑1:
好吧,又发生了:
master上,没有挂起的更改,空git statusgit pullApplications/Unity/Assets/Project/GUI/GuiAsses/occlusion/DescriptionImage6.png Applications/Unity/Assets/Project/GUI/GuiAsses/occlusion/DescriptionImage6.png.meta Applications/Unity/Assets/Project/GUI/GuiAsses/occlusion/DescriptionImage7.png Applications/Unity/Assets/Project/GUI/GuiAsses/occlusion/DescriptionImage7.png.meta
这些文件在上一次提交时就存在了,它们是通过拉动在我的计算机上得到的。
我不明白为什么git认为它们是新文件
发布于 2019-10-03 11:20:22
最可能的原因是,git reset和git checkout实际上是通过设计在索引和工作目录中创建新的/编辑的文件,而不会在某些情况下移动回购头指针!
引用“专业Git”一章"Git工具.复位解密“
有路 另一种运行签出的方法是使用文件路径,与重置一样,文件路径不会移动头部。它就像git重置分支文件一样,它在提交时用该文件更新索引,但它也会覆盖工作目录中的文件。
下面的快速示例演示了结帐确实做到了这一点!
$ git init
Initialized empty Git repository in
$ echo "V1" >> test.txt
$ git add .
$ git commit -m "Initial commit"
[master (root-commit) cc4a3eb] Initial commit
1 file changed, 1 insertion(+)
create mode 100644 test.txt
$ echo "V2" >> test.txt
$ git add .
$ git ci -m "Test changes"
[master 92713e7] Test changes
1 file changed, 1 insertion(+)
$ git status
On branch master
nothing to commit, working tree clean
$ git checkout HEAD^ .
Updated 1 path from deaab15
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: test.txthttps://stackoverflow.com/questions/58204508
复制相似问题