首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >签出分支会创建本地更改。

签出分支会创建本地更改。
EN

Stack Overflow用户
提问于 2019-10-02 15:18:29
回答 1查看 110关注 0票数 1

我很难理解git在某些情况下的行为,并且无法复制(否则我会理解):

我的工作流程有时会导致这个问题,具体如下:

  1. 没有本地更改,所有内容都可以提交或重置。
  2. 查看其他一些远程分支,自我上次提取它以来,该分支发生了一些变化。
  3. 新的/编辑的文件有时会出现在git status上。

我不明白结帐如何对需要任何注意(提交或重置)的本地回购进行更改。我以为结账会让我在另一个树枝上留下一个干净的回购品。

我在这里错过了什么?

编辑1:

好吧,又发生了:

  1. 我在分支master上,没有挂起的更改,空git status
  2. git pull
  3. “新”文件出现,就像它们是由我创建的。

Applications/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认为它们是新文件

EN

回答 1

Stack Overflow用户

发布于 2019-10-03 11:20:22

最可能的原因是,git resetgit checkout实际上是通过设计在索引和工作目录中创建新的/编辑的文件,而不会在某些情况下移动回购头指针!

引用“专业Git”一章"Git工具.复位解密

有路 另一种运行签出的方法是使用文件路径,与重置一样,文件路径不会移动头部。它就像git重置分支文件一样,它在提交时用该文件更新索引,但它也会覆盖工作目录中的文件。

下面的快速示例演示了结帐确实做到了这一点!

代码语言:javascript
复制
$ 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.txt
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58204508

复制
相关文章

相似问题

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