likes
comments
collection
share

Git 中的 working tree 是什么

作者站长头像
站长
· 阅读数 30

working tree 是什么

working tree 就是你 Git 仓库下的当前检出的(checkout)所有文件,一般包含了 HEAD 的提交(commit)内容,以及你本地还没有提交的修改。

假设我们的 Git 仓库是这样的。

Git 中的 working tree 是什么

我们当前所在的分支是 main 分支,所以 HEAD 指向 main 分支,而 main 分支最新的提交内容是第 5 次提交,所以 HEAD 的内容就是第 5 次提交的内容。所以 working tree 就是第五次提交的所有文件。让我们更详细的看看。

Git 中的 working tree 是什么

dirty working tree

假设我们在第 5 次的基础上做了修改,但是还没有提交,那么这个状态的 working tree 被称作 dirty working tree。没错,它脏了,它被动过了。

Git 中的 working tree 是什么

这个时候,如果你的某些操作导致 working tree 有改变,而且这个改变还是不可调和的,Git 就会提醒你当前的修改会被覆盖,操作失败,需要把你的修改提交掉,或者暂存之后才能继续切换过去。

问题实战

知道 working tree 是什么之后,当你遇到这些问题时,就一下明白是什么原因了。

The following untracked working tree files would be overwritten

这个就是你本地做了修改,现在你的某些操作会让当前修改的内容被覆盖,比方说

  1. checkout 到另外一个分支,但是另外分支的代码和你本地的修改有冲突
  2. pull 远程的代码,但是这些远程代码和你本地的修改有冲突(其他人改了东西 push 了上去)

等等原因,等我遇到了再更新。

可以有这些解决方案

  1. 把这些本地修改提交
  2. 如果这些修改还不适合提交,可以 git stash 暂存一下
  3. 如果这些代码不想要了,可以 git reset --hard HEAD

所有的操作都是一个目的,把 working tree 变成干净的(clean)的

你学废了吗?下课!

记得关注点赞交个朋友!不定期更新自己学到的小知识~

转载自:https://juejin.cn/post/7110510377485467662
评论
请登录