我能做些啥来解决“1 次提交落后于主人”?

Posted

技术标签:

【中文标题】我能做些啥来解决“1 次提交落后于主人”?【英文标题】:What I can do to resolve "1 commit behind master"?我能做些什么来解决“1 次提交落后于主人”? 【发布时间】:2016-03-11 03:51:08 【问题描述】:

推送后,我在远程存储库中看到了这条消息:

1 次提交落后于 master。

此合并存在必须在提交之前解决的冲突。

要将这些更改手动合并到 TA20footerLast 中,请运行以下命令:

git checkout 7c891f50c557

注意:这将创建一个分离的头部!

git merge remotes/origin/master

【问题讨论】:

如果您想查看 master 上的 1 个新提交是什么,请运行 git log -1 -p origin/master 【参考方案1】:

在开始之前,如果您对命令行不满意,可以使用 SourceTreeGitExtensionsGitHub 桌面 执行以下所有步骤>,或您最喜欢的工具。

要解决此问题,您可能有两种情况


1。仅修复提交后的远程存储库分支

示例:两个分支都在远程端

提前 === 主分支

后面 === 开发分支

解决方案:

    将存储库克隆到本地工作区:这将为您提供 Master 分支,该分支在提交之前

    git clone repositoryUrl
    

    使用 Develop 名称创建一个分支并在本地结帐到该分支

    git checkout -b DevelopBranchName // this command creates and checkout the branch
    

    从远程开发分支中拉取。 冲突可能会发生。如果是这样,修复 冲突并提交更改。

     git pull origin DevelopBranchName
    

    将本地 Develop 分支与远程 Develop 分支合并

      git merge origin develop
    

    将合并后的分支推送到远程开发分支

      git push origin develop
    

2。本地 Master 分支在远程 Master 分支之后

这意味着每个本地创建的分支都落后了。

在此之前,您必须提交或存储您在提交后的分支上所做的所有更改。

解决方案:

    查看您当地的 Master 分支

    git checkout master
    

    从远程主分支拉取

    git pull origin master
    

现在您的本地 Master 与远程分支同步。由于上述命令,从先前本地 Master 分支分支的其他本地分支不同步。要解决这个问题:

    检查本地 Master 分支后面的分支

    git checkout BranchNameBehindCommit
    

    与本地 Master 分支合并

    git merge master  // Now your branch is in sync with the local Master branch
    

如果此分支在远程存储库上,您必须推送您的更改。

    git push origin branchBehindCommit

【讨论】:

在 1) -> 3) 给出错误:自动合并失败;修复冲突,然后提交结果。【参考方案2】:

    克隆你的叉子:

    git clone git@github.com:YOUR-USERNAME/YOUR-FORKED-REPO.git

    在您的分叉存储库中从原始存储库添加远程:

    cd into/cloned/fork-repo git remote add upstream git://github.com/ORIGINAL-DEV-USERNAME/REPO-YOU-FORKED-FROM.git git fetch upstream

    从原始 repo 更新你的 fork 以跟上他们的变化:

    git pull upstream master git push

【讨论】:

非常感谢,这正是我所需要的。像魅力一样工作。 工作得很好,解释得很好!【参考方案3】:

如果你的分支落后于 master 然后做:

git checkout master (you are switching your branch to master)
git pull 
git checkout yourBranch (switch back to your branch)
git merge master

合并后检查是否有冲突。 如果没有冲突,那么:

git push

如果存在冲突,请修复您的文件,然后:

git add yourFile(s)
git commit -m 'updating my branch'
git push

【讨论】:

一般情况下,开发者无权push到master。在这种情况下,这个解决方案会更好:***.com/a/59064413/8872674【参考方案4】:

如果消息是“n 次提交落后于 master”。

您需要使用 master 重新设置您的 dev 分支。 您收到上述消息是因为在从 master 签出 dev 分支后,master 分支获得了新的提交并继续前进。 您需要将这些新提交提交到您的开发分支。

步骤:

