我对Mercurial和Python感到沮丧,因为它让事情变得简单.我有一个微不足道的冲突,因为Mercurial没有提出任何建议,我甚至不知道如何解决这个琐碎的文件冲突:

冲突是微不足道的,但如果我无法解决这个问题,我也无法解决任何复杂问题.我可以将文件编辑为我想要的方式并从任何地方再次提交吗?我该跑hg merge吗?为什么Mercurial甚至不能让我选择一个版本来保留?如果不挖掘1000篇写得不好的联机文章,为什么几乎不可能做到这一点?
我还是eGit的新手.我试图找出如何让eGit使用我的副本解决合并冲突,没有变化.我指的是eGit Wiki上的笔记:
http://wiki.eclipse.org/EGit/User_Guide#Possible_merge_results
但是,当我添加我的副本来解决冲突时,eGit仍然在文件"<<<<<<< HEAD","=======",">>>>>>>中留下差异标记".该文档说使用Merge-Tool后添加:
编辑工作树版本,直到您满意为止Team>添加合并资源以将冲突标记为已解决通过Team> Commit提交合并提交
但是,在我使用我的副本解决冲突之后,它仍然在文件中留下了diff标记,这实际上没有变化,因此不需要保存.我的问题是如何让eGit接受,添加和提交我的副本而不在文件中留下差异标记?这些标记会在最终提交时消失吗?
我有一个在TFS中启动的项目,然后转移到Git.不幸的是,将它移动到Git的人只是检查当前文件而不是使用git-tfs.我试图在我使用git-tfs从TFS中提取的提交之后,在Git中重新设置他的新提交.
要做到这一点,我只是简单地在git-tfs提交之上重新提交他的提交.(我意识到这会弄乱远程Git分支机构,但我们是一个小团队,它会没事.我也尝试过挑选樱桃,但我遇到了同样的问题.)
我遇到的问题是一组看起来像这样的冲突:
<<<<<<< HEAD
namespace OurNiftyProject
{
public enum CardType
{
Visa = 0,
MasterCard = 1
}
}
||||||| merged common ancestors
=======
namespace OurNiftyProject
{
public enum CardType
{
Visa = 0,
MasterCard = 1
}
}
>>>>>>> Add a bunch of stuff.
Run Code Online (Sandbox Code Playgroud)
看来这是添加这些文件的TFS端提交和添加它们的Git端提交之间的冲突(因为Git repo开始为空).
逻辑上可能是跳过这个提交,但也有一些文件(比如几百个中的十个)是新的.当然,那些不会引起冲突.
为什么Git不能自己弄清楚两个文件是否相同?即使我在使用--ignore-whitespacerebase时使用,Git仍会显示几十个这样看似相同的文件.我对如何解决这个问题感到茫然.
我无法获取此 GitHub 合并冲突顶栏来解决 Visual Studio Code 中的冲突。
我尝试添加此命令"editor.codeLens": true但没有效果。
我使用的是 VS Code 1.70.1
git git-merge merge-conflict-resolution git-merge-conflict visual-studio-code
当Git在合并期间检测到冲突时,默认行为是使用<<< >>> ===标记填充文件.
这在大多数情况下都可以,但有时候我想以不同的方式解决冲突,我只想让Git创建不同的文件:
怎么实现呢?
如果没有简单的命令一次性创建这些文件(这有点令人惊讶),也许有一种方法来扩展Git以便它可以做到这一点?习俗mergetool还是什么?只是一个想法.
我已经找到了@Karl Bielefeldt的答案:
savefiles.sh
#!bash
BASE=$1
LOCAL=$2
REMOTE=$3
MERGED=$4
cp "$BASE" "$MERGED.git_BASE"
cp "$LOCAL" "$MERGED.git_LOCAL"
cp "$REMOTE" "$MERGED.git_REMOTE"
# never mark the conflict as merged
exit 1
Run Code Online (Sandbox Code Playgroud)
配置
mergetool.savefiles.cmd=/path/to/savefiles.sh $BASE $LOCAL $REMOTE $MERGED
mergetool.savefiles.trustexitcode=true
Run Code Online (Sandbox Code Playgroud) 我有一个拉请求,GitHub告诉我"这个分支有必须解决的冲突." 我试过了:
~/src/networkx: git rebase origin/master
Current branch topo is up to date.
~/src/networkx: git merge origin/master
Already up-to-date.
Run Code Online (Sandbox Code Playgroud) 我在 PHP Storm 的本地分支机构工作。任务完成后,我提交我的分支并推送到 git。
在 Github 页面上,我创建了一个 Pull 请求 DEV <- 我的分支。Dev 是基础分支,我将把我的分支合并到其中。
到目前为止这还可以。但如果某些文件存在冲突 - 根据本文https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/resolving- github 上的合并冲突
就我而言,相同的文件已在其他分支中更新并之前合并到 DEV 中。现在在我的分支中有相同的文件和其他更改。
当我解决冲突(甚至可以是一行)时,我将其标记为已解决并提交合并。
现在,整个 DEV 基础分支被合并到我自己的分支中,这不太好。
因为我正在将我的分支合并到 DEV,而不是相反。如何才能避免这种情况呢?
我尝试重新创建相同的分支,但是一旦开发合并到这里,它就始终存在。每次冲突都会发生这种情况,这是无稽之谈 - 正如上述网络的第 8 点所说:
解决所有合并冲突后,单击提交合并。这会将整个基础分支合并到您的头分支中。
我做了一个git pull,发现我的一个文件需要合并.
我现在不想合并该文件 - 我还有另一个需要处理的分支,稍后我会回到这个分支来解决合并问题.
对我来说"撤消"这种拉动的最佳做法是什么?或者,在我准备好处理它之前,我怎么能推迟这个合并呢?我需要做些什么才能更改分支,然后在我的代码中返回到这个未合并状态?
GitHub在一个月前添加了一个功能来解决Web界面上的合并冲突,但它只适用于"简单"的合并冲突:
简单的冲突
复杂的冲突
在介绍新功能的博客文章中,GitHub提到了竞争的线路变化,其范围从相当简单到非常复杂.
什么是合格的冲突太复杂,无法在网页编辑器中解决?
设置
主分支策略:推送新更改时:重置所有批准投票
问题/问题 PR1 状态仍然显示“无合并冲突/上次检查 # 分钟前”;但是,由于更新了目标(主)分支,情况可能不再如此。如果用户在本地执行合并(将 master (PR2) 合并到 dev)并推送新合并的代码,则投票会重置。现在用户必须再次等待评论。
有没有办法在 PR 中手动触发合并冲突检查,或者在用户推送新更改时不重置投票,但这些更改只是“从 master 合并”。
git ×7
git-merge ×4
github ×3
merge ×3
azure-devops ×1
egit ×1
git-rebase ×1
kdiff3 ×1
mercurial ×1
pull-request ×1