1

我已经分叉了一个 repo(称为原始 repo upstream),因为必须进行一些清理,但我想保留johannes我使用的文件夹。

所以我继续删除了那个特定的文件夹

git rm -cached -r johannes/
git commit -m "deleted my folder so it doesn't bother you anymore."
git push upstream

我认为通过在我的推送中声明上游仓库,该文件夹应该仍然可以在我自己的 fork 中使用。然而它也在那里消失了......

  1. 删除原始 repo 上的文件而不在 fork 上删除它们的最佳方法是什么?这甚至可能吗?

  2. 如何在我的 fork 存储库中恢复已删除的文件夹?(我在本地仍然有它,但如果我再次推动它,所有的历史都会消失)

4

1 回答 1

2

为了不混淆推送,我会保留两个单独的克隆:

  • 原始回购之一
  • 叉子之一

这样,您在一个(及其关联的推送)中所做的事情不会影响另一个回购(本地和远程)

关于您的分叉,如果您只进行了一次提交记录该删除,您可以(如果您没有任何当前软木塞正在进行中):

git reset --hard @~
git push --force

(假设您在正确的分支上,并且该分支设置为推送到origin

如果您从那时起推送了一些提交,但不介意重写您的分叉历史,请在您分叉的不同本地克隆中执行此操作

  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
于 2017-08-26T08:42:31.900 回答