在未推送提交时从 git 拉取

Pull from git while having unpushed commits

我有几个尚未推送的提交。但是存储库中有几个新的提交。我想提取新提交并推送我的提交,但我不确定执行此操作的正确方法是什么。 如果我按原样进行拉动,我认为它会尝试合并,但我不确定我的提交会变成什么样,请提出针对这种情况的解决方案。

尝试执行以下步骤:

Step1: git add .
Step2: git commit -m "message commit"
Step3: git pull
if you have some conflict, please merge code and return step 1.
Step 4: git push.

这里你有两个主要选择,你可以将远程分支合并到你的分支然后推送,或者你可以在远程上重新设置你的分支,然后快进远程分支。

选项 1:合并

git pull origin yourBranch           # does a fetch, followed by a merge
git push origin yourBranch           # push merged branch to remote

选项 2:变基

git pull --rebase origin yourBranch  # does a fetch, followed by a rebase
git push origin yourBranch           # ideally this will fast-forward the remote,
                                     # meaning all your commits will be played on top

合并会将您的提交合并为单个合并提交,该合并提交将出现在远程分支中,而变基会按顺序在远程分支中保留您的提交。

在任何一种情况下,您都不会丢失已完成的工作,尽管如果您使用合并选项,您所做的部分(或全部)提交可能不会保留在远程分支中。

git pull --rebase 通常是在这里做的最有用的事情。实际上它将:

  1. 将您的存储库回滚到未推送更改之前
  2. 从上游拉取(这不需要合并,只是快进)
  3. 尝试重新应用在步骤 1 中回滚的更改。

如果没有冲突,那么这将在没有任何问题的情况下继续进行,并且您将处于一种可以干净地推送更改而无需任何合并的状态。如果存在冲突,您将必须在变基过程中解决它们——可能需要大量工作,具体取决于冲突的大小和未推送的提交数。

您需要以任何方式git拉。 然后解决合并(如果会的话),然后进行新的提交,然后才推送到存储库。