如果本地领先于远程,如何与远程同步?

How to synchronize with the remote if local is ahead of the remote?

我最近开始使用 Git。我已经从 GitHub 服务器中提取了一个项目,并开始在开发分支(在我正在跟踪 origin/develop 远程的本地开发分支上)进行处理。我刚刚添加了一个新文件,但还没有用 Git 跟踪它。

与此同时,另一个人恢复了 origin/develop 分支并删除了最新的 6 个提交。

如何将我的分支与远程强制同步?我想恢复我的本地分支,以便它与远程一致。我试过强制拉动但没有用:

$ git pull origin +develop
From https://***ADDRESS***
 * branch            develop    -> FETCH_HEAD
Already up to date.

$ git status
On branch develop
Your branch is ahead of 'origin/develop' by 6 commits.
  (use "git push" to publish your local commits)

你可以

$ git checkout origin/develop

在您的工作目录中获取他们的代码副本。然后,也许 cherry-pick 您的更改在最前面(此命令 cherry-pick 只是指定分支的最后一次提交)。如果您只添加一个新文件,这应该是干净的:

$ git cherry-pick develop

然后,也许指向您的本地分支以反映远程分支(这不会更改任何文件,但会将您的本地 develop 分支指针移动到您当前的状态):

$ git checkout -B develop

如果您不确定它们的作用,请阅读 Git 文档中的每个命令。

我发现有时最好的解决办法就是删除你的本地分支并再次检查它:

git branch -D <local_branch_name>

然后检查你的远程分支:

git checkout -b <branch_name> origin/<branch_name>

如果您不想丢失当前的更改,可以使用 'git stash'

保存它们