有没有一种很好的方法来解释如何在Git中解决合并冲突?
我在分公司mybranch1.mybranch2分叉,mybranch1并进行了更改mybranch2.
然后,在开启时mybranch1,我已经完成git merge --no-commit mybranch2
它显示合并时存在冲突.
现在我想丢弃所有东西(merge命令),这样mybranch1就恢复了之前的状态.我不知道我该怎么做.
我开始对我的代码库进行更改,但没有意识到我在一个旧主题分支上.要转移它们,我想将它们藏起来,然后将它们应用到主人的新分支中.我曾经git stash pop将正在进行的工作更改转移到这个新分支,忘记在创建新分支之前我没有将新的更改提取到master中.这导致了一堆合并冲突并且丢失了我的更改(因为我使用了pop).
一旦我正确地重新创建了新分支,我如何才能恢复我的隐藏更改以正确应用它们?
我已经阅读了Git Community Book 的Basic Branching and Merging部分.
所以我按照它创建了一个分支:experimental.
然后我:
有一些冲突,但在我解决它们后,我做了'git add myfile'
而现在我被困住了,我无法回到主人那里
当我做
$ git checkout master
error: Entry 'res/layout/my_item.xml' would be overwritten by merge. Cannot merge.
Run Code Online (Sandbox Code Playgroud)
我做了:
$ git rebase --abort
Run Code Online (Sandbox Code Playgroud)
没有任何进展?
我做了:
$ git add res/layout/socialhub_list_item.xml
$ git checkout master
error: Entry 'res/layout/my_item.xml' would be overwritten by merge. Cannot merge.
Run Code Online (Sandbox Code Playgroud)
我能做些什么才能回到主分公司?
我想删除对我的工作副本的所有更改.
运行git status显示修改的文件.
我没做什么似乎删除了这些修改.
例如:
rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: Rhino.Etl.Core/Enumerables/CachingEnumerable.cs
# modified: Rhino.Etl.Core/Pipelines/SingleThreadedPipelineExecuter.cs
# modified: Rhino.Etl.Tests/Rhino.Etl.Tests.csproj
# modified: Rhino.Etl.Tests/SingleThreadedPipelineExecuterTest.cs
#
no changes added to commit (use "git add" and/or "git commit -a")
rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git checkout -- Rhino.Etl.Core/Enumerables/CachingEnumerable.cs
rbellamy@PROMETHEUS …Run Code Online (Sandbox Code Playgroud) 我无法弹出我的藏匿处,因为我合并了一个显然与我的藏品冲突的分支,现在我的藏匿处似乎无法弹出.
app.coffee: needs merge
unable to refresh index
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?
固定!
事实证明,实际问题是来自合并的未解决的合并冲突,而不是存储会导致合并冲突.
解决方案:提交冲突的文件.
我尝试使用Git在命令行中合并文件,当出现错误消息告诉我合并已中止.
我认为这是它的结束,但后来我意识到我的文件中有gitmarks.像这样:
start =
expression
validchar =
[0-9a-zA-Z_?!+\-=@#$%^&*/.]
integer =
<<<<<<< HEAD
digits:[0-9]+
{ return digits.join(""); }
=======
sign:"-"* digits:[0-9]+
{ return sign + digits.join(""); }
>>>>>>> gh-pages
Run Code Online (Sandbox Code Playgroud)
这些文件不是由我编辑的,而是显示插入的行:
<<<<<<< HEAD)=======)>>>>>>> gh-pages)更糟糕的是文件内容不再有序.有谁知道我如何让这些文件恢复正常,我在gh-branch中所做的更改合并到主分支?
我有一个三向合并分支合并:
git checkout master
git merge BranchA
>> Fast-forward merge
git merge BranchB
>> Three-way-merge (prompts for a merge commit message)
Run Code Online (Sandbox Code Playgroud)
我的问题是两个:
我怎样才能中止合并?通过三向合并,我向编辑器展示了编写merge-commit消息的位置.但是如果我在没有保存的情况下退出,git将继续进行合并(只是合并提交消息将是默认的,而不是我可以写的但是已中止)
commit 11111233
Merge 'BranchB' into master
Run Code Online (Sandbox Code Playgroud)
虽然,显然没有确认提交消息,我希望合并不会发生(当我不确认正常提交消息时的相同行为)
git log)我将看到从提交BranchA,从的提交遵循THEN BranchB?为了更好地解释我做出测试的第二个问题:从主分支开始的2个分支(A和B).我在B上提交,然后在A上,然后再在B上,最后再在A上.然后我将BranchA合并为主.然后BranchB成为高手.
但是当我git log在掌握时,这就是已经出现的,为什么我问第二个问题:
commit 730fdd4d328999c86fa4d3b6120ac856ecaccab1
Merge: 7eb581b cc1085a
Author: Arthur Conandoyle <Arthur.Conandoyle@live.com>
Date: Mon Feb 9 21:24:27 2015 +0100
Merge branch 'BranchB' into …Run Code Online (Sandbox Code Playgroud) 出于某种原因,每当我进入命令行时,这就是我在 cwd 旁边看到的内容:

几天前,我收到一条错误消息,说我遇到了合并冲突。我不知道这意味着什么,所以我停止尝试提交。现在,每当我进入 git 终端时,我都会看到(master|MERGING). 每当我尝试提交时(即使它不在同一个遥控器上),我都会收到一个冗长的错误:

它说要修复错误,但我不知道该怎么做。我到底需要做什么?
我们决定在我们公司使用GIT,但现在遇到了问题.我们有几个不同功能的分支机构.现在我们需要的是合并分支并将其推送到Master.我们如何使用autoreplace做到这一点 - 我们有branch-a,branch-b,branch-c - 我们需要在Master中获取它们但是在重复文件的情况下,branch-b应该是Major而branch-c-minor.
UPD:
branch-a: -file1 -file2 -file3 -file4
branch-b: -file1 -file5 -file6
branch-c: -file1 -file2 -file7 -file8
我们需要结果:
Master: -file1 (from b) -file2 (from a) -file3 (from a) -file4 (from a) -file5 (from b) -file6 (from b) -file7 (from c) -file8 (from c)
git ×10
git-merge ×5
merge ×2
abort ×1
git-branch ×1
git-commit ×1
git-stash ×1
git-status ×1
github ×1
revert ×1
working-copy ×1