我已经 fork 了一个存储库(称为原始存储库上游
),因为必须进行一些清理工作,但我想保留我使用的文件夹johannes
。
所以我跟着删除了该特定文件夹
git rm -cached -r johannes/
git commit -m "deleted my folder so it doesn't bother you anymore."
git push upstream
我认为在我的推送中声明上游存储库后,文件夹应该仍然可以在我自己的分支中使用。然而它也消失了......
删除原始存储库上的文件而不在分支上删除文件的最佳方法是什么?这可能吗?
如何恢复我的分支存储库中已删除的文件夹? (我本地仍然有它,但是如果我再次推送它,所有历史记录都会消失)
最佳答案
为了不混淆推送,我会保留两个单独的克隆:
- 原始存储库之一
- 其中一个 fork
这样,您在一个存储库(及其关联的推送)中所做的操作就不会影响另一个存储库(本地和远程存储库)
关于您的 fork ,如果您只进行了一次提交记录该删除,则可以(如果您当前没有任何正在进行的软木塞):
git reset --hard @~
git push --force
(假设您位于正确的分支,并且该分支设置为推送到 origin
)
如果您从那时起已经推送了一些提交,但不介意重写您的 fork 的历史记录,请在您的 fork 的另一个本地克隆中执行此操作
git clone https://github.com/<you>/<yourFork> yourFork2
cd yourFork2
git reset --hard <last_commit_where_folder_was_present>
git --work-tree=../yourFork add .
git commit -m "Add work since last_commit_where_folder_was_present>
git push --force
关于Git - 如何删除上游存储库中的文件,但不删除我的分支中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45885425/