如何从git仓库中填充我的空工作树?

4

我一定是漏掉了什么,因为我已经阅读了有关重置、还原等所有文档,但我无法弄清如何将我的索引内容放入工作树中。(我从其他地方复制了 .git 文件夹,只想要一个“获取最新版本”的操作)。


听起来你可能对索引的含义有所误解。 - Tyler
你所描述的功能可以通过 git checkout-index 命令实现,但恐怕这并不是你真正需要的。 - JB.
在所描述的情况下,它是 git checkout -f - dani 'SO learn value newbies'
3个回答

5
git commit -m'for now'
git checkout -f
git reset --soft HEAD~
  • 第一步会将索引更改存储在存储库DAG中。
  • 此处需要进行checkout步骤,因为你的存储库没有工作树(即它仅由.git/目录组成),所以checkout将安排工作树反映HEAD
  • 最后一步将HEAD引用指向其父项,从而有效地放弃最后一个提交。提交仍然在DAG中,并通过reflog指向,如果您想查看它,则不是您分支的时间轴的一部分。这个步骤是一个软重置,这意味着Git将上次提交的更改放回索引中,并且不会更改工作树,使其与我们提交时的最后一个提交指向的HEAD的状态不同。提交不是你的历史记录,但更改仍然存在于工作树和stage中。

好的,考虑到我现在的情况(只有 .git 文件夹而没有其他文件),那么需要使用提交/检出/软重置吗?我认为这个方法可行。我可以/你可以编辑你的回答来解释一下吗? - Benjol
好的,完成了。我还添加了一些关于每个步骤的额外细节。 - wilhelmtell
我不知道是否被@MatrixFrog和@Autocracy误解了,但你显然理解了我的意思,绿色勾选属于你,先生 :) - Benjol

2

你尝试过使用 git clone /path/to/myproject.git 吗?

或者使用 git clone /path/to/my/copied/.git


1
git checkout -f HEAD

这将导致所有文件被强制检出,覆盖Git当前认为已删除的内容。HEAD也可以是任何引用(分支、提交ID等)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接