在拉取请求选项中。选择两个分支后,github 会通知这两个分支是否有任何冲突。查找分支冲突的命令是什么?
我正试图git merge master从另一个分支做一个,然后我遇到了这个冲突:
<<<<<<< HEAD
=======
t.text "label_en"
t.text "help_text_en"
t.text "options_en"
>>>>>>> master
Run Code Online (Sandbox Code Playgroud)
我知道如何解决冲突,但我很好奇为什么git首先认为这是冲突,因为HEAD版本在特定行上没有内容.
<<<<<<< HEAD
=======
Run Code Online (Sandbox Code Playgroud)
git只是从master中添加3行并合并它不是一个简单的例子吗?
更新:
@Marcin是对的.基于答案,我做了一个测试,假设我有一个如下所示的git树:
A ---- B (master)
\
C (another branch)
Run Code Online (Sandbox Code Playgroud)
的内容temp.txt在commit A:
t.text "LALALA"
Run Code Online (Sandbox Code Playgroud)
的内容temp.txt在commit B:
t.text "label_en"
t.text "help_text_en"
t.text "options_en"
Run Code Online (Sandbox Code Playgroud)
temp.txtin的内容commit C是空的.
在这一点上,如果我这样做:
git checkout another_branch
git merge master
Run Code Online (Sandbox Code Playgroud)
然后我会得到以下内容:
<<<<<<< HEAD
=======
t.text "label_en"
t.text "help_text_en"
t.text "options_en"
>>>>>>> master
Run Code Online (Sandbox Code Playgroud) 所以我们犯了一个菜鸟错误,我们的一个项目团队成员已经忘记了几个星期(其中一些是假期),但是当他确实犯了错误时,他写的大部分代码都被覆盖了尝试自动解决所有冲突后,服务器上的内容.
那么有没有办法让他以前在他的电脑上获得的代码?因为很多工作已经丢失,我们真的无法再承担这一切.
所以只是为了澄清,丢失的代码不在服务器上,而是他在客户机上的未提交的更改.
我们正在使用团队基础服务器和visual studio
1)有一个'master'分支,其中包含一个文件
1个
2
3
4
5
2)A从'master'分支并像
1个
2
100
3
4
5
3)B从'master'分支并像
1个
2
3
4
200
5
4)现在,推送变为主机。然后,B也尝试推动。
B会发生什么?有没有合并冲突或没有合并冲突?原因
我将一个分支合并到另一个分支并遇到了冲突。我部分解决了这个问题,但我需要同事的帮助才能完成解决。与此同时,当我在等他的时候,我想把这场冲突隐藏起来,继续做其他事情。但我不想失去已经解决的事情的进展。
我应该怎么办?除了在另一个目录中再次克隆存储库或手动复制冲突的文件然后稍后将其复制回来之外,还有其他方法可以实现此目的吗?
如果我尝试简单地隐藏它,git 会像这样抱怨:
path/to/file/with/unresolved/conflict: needs merge
path/to/file/with/unresolved/conflict: needs merge
path/to/file/with/unresolved/conflict: unmerged (somesha)
path/to/file/with/unresolved/conflict: unmerged (somesha)
path/to/file/with/unresolved/conflict: unmerged (somesha)
fatal: git-write-tree: error building trees
Cannot save the current index state
Run Code Online (Sandbox Code Playgroud) 我承诺,但意识到信息中有错误.我跑了
git commit --amend -o -m "blah blah"
然后我删除了文件(故意)然后做了
git add .
git commit -m "blah blah"
git push origin master
Run Code Online (Sandbox Code Playgroud)
并得到了错误
![拒绝]主人 - >主人(非快进)
我试着解决它git pull origin master并得到了
CONFLICT (modify/delete): MyFile.java deleted in HEAD and modified in ad0c109
发生了什么,我该如何解决?我只想要有一个删除文件的历史记录.我打算用同一个名字创建一个新的.
更新:
我跑了git push -f origin master,它工作.现在git status给出
在分支主机上所有冲突都已修复,但您仍在合并.(使用"git commit"来结束合并)
我跑了git commit,得到了
E325:注意找到一个名为"C:/Users/Dev3/Documents/NetBeansProjects/OctRecProj/src/OctRecProj/.git/.COMMIT_EDITMSG.swp"的交换文件所拥有者:Dev3日期:Sun May 22 03:27:31 2016文件名:~Dev3/Documents/NetBeansProjects/OctRecProj/src/OctRecProj/.git/COMMIT_EDITMSG修改:YES用户名:Dev3主机名:Desktop-D进程ID:2844打开文件"C:/ Users/Dev3/Documents/NetBeansProjects/OctRecProj/src/OctRecProj/.git/COMMIT_EDITMSG"日期:星期四10月13日03:22:34 2016 NEWER比交换文件!
(1)另一个程序可能正在编辑同一个文件.如果是这种情况,请注意在进行更改时不要以同一文件的两个不同实例结束.退出,或继续谨慎.(2)此文件的编辑会话崩溃.如果是这种情况,请使用":recover"或"vim -r C:/ Users/Dev3/Documents/NetBe ansProjects/OctRecProj/src/OctRecProj/.git/COMMIT_EDITMSG"来恢复更改(请参阅":help recovery" ).如果你已经这样做了,删除交换文件"C:/ Users/Dev3/Documents/NetBe ansProjects/OctRecProj/src/OctRecProj/.git/.COMMIT_EDITMSG.swp" - 更多 -
我正在使用Flyway跟踪数据库更改,并使用git进行版本控制。
Flyway取决于迁移脚本,每个迁移脚本都以递增的编号命名。
现在,我遇到以下情况:在两个单独的分支(分别称为A和B)上开发了两个功能,都需要更改数据库。两位开发人员都为其分支机构的数据库创建了迁移脚本。当他们大约在同一时间从master分支出来时,他们都为迁移脚本分配了相同的文件名:V42__migration.sql。
现在,分支A合并为master。合并分支B时,由于V42__migration.sql文件原因,发生了合并冲突。解决此冲突的正确方法是将分支B的迁移脚本重命名为V43__migration.sql。但是,在合并git时,尝试将两个文件合并为一个,实际上我实际上需要两个文件都未更改,但是将其重命名。
解决这种与git合并冲突的最佳方法是什么?
为什么Git会产生如下冲突:
<<<<<<< mouseLabelCallbacks
const QMap<Qt::MouseButton, QString> TLabel::mMouseButtons = {
{Qt::NoButton, QStringLiteral("NoButton")}, {Qt::LeftButton, QStringLiteral("LeftButton")}, {Qt::RightButton, QStringLiteral("RightButton")},
{Qt::MidButton, QStringLiteral("MidButton")}, {Qt::BackButton, QStringLiteral("BackButton")}, {Qt::ForwardButton, QStringLiteral("ForwardButton")},
{Qt::TaskButton, QStringLiteral("TaskButton")}, {Qt::ExtraButton4, QStringLiteral("ExtraButton4")}, {Qt::ExtraButton5, QStringLiteral("ExtraButton5")},
{Qt::ExtraButton6, QStringLiteral("ExtraButton6")}, {Qt::ExtraButton7, QStringLiteral("ExtraButton7")}, {Qt::ExtraButton8, QStringLiteral("ExtraButton8")},
{Qt::ExtraButton9, QStringLiteral("ExtraButton9")}, {Qt::ExtraButton10, QStringLiteral("ExtraButton10")}, {Qt::ExtraButton11, QStringLiteral("ExtraButton11")},
{Qt::ExtraButton12, QStringLiteral("ExtraButton12")}, {Qt::ExtraButton13, QStringLiteral("ExtraButton13")}, {Qt::ExtraButton14, QStringLiteral("ExtraButton14")},
{Qt::ExtraButton15, QStringLiteral("ExtraButton15")}, {Qt::ExtraButton16, QStringLiteral("ExtraButton16")}, {Qt::ExtraButton17, QStringLiteral("ExtraButton17")},
{Qt::ExtraButton18, QStringLiteral("ExtraButton18")}, {Qt::ExtraButton19, QStringLiteral("ExtraButton19")}, {Qt::ExtraButton20, QStringLiteral("ExtraButton20")},
{Qt::ExtraButton21, QStringLiteral("ExtraButton21")}, {Qt::ExtraButton22, QStringLiteral("ExtraButton22")}, {Qt::ExtraButton23, QStringLiteral("ExtraButton23")},
{Qt::ExtraButton24, QStringLiteral("ExtraButton24")},
};
=======
>>>>>>> development
Run Code Online (Sandbox Code Playgroud)
当===和之间什么都没有时,这是如何发生冲突的>>>?
我删除了功能分支中的一个文件,因为我在其他地方重构了它的代码。
开发分支已更改此文件中的代码以修复错误。
我将开发分支合并到我的功能分支中,以在继续开发该功能的同时保持其最新状态。
我收到相关文件的“已被我们删除”冲突。
如何获取开发分支上文件更改的差异,以便我可以将这些更改重新实现到功能分支上的重构代码中?
我有一个开发分支,在它准备好之前我不小心将其合并到了 Master 分支中。
由于我错误地执行了此操作,因此我决定恢复 Master 中的更改,以便我的任何更改都不会发生在那里。此过程创建了一个恢复提交,从主服务器中删除了我的更改。
一切都很好我以为...
一周过去了,我几乎准备好将我的分支合并回 Master 中。由于还有其他开发人员在其他分支上工作,我决定通过将 Master 中的任何新更改合并回我的分支来更新我的开发分支。
这个过程似乎删除了我所有的工作。
回顾一下Master刚刚传来的历史,它包含了意外提交和恢复提交。这意味着每当我从 Master 更新我的分支时,恢复提交都会删除我的大部分工作。
如何将 master 中的更改合并回我的分支,但不包括恢复提交?
我能想到的唯一的两种可能性是:
我希望有一种更好的自动化方法来做到这一点(我希望进行某种合并但忽略某些提交过程)。
git merge git-merge branching-and-merging merge-conflict-resolution
当我尝试将分支合并到 master 时,我预计会发生合并冲突。这两个分支都有一个文本文件,其中包含不同的文本。
# make project directory
mkdir projA
cd projA
# initialize git repo
git init
# make commit in master branch
echo "text 1" > fileA.txt
git add .
git commit -m "commit A"
# make commit in a new branch
git checkout -b branch1
echo "text 2" > fileA.txt
git add .
git commit -m "commit B"
# merge branch into master
git checkout master
git merge branch1
Run Code Online (Sandbox Code Playgroud)
但合并命令只是进行快进合并,并保留 brach1 的 txt 文件中存在的文本,而不是 master 分支中的文本。
有人可以向我解释一下为什么 git …