git如何清理克隆的代码库并重新克隆

6

我正在使用一个克隆了我的代码库的USB,以便在家和公司之间传输我的工作。但是这个USB经常出现问题并破坏了代码库。如果我尝试清理它并重新克隆,就会显示所有旧的(自己的)文件已被删除,而所有源文件都被修改了。

我尝试通过删除文件夹或重命名文件夹,甚至删除.git文件夹并重新克隆来清理克隆的代码库,但它仍然显示旧文件已被删除。有没有办法解决这个问题?


除非您直接在USB密钥上工作,否则.git文件夹是唯一重要的。工作副本并不重要,因为它不被任何东西使用。只有当git fsck告诉您存在问题时,“损坏”才会发生,但我认为这不是情况。 - Jan Hudec
2个回答

4

非常感谢。我还不是很清楚,如何将MachineB的提交更新到bundle中,再从MachineA获取它们。 - dotoree
@dotoree 我发现从头开始重新创建捆绑包比尝试更新现有捆绑包更容易。确实,您无法轻松地推送到捆绑包中。但是,一旦重新创建并保存在您的USB密钥上,它就像一个裸仓库一样运行,并且您可以像从裸仓库中那样从该捆绑包中拉取:将远程仓库(git remote add usbrepo /path/to/bundle)添加到您的机器A中,并从中拉取。 - VonC

2
你应该使用一个没有工作树的仓库,即在USB键上。裸仓库是通过git init --baregit clone --bare创建的。
你看到的“损坏”是因为git push不会更新非裸目标仓库的工作目录。如果从你正在推送的分支检出工作副本,将导致工作副本处于无效状态。
然而,除非你打算直接从USB键上工作,否则绝对没有必要在那里创建工作副本。所以不要创建它,它对任何事情都没有用。
另一方面,如果你确实想从USB键上工作,要么总是拉到它上面(当然会更新工作副本),要么安装适当的钩子来更新工作副本(有两种方法,取决于你打算如何使用它)。

我最初在USB上使用了裸露的方式。Bundle(捆绑)更加整洁方便。 - VonC

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