Git Pull不覆盖提交的文件



我对一些文件进行了更改,并将更改推送到远程存储库。另一个人从回购中提取,并决定删除/修改我刚刚推送的一些文件,然后他推送。

此远程存储库设置了安全性,因此您只能拉(或使用特殊命令向其推送)。我需要拉得到别人的变化,但不希望他的覆盖我自己的(这已经提交)。就像我说的,我不能做还原,我只能拉。

我需要一种方法,这样我就可以拉(这将覆盖一些更改,但应用其他关键更新),然后只撤消上次拉对我最初推送的文件所做的更改。理想情况下,通过"撤消"更改,我最初提交的文件现在是未提交的;例如,如果我输入"git status",我将看到与我提交和推送之前相同的列表。

尝试如下:

  1. 签出你的提交和你最初添加的文件
  2. Git reset HEAD~1 #这将把文件从你的提交移到staging
  3. git stash #这将存储您当前未提交的更改。
  4. git pull—rebase
  5. git stash pop #从原始提交中恢复所存储的更改

在此之后可能会有冲突,您必须解决。您还可以在步骤2之后和步骤3之前签出不需要的文件,以不保存它们。

我不太确定你想做什么。但在任何情况下,你都可以简单地为你的版本创建一个分支,像这样:

git checkout -b mywork master

默认使用master分支,所以你可以省略master部分。但是如果你在一个不同的分支上工作,用你想要作为新分支基础的任何分支替换master。

未提交的更改也会显示。

然后拉入他的更改。如果有必要的话,做一些合并需要做的事情来掌握。