当我试图将我的代码推送到GitHub时,我遇到了一些问题。
Pushing to git@github.com:519ebayproject/519ebayproject.git
To git@github.com:519ebayproject/519ebayproject.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:519ebayproject/519ebayproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
我还没有在存储库中推入任何东西,那么为什么我需要拉出一些东西呢?
有些人可能会遇到这个错误,因为Git不知道您要推哪个分支。
如果您的错误消息还包括
error: failed to push some refs to 'git@github.com:jkubicek/my_proj.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. If you did not intend to push that branch, you may want to
hint: specify branches to push or set the 'push.default' configuration
hint: variable to 'current' or 'upstream' to push only the current branch.
那么你可能想要遵循Jim Kubicek的提示,将Git配置为只推送当前分支,将默认分支设置为当前分支。
git config --global push.default current
我也遇到过类似的问题,结果是我保持分支保持最新的工作流程出了问题。我正在做以下事情:
在我当地的'master'中
git fetch upstream
git merge upstream/master --ff-only
然后回到我当地的分行
git rebase master
这适用于以前的git流,但不适用于github。git rebase是导致同步问题的问题(我承认这是我不得不接受的,但没有完全理解),不幸的是,git push -f可能是最简单的选择。不好的。
我的新流程是直接使用git merge来更新分支,如下所示:
在我当地的分行
git fetch upstream
git merge upstream/master
没有快进,因为我将在本地分支中做出改变。
正如你可能知道的那样,我不是git专家,但是我被可靠地告知这个工作流可能会避免我遇到的特定问题。
这通常发生在git提交并尝试在git拉到其他人已经做了更改的分支x之前进行git推送更改时。
正常的流程如下:
步骤1:git将本地未提交的更改保存在该分支上。
步骤2:git拉origin branch_name -v来拉并合并到本地提交的分支上的更改(给这个合并一些消息,如果有的话修复冲突)。
步骤3:git隐藏弹出隐藏的更改(然后你可以在弹出的文件上提交,如果你想要,或者先推送已经提交的更改(STEP4),然后再将新的提交到文件中。)
步骤4:git推送origin branch_name -v合并后的更改。
将branch_name替换为master(用于主分支)。