git checkout master
git pull        #this will update your local master
git checkout yourDevBranch
git rebase master

可能存在一些您必须解决的合并冲突。

【讨论】:

只是想补充一点,变基只能用于私有分支:blog.axosoft.com/golden-rule-of-rebasing-in-git 应谨慎应用 Rebase,因为它会重写提交哈希并可能导致一些问题。【参考方案5】:

假设你目前在你的分支myBranch 执行以下操作:-

git status

如果所有更改都已提交

git pull origin master

如果没有提交更改

git add .

git commit -m"commit changes"

git pull origin master

检查是否有任何冲突,然后解决并提交更改

git add .

git commit -m"resolved conflicts message"

然后推

git push origin myBranch

【讨论】:

【参考方案6】:

查看您在 GitHub 中的存储库...

想象一下这样一种场景,其中 main 或 master 是您的主分支,并且您还有另一个分支作为 dev,并且您的 dev 分支在 main 或 master 之后有 N 次提交,而在您的本地计算机中没有任何事情。

如何进行...

首先你必须从 Github 存储库克隆到你的机器,但是,首先,你的本地 git 不必知道你的辅助分支状态,只需要从主分支或主分支,所以 Git 只获取你的远程标签分支已更新,您的本地还没有提交。

因此,您需要至少 1 次提交,1 次推送到主服务器或主服务器,1 次拉回本地。

不要为你的 dev 分支推送任何东西,否则你会提前 1 次提交,在 main 或 master 后面有 N 次提交(所以,冲突)......

因此,您需要一个辅助分支来向远程主分支或主分支发送拉取请求。

事不宜迟。在这种情况下如何进行:

克隆存储库后...

git checkout -b aux-branch -> 它将创建并签出分支

现在,您必须至少进行一次更改才能在本地 Git 中记录第一次提交,假设您目前没有任何要实现的内容...拿 README.md 文件来更改一个字母,一个空格,一个空行 更多...

git status -> 你会看到你的 README 文件被修改了git add README.md -> 将它添加到暂存区,准备好提交git commit -m "modified readme file"git push -u origin aux-branch ->它应该会生成一个链接,将您带到您的存储库以打开并接受订购的拉取请求。

我使用 Rebase 和 Merge 接受它(下拉菜单中绿色按钮的最后一个选项),接受之后 GitHub 会询问您是否要删除 aux-branch... 是的,您想要,所以删除,因为您的main 或 master 现在具有 aux-branch 带来的最新功能。 现在回到你的本地(Git),按照以下方式进行:

git checkout main 或 mastergit branch -D aux-branch -> 在您的本地也删除\git remote update --prune-> 它可以获取和更新到您的远程。git pull -> 到从远程 GHub 接收最新更新。git checkout devgit rebase dev main 或 master ->(变基或合并)git push -u origin dev -> 将更新爬到远程分支

现在去你的 GitHub 重新加载页面,下拉到你的 dev 分支,你会看到你的 dev 分支和你的 main/master 分支一样...

就是这样。希望对大家有帮助...

【讨论】:

【参考方案7】:

使用

git cherry-pick <commit-hash>

因此,这将选择您对 git 位置的后面提交。

【讨论】:

【参考方案8】:

如果分支在master之后,则删除远程分支。然后去本地分支运行:

git pull origin master --rebase

然后,再次将分支推送到原点:

git push -u origin <branch-name>

【讨论】:

请考虑保留提交历史。删除任何提交习惯的作品。不是一个好方法。

以上是关于我能做些啥来解决“1 次提交落后于主人”?的主要内容,如果未能解决你的问题,请参考以下文章

我的固定背景使网站滚动很慢,我能做些啥来改善它?

ESP8266:我能做些啥来克服“部分 `.text' 将不适合区域 `iram1_0_seg'”?

*** / SignalR 无法协同工作。我能做些啥?

无法以用户身份访问 mysql。我能做些啥? [复制]

我必须做些啥来解决我的项目的“处理器架构之间的不匹配”?

Html 列表标签在 android textview 中不起作用。我能做些啥?