有没有一种很好的方法来解释如何在Git中解决合并冲突?
我已经开始玩Git并遇到过"上游"和"下游"这两个词.我之前见过这些,但从未完全理解它们.这些术语在SCM(软件配置管理工具)和源代码的上下文中意味着什么?
这可能听起来像是一个基本的问题,但我已经寻找答案,我现在比以前更困惑.
当我的分支合并到我的另一个分支时,git中的"我们的"和"他们的"是什么意思?两个分支都是"我们的".
合并冲突是"我们的"总是显示两个版本的上部?
"我们的"总是指合并开始时HEAD指向的分支吗?如果是这样,那么为什么不使用像"当前分支"这样的明确的所有格引用而不是使用像"我们的"这样的所有格代词,这些代词是引用模糊的(因为这两个分支在技术上都是我们的)?
或者只是使用分支名称(而不是说"我们的"只是说"本地主人"等)?
对我来说最令人困惑的部分是我在特定分支的.gitattributes文件中指定.让我们说在测试分支中我有以下.gitattributes文件:
config.xml merge=ours
Run Code Online (Sandbox Code Playgroud)
现在我结账并指出HEAD为master然后合并测试.由于master是我们的,并且test的.gitattributes没有签出,它甚至会产生影响吗?如果它确实有效果,因为主人现在是"我们的",那么会发生什么?
我有一些本地文件,我从远程分支拉,有冲突.我知道我想保留本地更改并忽略导致冲突的远程更改.是否有一个命令可以用来实际上说"将所有冲突标记为已解决,使用本地"?
我知道如何使用vimdiff合并修改,但是,假设我只知道整个文件可以保留或丢弃,我该怎么做?
我不想为每个人打开vimdiff,我改变了想要一个"保持本地"或"保持远程"的命令.
EG:我与标记为已更改的文件合并,因为有人在Windows下打开它,更改EOL,然后提交.合并时,我想保留自己的版本并丢弃他的版本.
我也对此感兴趣:我搞砸了很长时间并希望接受远程文件,丢弃我的更改.
在进行git rebase时,我常常难以解决在解决冲突时"本地"和"远程"发生的事情.我有时会产生这样的印象:他们将一方提交交换到另一方提交.
这可能(肯定)因为我还没有正确理解.
变基础时,谁是'本地',谁是'偏远'?
(我使用P4Merge解决冲突)
假设我通过git存储库与某人合作,并且有一个特定的文件,我永远不想接受任何外部更改.
有没有办法让我设置我的本地仓库,以便每当我拉动时不抱怨冲突的合并?我想在合并此文件时始终选择我的本地版本.
代码冲突时会出现问题。
正如您在上面给出的图像中看到的那样,有四个选项
我想知道其中的差别之间Accept Current changes和Accept Incoming changes
我正在开发一个将subversion用于其存储库的项目.因为我需要进行一些无法发送到svn服务器的更改,我开始使用git svn以便我可以进行本地签入.我的设置如下:
分支: trunk(跟踪svn trunk),master(非常接近svn中的内容)和主题.
*------------------ trunk
\
*-----------*--------- master
\
*-------- topic
Run Code Online (Sandbox Code Playgroud)
工作流程:
[on branch master]
$ git svn fetch
$ git svn rebase
$ git checkout -b topic
$ git rebase master
[hack hack hack]
$ git commit -a
[once upstream is ready for my changes]
$ git svn fetch
$ git checkout master
$ git svn rebase
$ git checkout topic
$ git rebase master
$ git svn dcommit
$ git checkout master
$ git …Run Code Online (Sandbox Code Playgroud) 


以上是合并和rebase的结果.
我的问题是,在最终状态下,C5和C3'是否相同?
或者说,git rebase等于git merge+删除C3?
git ×9
merge ×3
conflict ×2
git-merge ×2
rebase ×2
definition ×1
github ×1
local ×1
svn ×1
terminology ×1
versioning ×1