在具有多个分支的git存储库中,是否可以为单个文件快速进行forwad更改?
当我有一个即将发布的版本时,我会在git中保持版本不变,并签出一个新的分支以备将来的工作 有时我知道会有文件冲突,因为我需要在当前(发布)版本和前瞻性分支(原因B)中进行编辑(原因A) 你是不是想告诉git,我在版本发布中对一个文件所做的更改(原因a)可以应用(move.copy,fast fowarded)到新分支中的同一个文件?(当然与原因B的变更合并)在具有多个分支的git存储库中,是否可以为单个文件快速进行forwad更改?,git,Git,当我有一个即将发布的版本时,我会在git中保持版本不变,并签出一个新的分支以备将来的工作 有时我知道会有文件冲突,因为我需要在当前(发布)版本和前瞻性分支(原因B)中进行编辑(原因A) 你是不是想告诉git,我在版本发布中对一个文件所做的更改(原因a)可以应用(move.copy,fast fowarded)到新分支中的同一个文件?(当然与原因B的变更合并) 我希望随后对分支中的文件进行更改(原因现在是C),并且在合并时不会再出现另一个冲突。(特别是对于琐碎的编辑) Git只有在没有冲突的情况下
我希望随后对分支中的文件进行更改(原因现在是C),并且在合并时不会再出现另一个冲突。(特别是对于琐碎的编辑) Git只有在没有冲突的情况下才会快速前进。如果存在冲突,Git将主动拒绝快进,直到冲突得到解决 一般来说,这是为了减少人为错误。您可能认为编辑是微不足道的,但它可能与您在其他分支上所做的其他工作相冲突 如果您注意到Git在警告您这些冲突,那么您的更改就不会像您最初假设的那样琐碎或狭窄 可以这样想:您有master分支和feature分支<代码>功能基于
master
的提示
master
------[]
feature
你在大师身上做些工作,然后推动它
feature master
------[]----------[]
然后,对该特性做一些工作,并将其向上推
master
------[]----------[]
\
\ feature
---------[]
假设您在特性中基于的工作在master中发生了巨大的变化。当然,您将收到一个关于其中合并冲突的通知。Git绝对不会对代码的互操作性做出任何假设;它只检测潜在的冲突并向用户发出警告
如果您希望某个特定版本无论如何都能获胜,那么您可以强制进行合并并将其历史记录指定为胜利者。这是一个危险的操作,所以我恳请您,并确保这是您所需要的。Git只会在没有冲突的情况下快速前进。如果存在冲突,Git将主动拒绝快进,直到冲突得到解决 一般来说,这是为了减少人为错误。您可能认为编辑是微不足道的,但它可能与您在其他分支上所做的其他工作相冲突 如果您注意到Git在警告您这些冲突,那么您的更改就不会像您最初假设的那样琐碎或狭窄 可以这样想:您有master分支和feature分支<代码>功能基于
master
的提示
master
------[]
feature
你在大师身上做些工作,然后推动它
feature master
------[]----------[]
然后,对该特性做一些工作,并将其向上推
master
------[]----------[]
\
\ feature
---------[]
假设您在特性中基于的工作在master中发生了巨大的变化。当然,您将收到一个关于其中合并冲突的通知。Git绝对不会对代码的互操作性做出任何假设;它只检测潜在的冲突并向用户发出警告
如果您希望某个特定版本无论如何都能获胜,那么您可以强制进行合并并将其历史记录指定为胜利者。这是一个危险的操作,因此我恳请您并确保这是您所需要的。对
git
印象深刻,因为它似乎内置了此功能
我正在研究两个分支之间的差异,并找出了如何手动执行此操作。e、 只需创建一个.diff补丁并应用它
git checkout B
git diff ..master path/file.scala > path/file.diff
git apply path/file.diff
请注意,在最后一个命令中,沉默是金色的
所以我已经做好了准备,当我将开发环境(通过一个调用git pull origin master
的脚本)唤醒到当前分支时,它发现并应用了更改。(正如预测的那样,在无法自动应用的情况下,会出现犹豫)
所以我猜答案是
git pull origin BRANCH
,至少在简单的情况下是这样 git给人留下了深刻的印象,因为它似乎内置了这种能力
我正在研究两个分支之间的差异,并找出了如何手动执行此操作。e、 只需创建一个.diff补丁并应用它
git checkout B
git diff ..master path/file.scala > path/file.diff
git apply path/file.diff
请注意,在最后一个命令中,沉默是金色的
所以我已经做好了准备,当我将开发环境(通过一个调用git pull origin master
的脚本)唤醒到当前分支时,它发现并应用了更改。(正如预测的那样,在无法自动应用的情况下,会出现犹豫)
所以我猜答案是
git pull origin BRANCH
,至少在简单的情况下是这样 所以让我直说吧。您有一个发布分支,您需要将您的工作建立在它的基础之上。然后,您希望对发布分支进行更改,并将这些更改向后移植到您先前创建的分支(该分支与发布分支的早期祖先无关)?正确-当我们合并分支时,我知道可能是大规模的-只是看看我们是否能够在那天到来之前,以文件为基础智能地消除一些合并的痛苦。所以让我直说吧。您有一个发布分支,您需要将您的工作建立在它的基础之上。然后,您希望对发布分支进行更改,并将这些更改向后移植到您先前创建的分支(该分支与发布分支的早期祖先无关)?正确-当我们合并分支时,我知道可能是大规模的-只是看看我们是否能够在那一天到来之前,以文件为基础智能地消除一些合并的痛苦。我以前做过合并,并且我很清楚更改相对于其大小的反比例影响:)这个问题是为了明确地看到fi在这种情况下,我会被一个等待客户批准的发布版本搁置在停滞期内,以文件为基础处理此问题的路径