我当前的分支是
my_branch
。尝试将更改推送到远程存储库,我得到:
$ git push
Counting objects: 544, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (465/465), done.
Writing objects: 100% (533/533), 2.04 MiB | 1.16 MiB/s, done.
Total 533 (delta 407), reused 0 (delta 0)
To [email protected]
4ed90a6..52673f3 my_branch -> my_branch
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
尝试
git pull
会导致:
$ git pull
Already up-to-date.
为什么我会收到此错误? 我怎样才能解决这个问题并成功执行
git push
?
我当前的分支是 my_branch。
那是你的问题。当您拉取时,Git 会告诉您您的分支
my_branch
是最新的,而不是 master
,它位于
origin/master
后面,使得快进合并变得不可能。为了推送 master,您需要查看
master
并拉取。这将合并正在等待的更改,并允许您推送自己的更改。
origin/master
[如果您的主分支已经配置为在拉取时变基,那么您只需按照其他答案中的描述在主分支上进行拉取,但否则:]
Git Hooks 在本地运行,因此它们可以在推送之前拦截并“预处理”您的提交。
有关 Git Hooks 的更多信息:https://githooks.com/
您应该能够在存储库的根目录中找到挂钩,此处:git checkout master
git pull --rebase origin master
git push
。
通读钩子文件可能有帮助,也可能没有帮助;它们充满了高级 git 命令和正则表达式。
使用文件资源管理器/Finder 进行查看,因为以句点为前缀的文件(.git、.gitignore)通常隐藏在 IDE 中。
当我尝试推送一个名为
.git/hooks
的分支时,我遇到了同样的错误,经过一番查看后,我发现所有其他项目分支都被命名为 feature/JIRA-123_description-text
,所以我只是在功能一词中缺少了s
。重命名分支修复了它。因此,如果拉 master 等不能解决问题,请尝试查看其他一些分支名称并匹配格式。或者检查文档以查看是否有特殊的分支命名策略,或者您是否尝试以错误的文件格式推送某些内容等。
什么为我解决了这个问题: