说,我遇到了合并冲突,我设法修复它,但没有标记为已解决(即我还没有完成git add冲突的文件).此时,我可以这样做,git diff并且我将以组合的diff格式显示结果文件与每个父文件的不同之处.
到目前为止都很好.现在我想分别检查结果文件与单个父文件的区别.当然,对于涉及2个父母的合并冲突(樱桃挑选,rebase等),我可以使用git diff --ours或者git diff --theirs,但是我如何将其扩展到更多的父母?
换句话说,如果我从3个父母那里得到冲突,是否可以查看每个父母的个别差异?
而且,我发现--ours并且--theirs非常偶然; 我无法在diff上下文中找到他们的用法.
我正在cherry-pick对多个文件进行大型提交。存在一些冲突,但对于某些冲突的文件,我确信我不需要任何更改。我只想恢复该提交中应用于这些文件的所有更改 - 有点像 svn 中的“使用我的解决方案”,或者git checkout <filename>撤消应用于文件的更改(这在这里似乎不起作用)。
是否有命令可以执行此操作,而无需手动检查这些文件中的差异?
FFR,请随意添加使用他们的解决方案的操作。
git merge-conflict-resolution git-cherry-pick git-merge-conflict
我有以下问题。
我想branch从我的master 仓库创建一个。我可以使用bitbucket dashboard或Terminal创建分支。如果使用Terminal,则创建的分支不会显示在。中,但是Overview如果Create a branch从仪表板使用并创建,则显示该分支,但其中不包含任何内容,并要求我使用git fetch && git checkout branchname命令进行签出。
哪一种是创建分支的正确方法?
然后,我的下一个问题是:认为我master已更改,并且分支也已更改。所以我怎样才能将分支更改合并到master。有哪些步骤可以做到这一点。(最好的方法是使用命令或位桶仪表板合并)
最后,如果我们键入git branch,它将显示master和other branches。所以我该如何从终端更改分支。
我正在努力正确地合并到分支机构.分支似乎有行结束问题,因为当我打开Visual Studio中的冲突窗口时,它显示0个冲突和0个不同文件之间的差异.
我在两个分支上添加了一个gitattributes文件,它在两个存储库中查找并执行了存储库刷新.
当我刷新两个存储库时,没有提交更改,即使指令指出将提交更改(实际上更改来自EOL转换).
这是我的gitattributes
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
Run Code Online (Sandbox Code Playgroud)
我也检查过,我的全局core.autocrlf等于true(因为我们所有的开发人员都在Windows上使用Visual Studio)
问题是,当我继续做以上操作以期在两个分支中修复和规范化这些分支时,我最终会遇到比以前更多的冲突 - 所有这些都是由于行结束:
.git/config文件(不包括分支引用)
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = …Run Code Online (Sandbox Code Playgroud) 我已经用这个 Github 问题把我的头撞在墙上,足以最终来到这里寻求帮助。我的repo有两个感兴趣的分支:master,这是当前实时发布的分支,以及alternate-testing,这正是它听起来的样子。我们的开发流程具有定期分支(和分叉)的功能分支alternate-testing,然后合并回alternate-testing. 最后,alternate-testing定期合并到master. 请注意,测试分支是看门人master- 除了master通过之外什么都不会进入alternate-testing。
完全清楚,这不是这样的情况:
1 -- 2 -- 3 -- 4 -- 5 -- 6 -- 7 -- 8 [master]
\ /
A -- B -- C -- D -- E [alternate-testing]
Run Code Online (Sandbox Code Playgroud)
就像在这个问题中一样,因为 master本身永远不会改变。更相关的图表是:
1 -- 2 ---------------------- * -- 8 [master]
\ /
A -- B -- C -- D -- E …Run Code Online (Sandbox Code Playgroud) git version-control github merge-conflict-resolution git-merge-conflict
我一直遇到以下问题,我想知道是否有使用现有 git 命令的简单解决方案,或者我是否需要编写自定义合并驱动程序。
这是一个演示我的问题的示例:假设master我的 repo的分支具有以下文件:
$ cat animal.hpp
#include <string>
class Animal
{
public:
virtual std::string say() const = 0;
};
Run Code Online (Sandbox Code Playgroud)
我创建一个名为的新分支mybranch并进行以下更改:
diff --git a/animal.hpp b/animal.hpp
index e27c4bf..3bb691a 100644
--- a/animal.hpp
+++ b/animal.hpp
@@ -5,3 +5,13 @@ class Animal
public:
virtual std::string say() const = 0;
};
+
+class Dog : public Animal
+{
+public:
+ virtual std::string
+ say() const override
+ {
+ return "woof";
+ }
+};
Run Code Online (Sandbox Code Playgroud)
与此同时,其他人添加了以下非常相似的更改master:
diff …Run Code Online (Sandbox Code Playgroud) git git-merge git-rebase merge-conflict-resolution git-merge-conflict
我主要通过命令行使用 git,但为了解决冲突,我更喜欢 IDE。特别是 IntelliJ IDEA。
目前我尝试重新设置基准,并看到冲突。所以我需要进入IDEA并点击“VCS -> Git ->解决冲突”。然后返回控制台并运行git rebase --continue。
我想我可以配置git调用一个程序来处理冲突。
有没有办法从命令行调用 IDEA 的冲突解决?
就像是idea --git-resolve-conflicts $(PWD)。
也许在安装正确的插件后?这就是 IDEA 给我的帮助:
Usage:
/usr/local/bin/idea -h | -? | --help
/usr/local/bin/idea [project_dir]
/usr/local/bin/idea [-l|--line line] [project_dir|--temp-project] file[:line]
/usr/local/bin/idea diff <left> <right>
/usr/local/bin/idea merge <local> <remote> [base] <merged>
Run Code Online (Sandbox Code Playgroud) 我有一个真正的冲突解决方案集,我想我会去尝试它,如果我失败了,那么我应该能够将文件恢复到它的冲突状态。但是,我似乎找不到回去的方法。git 仍处于 MERGING 状态,那么如何备份单个文件并重新解析?
我发现了一个奇怪的问题。我正在测试一个 git repo 并在这种情况下发现。
我创建了一个简单的 git repo 并添加了一个包含以下内容的文本文件。
Hello Git..!
First Line
Run Code Online (Sandbox Code Playgroud)
作为初始提交提交。
然后我从该提交创建了一个名为“abc”的分支,并将文件的内容更改为下面的内容。
(abc) -> 分支
Hello Git..!
First Line
Second Line
Run Code Online (Sandbox Code Playgroud)
坚定的。然后我检查回我的主分支并将文件内容更改为下面。
(主)-> 分支
Hi Git..!
First Line
Run Code Online (Sandbox Code Playgroud)
坚定的。然后我尝试将“abc”分支合并到“master”分支。我以为这会给我带来冲突,但它已通过递归成功合并到下面。
Hi Git..!
First Line
Second Line
Run Code Online (Sandbox Code Playgroud)
什么没有显示任何冲突?如果像下面这样之间没有空行,我有时会尝试几次,
Hello Git...!
First Line
Run Code Online (Sandbox Code Playgroud)
那么它表明存在冲突。我无法理解这一点。有人请帮助我理解这一点。
我尽可能多地搜索,但我无法找到问题或答案来解决我的问题。
我已将示例存储库上传到 GitHub。如果有人克隆它并尝试合并,它可以被复制。
https://github.com/Ranjith-Suranga/test-repo
有没有办法强制GIT显示冲突?我知道这是一个奇怪的问题,没有人需要发生冲突。但我也不喜欢这样的事情发生。试想一下,这发生在我的真实代码中。
更新
由于大多数评论和答案都在暗示不能有任何这样的冲突。我不得不更新这个答案。
好的,让我们在删除第二个空行后再次执行上述所有步骤。
开始了,
Hello Git..!
First Line
Run Code Online (Sandbox Code Playgroud)
作为初始提交提交。
(abc) -> 分支
Hello Git..!
First Line
Second Line
Run Code Online (Sandbox Code Playgroud)
坚定的。
(主)-> 分支
Hi Git..!
First …Run Code Online (Sandbox Code Playgroud) 合并一些文件后,如何接受所有尚未合并的文件(我们的或他们的)?
我试过
git checkout --theirs Project\folder\*.json
Run Code Online (Sandbox Code Playgroud)
但这似乎并没有起到任何作用。
这与现有问题不同,因为我只想接受剩余的文件。并非所有文件(这通常是提出的问题)。