我为我们的团队设置了一个本地 git 存储库。还有另一个为远程团队设置的 git 存储库(他们是一些自由职业者)。我的问题是我想将自由职业者进行更改的实时服务器代码与我的本地 git 同步,并将最新代码推送到服务器。我怎样才能做到这一点?
此问题使用 Git 2.7.0.windows.1,因此某些 git 命令可能已过时。
如果我的git merge命令没有检测到重命名的文件,我如何告诉 git 手动合并两个本应是单个文件的文件中的更改,而不需要重新开始合并并使用较低的重命名阈值?
复制步骤:
git init
echo "//Hello world!" > hw.h
git add . && git commit -m "Initial commit"
git checkout -b someBranch
mv hw.h hw.hpp
echo "//Foobar" > hw.hpp
git add . && git commit -m "Change hw to HPP & change content"
git checkout master
echo "//Boofar" > hw.h
git add . && git commit -m "Change content of hw"
git merge -X rename-threshold=100% someBranch
Run Code Online (Sandbox Code Playgroud)
您将遇到合并冲突,但不会出现冲突的块。也就是说,您应该得到的唯一冲突/错误是:
CONFLICT (modify/delete): …Run Code Online (Sandbox Code Playgroud) 我正在编写一个测试脚本,并尝试在通过“git status --short”显示时重现 git merge 冲突 DD。我过去见过这种冲突类型。
我不断提出与我尝试的一切都不冲突的想法。
我需要执行哪些步骤才能生成“DD”冲突?“DD”冲突是什么意思?
我看到了这个:Git:如何创建不同的未合并状态? 但其中列出的步骤在 Git 的更高版本中不再产生任何冲突。
我正在使用 git 管理这个 LaTeX 项目,其中我有几个分支,我将其用作master获取所有更改的分支(在项目结束时它将是最终版本)。有时,当我在分支下编译项目时,获取 pdf,然后当我将该分支与 合并时,master会出现合并冲突(在masterpdf 版本和branchpdf 版本之间)。有时,两个版本会无缝合并。我做了什么导致了一种又另一种情况?如何确保两个版本合并而不发生冲突?
我正在寻找一种方法,使 git对特定文件使用特定的合并策略(我们的/他们的) ,具体取决于我是合并还是重新调整我的功能分支。
让我解释一下:假设我有一个功能分支“fb”,其中更改了文件“.mvn/maven.config”。如果我将 master 合并到“fb”中,我想保留我的文件,因此使用“我们的”策略(我可以在 .gitattributes 文件中定义它)。但是,如果我将“fb”重新设置为 master(而不是合并),我仍然想保留“fb”分支的“.mvn/maven.config”,所以我应该使用“他们的”策略,因为据我了解,merge 和 rebase 之间策略的含义是相反的。
问题是:有没有一种简单的方法来定义智能合并策略?
我已经看到了“git merge driver”的概念,但据我所知,合并驱动程序无法判断它是合并还是变基,因此无法推断是否使用我们的 VS 他们的。
我是否必须告诉我的队友没有解决方案,迫使他们每次都小心谨慎,手动手动选择合适的策略?
注意:我添加了“maven”标签,因为任何使用 git 和 maven 的人在保留 .mvn/maven.config 文件时可能会遇到同样的问题
我们在组织中使用分叉模型,我正在尝试将更新从上游分支合并到本地分支。
这是我的 git 设置。
kartik@ ~/sourcecode/myproject (defect-875) $ git remote -v
origin git@github.com/kartik/myproject.git (fetch)
origin git@github.com/kartik/myproject.git (push)
upstream git@github.com:MyOrg/myproject.git (fetch)
upstream git@github.com:MyOrg/myproject.git (push)
Run Code Online (Sandbox Code Playgroud)
上游有两个分支
掌握
开发
我需要将本地分支与devel上游分支同步。
这是我尝试过的
git fetch upstream
git merge upstream/defect-875
Run Code Online (Sandbox Code Playgroud)
其中,defect-875 是我的本地分支。
我总是收到此错误消息
合并:upstream/defect-875 - 我们不能合并
我也尝试过这个
kartik@ ~/sourcecode/myproject (defect-875) $ git merge upstream/devel -m "Merging from seo redirect."
merge: upstream/devel - not something we can merge
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我删除了功能分支中的一个文件,因为我在其他地方重构了它的代码。
开发分支已更改此文件中的代码以修复错误。
我将开发分支合并到我的功能分支中,以在继续开发该功能的同时保持其最新状态。
我收到相关文件的“已被我们删除”冲突。
如何获取开发分支上文件更改的差异,以便我可以将这些更改重新实现到功能分支上的重构代码中?
我想出了“温和”的表达方式,因为您几乎可以通过以下命令获得想要的结果:
git merge <branch>
git reset --soft HEAD~1
Run Code Online (Sandbox Code Playgroud)
这样做会将所有最终更改保留在内存中,您只需提交它们即可。但问题是,在提交时,git 不再将其视为合并提交。
几乎获得相同结果的另一种方法是合并冲突。一旦解决了所有冲突并提交,git 就知道这是合并提交。
我是 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 行,并放置了 …
git pull 是指 git fetch 然后是 git merge。但是,具体来说,为什么有人会在不先进行 fetch 的情况下进行 git merge 呢?即为什么可以将一个看似单一的操作分成两个子操作?
git ×10
git-merge ×10
merge ×2
file-rename ×1
git-fetch ×1
git-fork ×1
git-rebase ×1
github ×1
maven ×1