76

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

1 次提交在 master 后面。

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

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

git checkout 7c891f50c557

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

git merge remotes/origin/master

4

10 回答 10

96

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

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


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

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

前面 === 主分支

后面 === 开发分支

解决方案:

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

    git clone repositoryUrl
    
  2. 使用 Develop 名称创建一个分支并在本地结帐到该分支

    git checkout -b DevelopBranchName // this command creates and checkout the branch
    
  3. 从远程开发分支中拉取。可能会发生冲突。如果是这样,请修复冲突并提交更改。

     git pull origin DevelopBranchName
    
  4. 将本地 Develop 分支与远程 Develop 分支合并

      git merge origin develop
    
  5. 将合并后的分支推送到远程开发分支

      git push origin develop
    

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

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

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

解决方案:

  1. 查看您当地的 Master 分支

    git checkout master
    
  2. 从远程 Master 分支拉取

    git pull origin master
    

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

  1. 签出本地 Master 分支后面的分支

    git checkout BranchNameBehindCommit
    
  2. 与本地 Master 分支合并

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

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

    git push origin branchBehindCommit
于 2017-03-25T10:08:33.290 回答
53
  1. 克隆你的叉子:

    • git clone git@github.com:YOUR-USERNAME/YOUR-FORKED-REPO.git
  2. 在您的分叉存储库中从原始存储库添加远程:

    • cd into/cloned/fork-repo
    • git remote add upstream git://github.com/ORIGINAL-DEV-USERNAME/REPO-YOU-FORKED-FROM.git
    • git fetch upstream
  3. 从原始 repo 更新你的 fork 以跟上他们的变化:

    • git pull upstream master
    • git push
于 2018-07-27T17:03:38.313 回答
39

如果您的分支在 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
于 2019-07-25T21:53:59.840 回答
19

如果消息是“n commits behind master”。

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

脚步:

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

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

于 2019-11-27T06:39:39.667 回答
3

假设当前您在您的分支中,请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
于 2020-05-19T09:14:14.130 回答
1

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

想象一下,main 或 master 是您的主要分支,并且您有另一个分支作为 dev,并且您的 dev 分支是 main 或 master 后面的 N 次提交,并且在您的本地计算机中没有任何事情。

如何进行...

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

所以,你需要的是至少 1 次提交,1 次推送到 main 或 master,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或 master
git branch -D aux-branch-> 在您的本地也删除\
git remote update --prune-> 它可以获取和更新到您的远程。
git pull -> 接收来自远程 GHub 的最新更新。
git checkout dev
git rebase dev main或 master -> (rebase or merge)
git push -u origin dev -> 将更新爬升到远程分支

现在转到您的 GitHub 重新加载页面,下拉到您的开发分支,您会看到您的开发分支与您的主/主分支相同...

就是这样了。我希望我对你们有帮助...

于 2021-10-28T14:14:53.980 回答
0
  1. git结账大师
  2. git pull 起源大师
  3. git checkout BranchNameBehindCommit(你的分支)
  4. git 合并大师
  5. git push origin branchBehindCommit
于 2022-02-03T15:59:04.627 回答
0

如果消息说你在 master后面有 'n' 次提交,那么你可以在 tortoise git 中使用 'git sync' 选项。系统将提示您从要从中提取更改的分支(目标)中进行选择。点击“拉”。这会将所有更改从远程(主/任何目标分支)拉到您的开发分支中。拉取后,点击“推送”将所有同步的更改从本地开发分支推送到 git 上的远程开发分支。

#tortoisegit

于 2022-02-01T08:46:05.277 回答
-2

利用

git cherry-pick <commit-hash>

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

于 2019-04-02T17:50:31.360 回答
-3

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

git pull origin master --rebase

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

git push -u origin <branch-name>
于 2020-01-08T07:11:03.960 回答