我们有一个开发分支,它是我们的主人和一个单独的维护分支.当我修复bug时,我经常需要从主服务器到维护服务器进行提交,反之亦然.通常我通过执行以下程序来实现这一目标......
我遇到的问题是因为分支已经变得非常不同我每次切换时都需要重建整个项目,这需要花费10分钟.这是预期的,但我不想这样做,因为我经常在分支机构之间切换.所以为了避免这种情况,我创建了第二个工作目录,以便为每个分支创建一个目录.这个问题是我无法将原始的主提交选择到维护目录中,直到我将该提交从远程提取到维护目录的主分支.当我这样做时,我必须完全重建.
有没有办法将提交拉入我的维护目录的主分支而不切换?或者,有更好的方法完全这样做吗?我们最近从CVS切换到Git,所以我对它并不熟悉.
我有两个文件调用vvn.c,aqu.c
我做了更改vvn.c,我有我的git提交.如何樱桃选择相同的变化aqu.c
唯一的区别是API.
vvn.c 包含API作为 vvn_function_names()
而aqu.c包含API的unions_function_names()
我不知道该怎么做.我知道樱桃采摘到同一个文件.有没有办法做到这一点?
我在git有两个分支,其中一个分支master包含所有提交,另一个分支,例如,release包含来自第一个分支的一些精选提交master。由于提交是在 中精心挑选的release,因此它们具有与 中相应提交不同的提交哈希值master,但提交消息是相同的。
现在我想找到来自 的提交master,这些提交没有被精心挑选到 中release。请注意,由于冲突解决方案,精选提交的代码可能与原始提交不同。我该怎么做?git对此有本机支持吗?
例子:
master分支:
git checkout master
git log --oneline -7
Run Code Online (Sandbox Code Playgroud)
给出
2cba4b1d (HEAD -> master) Message subject for commit 7
f54fc16f Message subject for commit 6
4d871cbd Message subject for commit 5
a83ed44c Message subject for commit 4
48d0fb73 Message subject for commit 3
931da9a6 Message subject for commit 2
8553323b Message subject for commit 1 …Run Code Online (Sandbox Code Playgroud) 在实际执行任何操作之前,有什么方法可以显示“gitcherry-pick”将应用的更改吗?
我希望看到“git diff”类型的更改列表,这些更改将由命令完成,而无需实际进行更改或修改任何内容。
我有一种感觉,我问的是git中无法做到的事情,但我不妨问一下.有什么方法可以做出一个改变并将其提交给所有分支机构吗?例如,假设我想对我的AUTHORS文件或LICENSE文件进行更改.我知道我可以将更改提交到一个分支,然后将其分别挑选到每个分支.但有更简单的方法吗?
给定提交消息"foo",即只有摘要部分,我这样做git cherry-pick -x the_commit.结果是带有消息的新提交
foo现在这不好,因为它是一个两行摘要,这似乎是git中的一个错误.
(cherry picked from commit eb42a6475d2c2e4fff7a1b626ce6e27eec21e886)
但是,如果不手动编辑注释,我如何让git使评论看起来如下?
foo
(cherry picked from commit eb42a6475d2c2e4fff7a1b626ce6e27eec21e886)
我从分支大师开始并开发.我根据开发制作了分支foo.7稍后提交,现在我意识到我希望我从主人那里取消.我可以挑选每个提交,没什么大不了的,但是有一个更流畅的方式吗?
实现这一目标的最简单方法是什么?
从:
--A--B
\
1--2--3
Run Code Online (Sandbox Code Playgroud)
至:
--A--B--2
\
1--3
Run Code Online (Sandbox Code Playgroud)
我无法想出任何简单的方法来实现这一点(少于5步).
在尝试樱桃挑选时,我陷入了一个奇怪的循环中.这就是我的工作,以及问题所在.
我有两个分支:主线和临时.我想从主线到临时选择一个特定的提交.我这样做如下.
git checkout tempgit cherry pick <commit sha>Segmentation fault: 11我从2)重新运行命令,并得到: Unable to create ...git/index.lock': File exists
================================================== ==================
现在我跑了 rm -f ./.git/index.lock
再试一次 git cherry pick <commit sha>
现在我明白了:
错误:以下未跟踪的工作树文件将被merge:myfile.java覆盖
...对于一个甚至不存在的文件.我之前已经拥有它,但我将其重命名,因此该名称下的文件不在存储库中.
git status,现在我在未跟踪文件下看到文件myfile.java.现在它甚至出现在编辑器中.我可以从编辑器中删除它,但不能从git存储库中删除它.我明白了pathspec 'myfile.java' did not match any filescherry-pick然后我回到第3步).这里发生了什么,我怎么才能做我的樱桃挑选?:d
我试图从一个主要是二进制文件的不同分支中挑选一个提交.它看起来大部分都是成功的,除了我得到消息的一个文件:
warning: Cannot merge binary files: XXXX.so (HEAD vs. d8ef550... Add support for 32-bit apk)
error: could not apply d8ef550... Add support for 32-bit apk
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
Run Code Online (Sandbox Code Playgroud)
我可以对该文件进行'git add',但结果并不是我所期待的.我希望它是一个修改,但它结果删除了有问题的文件.我试图挑选的提交修改了一些二进制文件以及删除了一些.
所以,问题是......什么是挑选提交二进制文件的最佳方法?