是否存在任何常见的git使用错误,或者通常是否存在任何原因导致如果这些冲突在之前的rebase中得到解决,那么rebase会重复前一个rebase的冲突?
此外,rebase是否优先考虑如何解决冲突?例如,rebase是否希望在代码中通常的git冲突括号中的两个可能的代码片段之间进行严格的选择,或者只是为了去除它之间的所有内容>>>,<<<?我很好奇,如果删除两个代码选择来解决冲突会影响rebase正确解决以后冲突的能力.
进一步阐述:我有一个master分支和一个dev分支.该dev分支我一直就在身边一段时间,所以不同的提交数量的增加相当大的,在100秒(我知道...应该dev到master更多的时候). dev分支本身有几个较小的特征分支从它切割,然后合并回来,只有被剪切,重新定位,与dev分支合并,永远不会master分支(我记得).我dev在master1周前将分支重新分支到分支机构.我已经在dev分支上做了一些更改,并希望master再次进行重新设置,以便我可以准备合并.master在1周的窗口中,分支的变化非常小,但代码文件不重叠.然而,当重订dev上master我看到了相同的一组矛盾的混帐升起时,我试图在当前变基相比,当我重订一周前为.
谢谢!
我将一个分支合并到另一个分支并遇到了冲突。我部分解决了这个问题,但我需要同事的帮助才能完成解决。与此同时,当我在等他的时候,我想把这场冲突隐藏起来,继续做其他事情。但我不想失去已经解决的事情的进展。
我应该怎么办?除了在另一个目录中再次克隆存储库或手动复制冲突的文件然后稍后将其复制回来之外,还有其他方法可以实现此目的吗?
如果我尝试简单地隐藏它,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 status --short”显示时重现 git merge 冲突 DD。我过去见过这种冲突类型。
我不断提出与我尝试的一切都不冲突的想法。
我需要执行哪些步骤才能生成“DD”冲突?“DD”冲突是什么意思?
我看到了这个: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)
当===和之间什么都没有时,这是如何发生冲突的>>>?
我合并了 2 个分支并发生了冲突。其中一个简直是一团糟,因为它在一个分支(B1)上被强烈重构。但是,我希望另一个分支 (B2) 包含一个简单的更改,不幸的是,该更改影响了许多行。
所以我认为最简单的合并方法是保留 B1,并重新执行 B2 上所做的更改。但在开始之前我想确定 B2 上有哪些变化,以确保我不会忘记任何事情。
为此,
我是 git 的新手,所以这对其他人来说似乎很简单,我只是不理解。
我正准备与其他 1 位朋友开始一个项目,我们决定使用 git 作为我们的版本控制系统,所以我们一直在运行测试以了解它是如何工作的。以下是我们迄今为止测试过的内容以及我们遇到的问题:
我们有3个分店
可以,然后呢:
与我们正在运行的测试相比,这稍微简化了一点,但是当进行如此简单的更改时,git 真的不够聪明以识别差异吗?我可以看到它询问第 1 行是否应该有 1 或 2,但为什么它会抱怨在新行上添加了修补程序?
我认为这并不重要,但我们已经在 Windows 的 Bash CLI、Linux 的 Bash 直接、桌面的 Github、Gitkraken 和 Gmaster 中尝试了相同的测试,结果都相同。
编辑,为了清楚起见,这里读出了我在终端中所做的事情:我解释了我在提交消息中所做的事情,虽然我不知道如何从 bash 终端显示合并冲突,但这里是冲突的屏幕截图它在 vscode 中打印:https://imgur.com/a/Yd6EXx2。
另外,为了更清楚,创建 .txt 时,有 1 行,我在两个分支的预创建行上放置了 Test(此处为数字),对于朋友分支,我创建了第 2 行和第 3 行,并放置了 …
这是我面临的问题
我从该分支创建了一个功能分支master。我在一个功能分支上进行了大量工作,它比主分支提前了 80 次提交。在这些提交中,我多次编辑了一些文件。几天后,有人在主分支上推送了几个提交,因此由于合并冲突,功能分支的拉取请求无法合并。
我尝试变基来掌握并解决合并冲突,但之后冲突越来越多git rebase --continue
govi@falcon:/home/my_user/project/ (feature/xyz): git rebase master
govi@falcon:/home/my_user/project/ (feature/xyz | REBASE 32/85):
Run Code Online (Sandbox Code Playgroud)
对于任何合并冲突,我想选择我的更改。所以我尝试了ours递归模式下的冲突解决策略。现在 git 不强迫我解决任何冲突,但它要求我执行git rebase --continues 近 80 次。
govi@falcon:/home/my_user/project/ (feature/xyz): git rebase master -s recursive -X ours
govi@falcon:/home/my_user/project/ (feature/xyz | REBASE-i 1/85)
Last command done (1 command done):
pick db2511c Modify file
Next command to do (1 remaining command):
pick d1c2037 Modify file one more time
Run Code Online (Sandbox Code Playgroud)
在上述情况下,有没有更好的方法来解决合并冲突?或者也许是更好的变基方法?
PS:我们不允许重置master分支。我知道简单的方法是{reset, stash, rebase, pop}在功能分支上执行,但 PR 已经在进行中。
我有一个文件 myfile.txt
Line one
Line two
Line four
Run Code Online (Sandbox Code Playgroud)
其中每一行都已添加到单独的提交中。
我编辑文件以添加“缺失”行,因此文件现在是
Line one
Line two
Line three
Line four
Run Code Online (Sandbox Code Playgroud)
此 bash 脚本设置存储库:
#!/bin/bash
mkdir -p ~/testrepo
cd ~/testrepo || exit
git init
echo 'Line one' >> myfile.txt
git add myfile.txt
git commit -m 'First commit'
echo 'Line two' >> myfile.txt
git commit -m 'Second Commit' myfile.txt
echo 'Line four' >> myfile.txt
git commit -m 'Third commit' myfile.txt
sed -i '/Line two/a Line three' myfile.txt
git commit --fixup=HEAD^ myfile.txt
Run Code Online (Sandbox Code Playgroud)
历史是这样的
$ git …Run Code Online (Sandbox Code Playgroud) 我想接受所有远程(他们的)修改,而不需要任何手动解决冲突.但是我仍然会在没有自动解决方案的情
$ git merge -s recursive -X theirs local/master
CONFLICT (rename/delete): rcS.d/S08kmod deleted in HEAD and renamed in local/master. Version local/master of rcS.d/S08kmod left in tree.
Auto-merging php5/cli/conf.d/20-xdebug.ini
CONFLICT (add/add): Merge conflict in php5/cli/conf.d/20-xdebug.ini
Auto-merging apt/sources.list
CONFLICT (rename/rename): Rename "apache2/sites-available/default-ssl"->"apache2/sites-available/default-ssl.conf.conf" in branch "HEAD" rename "apache2/sites-available/default-ssl"->"apache2/sites-available/default-ssl.conf" in "local/master"
Run Code Online (Sandbox Code Playgroud)
使用拉:
$ git pull local master
From ssh://192.168.1.101/etc
* branch master -> FETCH_HEAD
warning: Cannot merge binary files: console-setup/cached_UTF-8_del.kmap.gz (HEAD vs. ada82813d27e5bef846ee086d07a87a82cfbb020)
CONFLICT (rename/delete): rcS.d/S08kmod deleted in HEAD and renamed in ada82813d27e5bef846ee086d07a87a82cfbb020. Version …Run Code Online (Sandbox Code Playgroud) 使用GIT似乎就像在玩一种新的国际象棋,没人真正知道规则。这是我所做的,请让我知道为什么这么快就出错了。
我有一个主叉子/仓库和我的个人叉子。
git clone https://github.com/myfork/project.git
cd project
git submodule update
git checkout -b newbranch
git remote add upstream https://github.com/CompanyX/project.git
git fetch upstream # <- hoping to update my fork
git pull upstream mainbranch # want the latest stuff from upstream
# Result: 100's of modified files, deleted files, and even merge conflicts... unrecoverable.
Run Code Online (Sandbox Code Playgroud)
我已经看过几次了。如果在从主叉子更新叉子之前在叉子中创建分支,则叉子和主叉子之间的差异将导致合并冲突,最终无法解决。
我是在做错事还是在冒危险?
如果不是某些东西的副本,那么叉子到底是什么?是叉 但在git的另一种名不副实的任期?