git拉并解决冲突

git拉并解决冲突,git,Git,我正在学习git,我有一个场景: 我的同事进行更改,并将更改推给主控 我在本地对我的主人进行更改 据我所知,目前我可以: 拉我的同事处理的主程序,并修复我最终将遇到的合并冲突 创建本地文件的备份,克隆主文件的新副本,然后将更改合并到主文件 我想知道是否有更好的方法来做到这一点。我相信git sync会很好。Git sync提交您的更改,提取master中现有的任何更改,然后将所有更改一起推送到master。一种(简单的*)无需分支或隐藏即可处理此更改的方法: 本地转移/提交更改 拉遥控器 此时将

我正在学习git,我有一个场景:

  • 我的同事进行更改,并将更改推给主控
  • 我在本地对我的主人进行更改
  • 据我所知,目前我可以:

  • 拉我的同事处理的主程序,并修复我最终将遇到的合并冲突
  • 创建本地文件的备份,克隆主文件的新副本,然后将更改合并到主文件
    我想知道是否有更好的方法来做到这一点。

    我相信git sync会很好。Git sync提交您的更改,提取master中现有的任何更改,然后将所有更改一起推送到master。

    一种(简单的*)无需分支或隐藏即可处理此更改的方法:

  • 本地转移/提交更改
  • 拉遥控器
  • 此时将通知您任何合并冲突。如果git无法自动解决合并冲突,它将在您设置为默认合并编辑器的任何编辑器中打开这两个版本。我推荐BeyondCompare
  • 提交合并、推送合并并提交远程主机

  • 如果你俩都在处理同一个文件,你将不可避免地遇到冲突。你只需要学会如何解决冲突


    如果你们想避免解决冲突,也许你们应该互相委派涉及处理不同文件的任务。

    根据我的经验,最好的方法是:

  • 处理新功能时,从主功能克隆新分支。始终与主机保持分支的最新状态
  • 在编写新功能并将其提交到创建的分支后,您将测试应用程序
  • 然后将主节点合并到工作分支中,如果主节点中有新的提交,则可能存在合并冲突。解决它之后-再次测试
  • 如果一切正常,则将分支合并到主分支

  • 这就是如何开发许多新特性,并在需要部署时仅合并工作特性的方法。祝您好运并检查此->

    如果远程分支和本地分支上都有不同的更改,我宁愿执行以下操作,而不仅仅是拉动主分支:

    git pull --rebase
    
    我甚至在我的默认配置中有它,这样它在
    git pull
    上如果需要的话,总是会执行一个重基:

    git config --global pull.rebase true
    
    重基避免合并提交,并将更改保留在当前远程分支的顶部

    但是,当不同的人在同一个分支上工作时,您仍然必须解决任何发生的合并冲突,这是一种不好的做法,尤其是因为它会导致冲突

    (还应注意,在重基的范围内,
    他们的
    我们的
    的含义会发生切换。)

    在有微小变化的情况下,您的应用仅在顶部

    您正在更改历史记录,但仅更改本地历史记录,而不是远程历史记录

    您不需要
    git-push--force
    。你只要按习惯推它就行了

    通常,您应该处理要素分支,并将它们合并回主分支

    在处理特征分支时,还可以通过以下方式使特征分支靠近
    主分支

    git checkout feature-branch
    git fetch && git rebase origin/master
    
    然而,在这里,我们需要
    gitpush--force
    feature分支,因此,如果有多个人在同一个feature分支上工作,我们应该小心不要使用这种策略


    如果你想使用ReBASE和推逼,考虑使用<代码> Git PASS-力>租借<代码> >代码> Git PASS-力<代码>,因为它防止意外删除远程的其他提交。

    当然,第一个场景是首选的。我想这是唯一的一个。你有什么特别的问题吗?我建议每次你想添加一个功能时都创建一个新的分支。然后,当您的分支准备合并到master中时,首先从源代码中提取最新版本。这样做更干净,在执行拉操作时不必处理合并冲突。如何更好?你目前的问题是什么?你认为会有什么不同?仅仅要求
    更好的方法来做x
    是基于观点的,而且有点离题。@user3159253,没有任何具体问题。我在工作中遇到了一些问题,我只是想知道,当两个人一起工作时,是否还有其他方法可以合并更改。我将使用“git pull--rebase”进行测试,因为
    rebase
    对我来说是一个新概念。谢谢。@Asimmar Rebase是git最强大的功能之一,我经常使用它,但它也是一种射中你自己脚的好方法。所以一定要理解使用它的含义。@k0pernikus,我刚刚遇到了与OP相同的情况,找到了您的答案,尝试“git pull--rebase”,它说“错误:无法使用rebase拉:您有未老化的更改。请提交或隐藏它们”。我做错了什么?Thx-inadvance@lucifer63请自行提出后续问题,不要发表评论。你可以在这里链接这个答案,也可以在这里留下一条评论,链接到你的问题。这就是说:帮助文本基本上已经提供了您的解决方案:要么提交当前未添加和未添加(也称为未加载)的更改,要么运行stash
    git stash&&git pull--rebase&&git stash apply
    @k0pernikus,我只是不熟悉stash/rebase特性。感谢您的帮助,尤其是“未添加和未注释(又名未添加)”的帮助,它解释了很多!