由于某种原因,我现在不能推动,而我昨天可以做到。也许我搞砸了配置或其他东西。
这就是发生的事情:
当我使用 git push origin master
https://i.stack.imgur.com/hOuSj.png
我的工作目录和远程存储库是什么样的:
https://i.stack.imgur.com/Sz17u.png
(注意:starting Oct. 2020,任何新存储库都是使用默认分支 main
而不是 master
创建的。您可以rename existing repository default branch from master
to main
。
此 2014 年答案的其余部分已更新为使用“main
")
(以下假设 github.com
本身没有关闭,正如 eri0o 在 the comments 中指出的那样:请参阅 www.githubstatus.com
确定)
如果 GitHub 存储库看到新的提交被推送到它,当你在本地工作时,我建议使用:
git pull --rebase
git push
完整的语法是:
git pull --rebase origin main
git push origin main
With Git 2.6+(2015 年 9 月),完成(一次)之后
git config --global pull.rebase true
git config --global rebase.autoStash true
一个简单的 git pull
就足够了。
(注意:使用 Git 2.27 Q2 2020,一个 merge.autostash
也可用于您的常规拉取,无需变基)
这样,您将在新更新的 origin/main
(或 origin/yourBranch
: git pull origin yourBranch
)之上重放(--rebase
部分)本地提交。
请参阅 Git Pocket Book 的 chapter 6 Pull with rebase 中的更完整示例。
我会推荐一个:
# add and commit first
#
git push -u origin main
# Or git 2.37 Q2 2022+
git config --global push.autoSetupRemote true
git push
这将在您的本地主分支与其上游分支之间建立跟踪关系。之后,该分支的任何未来推送都可以通过简单的方式完成:
git push
同样,使用 Git 2.37+ and its global option push.autoSetupRemote
,即使是第一个简单的 git push
也会做同样的事情(即:在您的本地 main
分支和它的上游分支 origin/main
之间建立跟踪关系)。
请参阅“Why do I need to explicitly push a new branch?”。
由于 OP 已经在 origin/main
之上reset and redone its commit:
git reset --mixed origin/main
git add .
git commit -m "This is a new commit for what I originally planned to be amended"
git push origin main
无需pull --rebase
。
注意:git reset --mixed origin/main
也可以写成 git reset origin/main
,因为 --mixed
选项是使用 git reset
时的默认选项。
尝试:
git push -f origin master
那应该可以解决问题。
根据@Mehdi 的评论,关于 —force pushing
的说明:上面的 Git 命令仅适用于第一次提交。如果之前已经有提交、拉取请求或分支,这将重置所有内容并将其设置为零。如果是这样,请参考@VonC 的详细答案以获得更好的解决方案。
-f
/--force
,则改用 --force-with-lease
总是更安全,如果存在会被推送破坏的下游更改,它将中止。许多日常变基情况都需要 --force-with-lease
,但几乎从不需要 --force
。
如果您刚刚使用 git init
并使用 git add .
或类似的东西添加了文件并添加了远程分支,则可能是您没有在本地提交 (git commit -m 'commit message'
) 任何内容以推送到远程...我刚遇到这个错误,那是我的问题。
我有同样的问题。我遇到了这个问题,因为我没有进行任何提交,甚至没有进行初始提交,但我仍在尝试推送。
完成 git commit -m "your msg"
后,一切正常。
重命名您的分支,然后推送,例如:
git branch -m new-name
git push -u new-name
这对我有用。
my-branch_wont_push
。一旦我将它重命名为 my_branch_wont_push
,然后 git push -u origin my_branch_wont_push
就为我工作了。
它通过几个命令行的组合对我有用:
git reset
git remote -v
git pull --rebase
git init
git add -A
git commit -m "Add your commit"
git branch -M main
git push origin main --force
当心。如果他们有自述文件,git reset
会删除他们。
git init git remote add origin https://gitlab.com/crew-chief-systems/bot git remote -v(用于检查当前存储库) git add -A(添加所有文件) git commit -m 'Added my project' git pull --rebase origin master git push origin master
我在 GitHub 帮助 (Dealing with non-fast-forward errors) 中找到了这个问题的解决方案:
您可以通过获取远程分支上所做的更改并将其与您在本地所做的更改合并来解决此问题: $ git fetch origin # 获取对在线存储库所做的更新 $ git merge origin branch # 将在线所做的更新与本地工作合并或者,您可以简单地使用 git pull 同时执行这两个命令: $ git pull origin branch # 获取在线更新并将它们与您的本地工作合并
我按照以下步骤操作,它对我有用。
rm -rf .git
git init
git add .
git commit -m"first message"
git remote add origin "LINK"
git push -u origin master
如果您使用的是 git push origin master
,请将其更改为 git push origin main
,反之亦然。
我遇到了同样的问题,并通过以下步骤修复了它。
混帐初始化混帐添加。 git commit -m 'Add your commit message' git remote add origin https://User_name@bitbucket.org/User_name/sample.git (上面的网址,https://User_name@bitbucket.org/User_name/sample.git,指您的 Bitbucket 项目 URL) git push -u origin master
暗示
使用以下命令检查您的 GitHub 帐户是否与本地 Git 存储库链接:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
我在 GitHub 中创建了一个空存储库,并将我的代码放在本地。我现在面临同样的问题,因为我遵循以下顺序,
git init
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git add .
git push -u origin master
问题是:我尝试在暂存我拥有的文件之前提交。
所以我们需要暂存文件然后提交。
这是正确的顺序。
git init
git add .
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git push -u origin master
由于我先执行了错误的顺序,所以我只执行了以下命令:
git add .
git commit -m 'Initial Commit'
git push -u origin master
因为也许它没有什么可推动的(真的,没有什么可推动的)。像这样做:
git remote add origin https://github.com/donhuvy/accounting133.git
git remote -v
git add .
git commit -m"upload"
git push --set-upstream origin master
根据您的情况更改远程存储库的 URL。您可以跳过命令 git remote -v
,仅用于检查。
请记住在推送到 GitHub 存储库之前提交您的更改。这可能会解决您的问题。
在推送之前不提交初始更改也会导致问题。
利用:
git push origin {your_local_branch}:{your_remote_branch}
如果您的本地分支和远程分支共享相同的名称,那么您可以省略您的本地分支名称。只需使用 git push {your_remote_branch}
。否则会抛出这个错误。
GitHub 将默认分支名称从 master 更改为 main。因此,如果您最近创建了 repo,请尝试推送主分支。
git push origin main
这是初学者容易犯的常见错误。
GitHub 文章Renaming the default branch from master。
在推送之前,您必须添加并提交更改或执行 git push -f origin master
。
使用 Azure DevOps 中的 Git 存储库,问题在于分支策略要求对分支的所有更改都必须通过拉取请求 (PR) 进行。尝试将更改直接推送到分支会生成错误“无法将某些引用推送到...”。
我创建了一个 PR 分支并毫无问题地推送。
如果您是第一次在 GitHub 页面上部署站点,只需运行这两个命令。
git commit -m "initial commit"
git push origin +HEAD
就我而言,Git pre-push
挂钩存在问题。
运行 git push --verbose
以查看是否有任何错误。
仔细检查目录 .git/hooks
中的 Git 挂钩,或者将它们暂时移动到另一个地方,然后查看之后是否一切正常。
由于最近“在 GitHub 中将 master 替换为 main”操作,如果您执行 git show-ref
,您可能会注意到有一个 refs/heads/main。因此,以下命令可能会从
git push heroku master
至
git push heroku main
这将解决您的问题。
这些步骤对我有用:
切换到当前分支并提取最新代码 重命名本地分支 git branch -m [new-name] 将本地分支推送到服务器 git push origin [new-name] 从服务器中删除分支 git push origin --delete [old-name]
就我而言,是我的 husky
包不允许推送。
> husky - pre-push hook failed (add --no-verify to bypass)
> husky - to debug, use 'npm run prepush'
error: failed to push some refs to 'https://username@bitbucket.org/username/my-api.git'
要强制推送,只需运行 git push origin master --no-verify
我运行 npm run prepush
以查看调试错误,这就是原因:
npm ERR! code ELOCKVERIFY
npm ERR! Errors were found in your npm-shrinkwrap.json, run npm install to fix them.
npm ERR! Invalid: lock file's loopback-utils@0.8.3 does not satisfy loopback-utils@^0.9.0
跑 npm install
并提交它,问题就解决了。
GitHub 将 master 更改为 main 的事实让我遇到了这个问题。所以从现在开始,push to origin的解决方案是:
git push -u origin main
在我的情况下,这两行解决了这个问题。
git add .
git commit -m "Changes"
实际上,我忘记添加和提交我的更改,只是第一次尝试推送它。
git init
git remote add origin https://github.com/anything/repo-name.git
git add .
git commit -m "Changes"
git branch -M main
git push -u origin main
希望这可以帮助!
最好使用 rm -rf .git/hooks
然后尝试 git push
创建一个新分支为我解决了这个问题:
git checkout -b <nameOfNewBranch>
正如预期的那样,由于前一个分支完全包含在新分支中,因此不需要合并。
git push origin feature22-fix
,但 feature22-fix
既没有退出本地也没有退出远程,所以我必须先在本地签出分支,然后推送