当我git pull [project name] master用来更新我的核心文件时,我在"递归合并"下获得了一堆绿色加红色和红色减号信号.这些符号是什么?它们是什么意思?
这是一个截图:

谢谢您的帮助.
我已经做了大量的搜索,阅读了很多SO问题和解决方案并尝试了不同的方式,但我一直无法做我想做的事,这很简单.
我有所有主代码所在的主分支,以及设计分支,其中rails应用程序的布局由设计团队构建.他们在公共文件夹中添加了一个名为"photoshop"的文件夹,以便在版本控制下保留图像的来源.但我不希望在合并到主分支时复制此文件夹,因为它是不需要的.
显然,这样做的方法是通过合并驱动程序.所以,我创建了"忽略"驱动程序:
[merge "ignore"]
name = always ignore during merge
driver = ignore.sh %0 %A %B
Run Code Online (Sandbox Code Playgroud)
并在$ PATH上创建了ignore.sh文件:
exit 0
Run Code Online (Sandbox Code Playgroud)
我在public /中创建了.gitattributes文件,因为photoshop文件夹应该整体被忽略,它将出现在public /下:
photoshop merge=ignore
photoshop/ merge=ignore
photoshop/* merge=ignore
photoshop/**/* merge=ignore
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我尝试了几种不同的模式来忽略整个文件夹,但它不起作用.我相信这是因为master分支上没有文件夹,所以没有冲突,因此git不使用ignore驱动程序.有没有办法实现这一点,而无需在master上创建public/photoshop文件夹?
谢谢!
假设我有以下情况:
B---D---F---G topic
/ /
--A---C---E master
Run Code Online (Sandbox Code Playgroud)
对于代码审查的目的,我想拔出DIFF从犯犯G,但不包括提交E和C即发生在主分支,也包括不提交F,可以合并提交.
换句话说,我想生成一个包含从F到G的变化的差异,并将这些变化与A到D的变化进行汇总.
换句话说,我希望审阅差异仅包含我对主题分支的更改,而不包括同时发生的大量代码.
这可能吗?如果git无法处理这样的"差异聚合",我会非常感谢有人可以提供一些关于外部命令如何做到这一点的指针(这样我就可以尝试编写一个bash脚本来完成这个技巧).
我看看你什么时候使用git rebase而不是git merge? .
但我想确定在这种情况下选择哪种解决方案:
我想实现一个新功能,master所以我将它分支到一个新的功能分支.
我在功能上做了10次提交,而其他人在Master上做了其他提交.
我的问题是,如果我想将我的分支与Master分开以进行测试,但我需要使用集成的新Master提交来测试它.那么,我应该将Master合并到Feature(而不是Feature to Master,它会在我的测试之前对master进行修改)或者做一个rebase?
我有这种情况:在一些testBranch上工作一段时间,我想与master同步,所以我做了git checkout testBranch和git merge master/testBranch
所以现在我的分支与master同步,但后来我发现我想撤消合并,问题是合并是用快进完成的,现在我的提交历史与主提交和testBranch提交混合,我不知道如何在我的testBranch上合并之前恢复到状态.
谢谢你的帮助
我正在尝试检查是否可以使用github API将分支合并到另一个分支.有一个属性mergeable的GET /repos/:owner/:repo/pulls/:number,但我并不真的想之前我知道分支可以合并W/O冲突创造一个拉请求.
在github网站上,当创建一个pull请求时,会调用这个地址,这似乎不是一个API方法(它会返回HTML,说明是否可以合并分支).但我仍然可以使用此调用,问题是我不知道"1373893022922"指的是什么.我建议它以某种方式连接到基本分支(newdev3是head).
有任何想法吗?
我有两个git存储库显示如下.第一个结构就像一个典型的python项目.
foo_repo/
.git/
setup.py
foo/
__init__.py
some_code.py
tests/
bar/
.git/
Run Code Online (Sandbox Code Playgroud)
我想将foo_repo/foo/目录bar/作为子树包含在内,我希望能够将更新foo_repo/foo/some_code.py从foo_repo存储库合并到bar,反之亦然.
初始设置不是太糟糕.从foo/我使用的目录:
git subtree --prefix=foo/ split -b export
Run Code Online (Sandbox Code Playgroud)
然后我在foo_repo中有一个新的分支,只有foo_repo/foo/目录的内容.为了把它带到酒吧,我只是去bar/目录和:
git subtree --prefix=foo/ add ../foo_repo/.git export
Run Code Online (Sandbox Code Playgroud)
既然我已经完成了设置,我想做一些代码开发并foo/在两个repos中保持最新.从酒吧推出我想我已经想通了.来自bar/目录:
touch foo/more_code.py
git add foo/more_code.py
git commit -m "more code"
git subtree --prefix=foo/ push ../foo_repo/.git export
Run Code Online (Sandbox Code Playgroud)
然后从foo_repo/目录:
git checkout master
git subtree --prefix=foo/ merge export
Run Code Online (Sandbox Code Playgroud)
合并另一种方式是我被困住的地方.来自foo_repo/:
git checkout master
touch foo/yet_more_code.py
git add foo/yet_more_code.py …Run Code Online (Sandbox Code Playgroud) 是否可以使用Git选择性地将更改从一个分支应用到另一个分支?
更具体地说,我使用devGitHub 的公共分支和master部署的私有分支.当对一个分支进行更改时,它们将需要应用于另一个分支,但是某些代码行需要保持不同.在我的例子中,它是一些css类和一个feed.
我是Git的新手,但我做了我的研究:
git merge --no-commit --no-ff可以使用后跟a git mergetool来选择我想要的冲突.问题是它只适用于冲突Git无法自动合并,所以我想要保持不同的东西在我有机会使用我的mergetool之前被替换.
git difftool --cached 是有用的,因为它可以让我看到差异,但我需要复制我想要保留的内容并手动用文本编辑器替换它,因为我不能简单地选择和保存,就像我可以使用mergetool.
git cherry-pick似乎将指定的提交应用于另一个,但我希望保持不同的可能会分散到不同的提交,这些提交可能不仅包括我想要保持不同的内容.我不能看到这个工作,除非我做了数百万的提交会让我发疯.
另外要明确的是,我不希望一个分支成为另一个分支,合并的情况似乎如此.我想要两个独立的分支,各自的差异,并将变化从一个分支应用到另一个分支.
是否有更好的工作流程可以让我通过应用他们的更改并保持一些差异来保留开发和部署版本?我不介意使用单独的存储库或不同的工具,如果它导致解决方案.
我有一个非常简单的问题.我们已经设置了Gitlab CI,并希望一旦我们的一些分支机构的构建成功,就允许自动合并.
事实是,我们看到构建通过,但合并实际上并没有发生,状态保持"一旦构建成功就自动合并".
你知道为什么吗?
我附上了虚假行为的截图.
编辑:请求的一些其他信息:
谢谢,朱利安
我想知道我是否犯了一个错误,首先将master合并到另一个分支,然后将它合并回master.
假设我创建了以下分支,每个分支都有一个单独的提交:
mkdir git_merging
cd git_merging/
git init
touch on_master
git add .
git commit -m "Initial commit on master"
git checkout -b x
touch on_branch_x
git add .
git commit -m "Initial commit on branch x"
git checkout master
touch on_master_again
git add .
git commit -m "Commit on master after branching"
Run Code Online (Sandbox Code Playgroud)
现在我想合并.通常,我更喜欢先将master合并到x中,然后将x合并到master中:
git checkout x
git merge -m "Merge master into x" master
echo "test results"
git checkout master
git merge x
Run Code Online (Sandbox Code Playgroud)
这样我就可以在合并回master之前测试一些东西,确保我总是有一个正常运行的master分支.据我所知,与将x直接合并到master中相比,没有功能差异:
git merge -m "Merge x …Run Code Online (Sandbox Code Playgroud) git-merge ×10
git ×8
github ×2
aggregation ×1
diff ×1
fast-forward ×1
git-pull ×1
git-rebase ×1
git-subtree ×1
github-api ×1
gitlab ×1
gitlab-ci ×1
kdiff3 ×1
merge ×1
rebase ×1
workflow ×1