我使用 git 来维护我的 Linux“点文件”,其中包含来自我的 /home、我的 /etc 的文件,以及我在 /boot 中手动创建的一些条目(用于 systemd-boot)。我还使用保存在 $HOME/.cache/dotfiles 中的裸 git 存储库来跟踪这些文件,它跟踪我手动git add
添加的文件。
如有必要,您可以通过以下链接查看此存储库:https://github.com/Frontear/dotfiles/tree/rewrite
在我不小心从电脑上删除了存储库文件(我删除了 $HOME/.cache/dotfiles)后,我目前遇到了问题。我通过重做了git init —bare ~/.cache/dotfiles
,然后遇到了问题。通过附加我的远程仓库后git remote add
,我无法拉动,因为它需要覆盖本地文件,这是我不想要的。我希望 git 使用当前文件,通过将其复制到本地来匹配远程的 HEAD,如果有任何更改(以某种方式)只需将它们显示为未暂存等,基本上撤消我对存储库的删除:p
我该怎么做呢?我尝试使用git fetch
后跟git symbolic-ref HEAD refs/remotes/origin/rewrite
(我遵循了另一个 stackexchange 问题的建议),但我遇到了这样的问题:这使得我的本地树没有分支,因为我坐在远程引用的头上。我想理想地将它们合并到本地分支,但我不知道如何实现它。已经阅读了各种问题,我被告知要重置 —hard (显然不是因为它会擦除+权限问题,因为 git 不知道某些文件的修饰符),clean -d -f (很确定这也会删除文件)。
我想要的是否可行,或者我需要做一些cp
事情才能将远程 HEAD 复制到自定义本地分支 HEAD 位置?我希望不会,希望有一个本地 git 解决方案来解决我所处的困境。