在没有提交提交的情况下从git中拉出

时间:2016-07-29 07:11:16

标签: git git-push git-pull

我有几个提交尚未推送。但是在存储库中有几个新的提交。我想提取新的提交并推送我的提交,但我不确定这样做的正确方法是什么。 如果我按照我的想法进行合并,我认为它会尝试合并,而且我不确定我的提交内容是什么,请为这种情况提出解决方案。

4 个答案:

答案 0 :(得分:5)

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

选项1:合并

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

选项2:rebase

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

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

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

答案 1 :(得分:4)

git pull --rebase通常是最有用的事情。实际上它会:

  1. 在未按下的更改之前将存储库回滚到
  2. 从上游拉(这不需要合并,只需快进)
  3. 尝试重新应用在步骤1中回滚的更改。
  4. 如果没有冲突,那么这将在没有任何问题的情况下继续进行,并且您将处于可以干净地推送您的更改而无需任何合并的状态。如果存在冲突,则必须在rebase过程中解决它们 - 可能需要做很多工作,具体取决于冲突的大小和未提交的提交数量。

答案 2 :(得分:1)

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

答案 3 :(得分:-1)

尝试执行以下步骤:

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.