相关疑难解决方法(0)

git:将一个repo中commit提交的更改应用到另一个repo

我有一个repo1repo2本地机器上.它们非常相似,但后者是某种其他分支(repo1不再维护).

/path/to/repo1 $ git log HEAD~5..HEAD~4
<some_sha> Add: Introduce feature X
Run Code Online (Sandbox Code Playgroud)

如何应用commit提交<some_sha>repo1更改repo2

我需要准备一些补丁,还是可以cherry-pick在回购之间做一些补丁?

如何做同样但提交范围?

git

107
推荐指数
4
解决办法
5万
查看次数

git与重命名的文件合并

我有一个大型网站,我正在进入一个新的框架,并在此过程中添加git.当前站点没有任何版本控制.

我开始将网站复制到一个新的git存储库.我创建了一个新的分支,并进行了使其与新框架一起工作所需的所有更改.其中一个步骤是更改所有页面的文件扩展名.

现在,在我一直在处理新站点的时候,已经对旧站点上的文件进行了更改.所以我切换到master并复制了所有这些更改.

问题是当我将分支与新框架合并回主服务器时,在主分支上更改的每个文件都存在冲突.

我不会担心它,但有几百个文件有变化.我曾尝试git rebasegit rebase --merge没有运气.

如何在不处理每个文件的情况下合并这两个分支?

git

45
推荐指数
4
解决办法
3万
查看次数

如何让git正确合并移动的内容(不仅仅是文件)

我目前正在研究git的很多内容跟踪功能.很高兴知道git允许我找出已经从一个文件移动到另一个文件的代码,但是我想知道在合并中进行冲突解决时这个功能是如何可用的.

这是场景:

我有两个文件hello.ccbye.cc创建.我启动一个分支topic并将一些代码移动hello.ccbye.cc.如果我现在这样做,git blame -C bye.cc我可以看到这段代码最初来自hello.cc哪个很好知道.但是现在我切换到没有移动内容的原始分支,并更改了hello.cc在另一个提交中移动的部分中的一些代码.如果我现在这样做,git merge topic我会发生冲突hello.cc.但是,除非我使用diff3样式(我通常会使用它),但我只能看到此方法已从hello.cc其他分支中删除,但后来没有更改过.什么是好的也会发生冲突,bye.cc因为有必要检查是否必须将其他分支的更改重新应用到代码中.这有点可能吗?

我知道我可以手动弄清楚,代码已被移动了git blame --reverse -C topic....然而,对于一个我花了很长时间来弄清楚这种可能性,其他大多数人可能都不知道它.第二,我很懒,可能会忘记代码可能已被移动.此外,当代码被移动到多个文件时,我不确定这是否有效.

您可以通过什么方式保持这种情况尽可能安全?

编辑:

我刚刚发现,它git blame --reverse -C hello.cc $(git merge-base HEAD topic)..topic也可以找出内容的移动位置.如果我正确理解git,这可能更快,因为它不会完整搜索完整存储库中的内容.

编辑:

我上传了我用来玩github的存储库,所以你可以自己尝试合并.我移动函数的提交位于主题分支中.在分支的HEAD中在master中更改相同函数的提交merge_here.在master中有一个额外的提交,我正在玩其他一些合并技术,你应该忽略这个问题.

git git-merge git-branch

11
推荐指数
1
解决办法
3752
查看次数

git如何处理合并移动到不同文件的代码?

假设我在文件A中有函数X,我想将该函数移动到文件B.同时,其他人对文件A中的函数X进行了更改.

合并这两个变化时git是否做了什么特别的事情?它是否会识别相同的功能被移动到文件B并在那里应用更改?或者我们最终会丢失更改或在文件A和B中有两个相同功能的副本?

我发现的关于在git中移动代码的大多数文章主要是指重命名整个文件而不是文件内的代码块.我发现的最接近的是来自内核陷阱的Linus:

当使用git时,整个'保持代码移动与更改分开'有一个更基本的原因:git可以跟踪代码移动(再次,无论是移动整个文件还是只移动文件之间的函数),并做一个'git blame - C'实际上将遵循文件之间的代码移动.它通过相似性分析来做到这一点,但它确实意味着如果你同时移动代码改变它,git就看不到'哦,那个函数最初来自那个其他文件',现在你得到更糟糕的注释代码实际来自哪里.

所以看起来git会认识到代码被移动到其他地方,但并没有真正说明合并期间会发生什么.

git

10
推荐指数
2
解决办法
4219
查看次数

如何在git中提交当前头之间的差异?

我正在参与我参与的项目的一些主题分支.我通常在提出拉取请求之前重新分支我的分支.然而,这一次,由于主人的变化,变基是一个很大的痛苦.很多冲突,更糟糕的是,在手动合并提交之后看起来只是丑陋而且松散了他们的观点.我肯定更喜欢在我的分支头和两个分支上的最新提交之间获得差异,然后将这个差异应用于主人的头部,最后创建全新的闪亮提交git add -p.所以我的问题是:如何实现它?一种可能性是简单地将master合并到我的主题分支中,但是有更优雅的解决方案吗?我相信是的.

谢谢你的帮助.

编辑:

一个文件已在主分支上移动,我的提交正在改变此文件(使用它的旧名称).

git git-diff git-merge

4
推荐指数
2
解决办法
3169
查看次数

标签 统计

git ×5

git-merge ×2

git-branch ×1

git-diff ×1