为什么在 git 中 pull 和 push 都抛出错误?

Why both pull and push throw error in git?

我必须将我的新更改推送到存储库。我添加了 . 并为其创建了一个提交。但是当我输入

$ git push origin master

它抛出错误并首先说 (作为提示) pull。但是当 pull 时,它再次抛出错误并谈论 fetch。老实说,我很困惑。我现在该怎么办?

是因为您遇到了一些合并冲突,还没有解决。

git checkout -f # or git stash if you want to preserve the changes
git checkout master # just to make sure some rebase is not going on
git pull origin master
# Now resolve merge conflicts, add the files and commit.
git push origin master

运行 git status 您应该会看到未隐藏的文件。您可以使用 git stash save <patch_name> 暂时保存它们,也可以根据需要提交这些更改。完成后,git pull 以获取 master 中的最新更改,因为您的提示落后于 remote/master,然后是 git push

推送您的分支不起作用,因为您的本地 master 和远程版本 有分歧 。这意味着,虽然这些分支中的每一个都共享一个共同的祖先提交,但从那时起每个分支都添加了不同的后续提交。这是一个小示例图,显示了本地和远程 master 分支的外观:

remote: ... A -- B -- C
                  \
local:  ...        M -- N

Git 正在拒绝推送,因为它不知道如何在远程 C 提交之上应用 M 提交。基地不同,所以你只是得到一个错误,告诉你拉来纠正这个。

您的预感 git pull 是正确的,但是分支状态 master|MERGING 意味着您已经在进行另一次合并。可能,您已经拉了一次,现在有需要解决的合并冲突。您可以通过 git status 找到冲突的文件。解决所有冲突,然后 git add 每个文件,然后是 git commit。完成这些步骤后,git push 应该可以工作了。

您可以先查看状态,看看是否有未暂存或冲突的文件:

git status

修复并提交后,您可以再次从 origin master 拉取。

git add -A
git commit
git pull origin master