Git 推送失败(合并返回“已更新”)

Git 推送失败(合并返回“已更新”),git,github,Git,Github,我想获取在develope分支中所做的更改并将其合并到我的分支OneUser 我正在做: git checkout OneUser git fetch origin develop ... Unpacking objects: 100% (21/21), done. From https://github.com/......... * branch develop -> FETCH_HEAD e2f......... d36 develop

我想获取在
develope
分支中所做的更改并将其合并到我的分支
OneUser

我正在做:

git checkout OneUser
git fetch origin develop  

...
Unpacking objects: 100% (21/21), done.
From https://github.com/.........
 * branch            develop    -> FETCH_HEAD
   e2f......... d36  develop    -> origin/develop

git merge origin develop

Already up-to-date.
git提交-a

(我知道已经做了一些更改,所以通常会给我一些冲突?或者更改了什么?)

然后,如果我试图推动我的变化发展:

git checkout OneUser
git push -u origin develop

 ! [rejected]        develop -> develop (non-fast-forward)
error: failed to push some refs to 'https://github.com/.../.git
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes
hint: (e.g. 'git pull ...') before pushing again.
============工作流程========================

git checkout -b OneUser develop
git branch --set-upstream-to=origin/develop

//fetch from develop branch and merge to OneUser
git checkout OneUser
git fetch origin develop
git merge origin/develop

If you have any conflicts ,solve , add files and commit.

//work on branch
git add “files”
git commit -m “message”

//push to develop
git push origin OneUser:develop

我相信您正在寻找“git pull--再基础”。这将集成远程更改,允许您推送

我相信您正在寻找“git-pull-rebase”。这应该集成远程更改,允许您推动如果我理解正确,您希望将本地分支
OneUser
推送到远程分支
development

在这种情况下,您将不得不告诉git

git push origin OneUser:develop
这会告诉git将您的分支(OneUser)推送到源存储库,以在远程环境中开发分支

您面对错误的原因:

git checkout OneUser
git push -u origin develop

 ! [rejected]        develop -> develop (non-fast-forward)
使用
git push-u origin develope
,您指示git: 将名为“开发”的本地分支推送到与名称匹配的远程分支。由于您已合并到
OneUser
分支,但未更新开发分支的本地副本,git无法推送。您也可以在错误消息中看到它:

 ! [rejected]        develop -> develop (non-fast-forward)
更新#1 似乎在您的场景中,您总是希望将您的
OneUser
分支与
develope
同步,在这种情况下,您可以通过发出命令(仅1次)明确要求git这样处理

您可以通过以下方式检查正在跟踪的远程分支:

git status -sb
然后,只需推送您的“本地”分支,git就会知道推送到哪里

git push origin OneUser

如果我理解正确,您希望将本地分支机构
OneUser
推送到远程分支机构
develope

在这种情况下,您将不得不告诉git

git push origin OneUser:develop
这会告诉git将您的分支(OneUser)推送到源存储库,以在远程环境中开发分支

您面对错误的原因:

git checkout OneUser
git push -u origin develop

 ! [rejected]        develop -> develop (non-fast-forward)
使用
git push-u origin develope
,您指示git: 将名为“开发”的本地分支推送到与名称匹配的远程分支。由于您已合并到
OneUser
分支,但未更新开发分支的本地副本,git无法推送。您也可以在错误消息中看到它:

 ! [rejected]        develop -> develop (non-fast-forward)
更新#1 似乎在您的场景中,您总是希望将您的
OneUser
分支与
develope
同步,在这种情况下,您可以通过发出命令(仅1次)明确要求git这样处理

您可以通过以下方式检查正在跟踪的远程分支:

git status -sb
然后,只需推送您的“本地”分支,git就会知道推送到哪里

git push origin OneUser


好的,它所做的就是获取最新的提交,并将所有新的提交放在它们之上,这样它们就可以简单地作为新的提交推送。听起来正是你要找的。我的意思是,我确信合并也会起作用,但在这种情况下,重定基址通常更有意义:我解决了冲突(编辑文件、添加、提交),当尝试推送时,再次出现相同的错误!我还尝试了
git-pull--rebase
,但它给了我
错误:无法使用rebase进行拉取:您有未老化的更改。
:我做了rebase,但它弄乱了我更改的所有文件!我重新设置了它,现在我的文件正常了,但仍然无法推送。从错误中,您似乎有进一步的更改,但尚未执行和提交。这是故意的,还是也应该推动他们?如果它们应该被包括在内,那么在运行“拉-再基”之前,你需要先准备并提交,如果它们现在应该被忽略,那么你应该先把它们藏起来,然后再执行“拉-再基”:我现在真的不记得了。但是谢谢你提供的信息,它所做的只是获取最新的提交,并将所有新提交放在它们之上,这样它们就可以简单地作为新提交推送。听起来正是你要找的。我的意思是,我确信合并也会起作用,但在这种情况下,重定基址通常更有意义:我解决了冲突(编辑文件、添加、提交),当尝试推送时,再次出现相同的错误!我还尝试了
git-pull--rebase
,但它给了我
错误:无法使用rebase进行拉取:您有未老化的更改。
:我做了rebase,但它弄乱了我更改的所有文件!我重新设置了它,现在我的文件正常了,但仍然无法推送。从错误中,您似乎有进一步的更改,但尚未执行和提交。这是故意的,还是也应该推动他们?如果它们应该被包括在内,那么在运行“pull--rebase”之前,你需要先准备并提交它们,如果它们现在应该被忽略,那么你应该先把它们隐藏起来,然后再执行“pull--rebase”:我现在真的不记得了。但是谢谢你提供的信息。:和
git checkout one user git push-u origin develope
:一般来说,我正在处理我的分支
OneUser
,然后想将我的更改推送到/从
developer
branch@George更新了我的答案,解释了你为什么会遇到错误。如果希望本地分支与开发分支同步,可以使用--set upstream to或do-u,但要有完整的引用。我会用更多的细节更新我的答案,我很高兴我的答案奏效了!我又增加了一些提示,以防有用:-):好的,很好!如果我想在以后某个时候取消跟踪开发分支?(还有,在一篇帖子中,有人告诉我,将一个分支推到另一个分支不是一个好的做法。但是,没有其他方法对吗?:git checkout OneUser git push-u origin develop有什么区别呢?:一般来说,我正在处理我的分支
OneUser
,然后想将我的更改推/拉到
开发