如何使用git

时间:2018-12-19 06:22:13

标签: git

这是一个有关我在使用git时发现的特殊情况的问题。

说我有一个具有master分支的应用程序(当然有几次提交)。该应用程序正在运行。

然后我决定翻译(例如,实际的事情并不那么重要)代码中的注释,因此我创建了一个名为 translation 的分支,然后开始翻译所有内容。我犯了几次。

然后我意识到存在一个错误(与翻译无关的不相关)。我当然可以修复该错误,但是使用git 进行的正确方法是什么?

(考虑到此修补程序必须同时适用于主版本和翻译版本,但是主版本不必翻译任何内容(因此我想不合并吗?)

我可以想到两种可能性:

1)进入master,创建一个fix分支,修复bug并提交。然后去翻译,然后...。糟糕...我也不知道该如何“复制”该问题

2)翻译和合并中正确吗? (但话又说回来,我不能合并翻译部分?)

4 个答案:

答案 0 :(得分:1)

1)是修补程序策略。您将补丁提交到主服务器中,然后在需要/需要的地方选择该提交。

2)显然不是面向git的,并且容易出错

现有3)替代方法。您可以将修复程序注入翻译的历史记录中。怎么样 ?您的翻译基于大师,对吗?因此您可以在master上提交,然后将翻译分支重新建立在master之上。就像分支翻译时已经包含此修复程序一样。缺点:这将重写翻译的历史记录,因此,如果翻译是本地分支,则更好。如果不是,您将不得不强行推分支,这远非理想(如果您不确切知道自己在做什么)。 EDIT 缺点2:除此之外,3)意味着可能包括您在修订之前在master分支历史记录中插入的其他提交(在翻译分支中可能是不需要的)。

答案 1 :(得分:0)

我建议您的第一个建议,即回到master并在那里修复错误。假定该错误与注释的翻译无关,而可能与注释的翻译无关。

然后,您可以rebasemaster上进行翻译分支,以引入错误修复,然后再准备将此功能分支合并回master。您可能会遇到很多合并冲突,因为所有翻译都发生了变化。但是,在那种情况下,即使您完全忽略该错误修复,也可能会遇到相同的冲突。

答案 2 :(得分:0)

最好的方法就像1)

开始掌握,创建一个修正分支,修正错误并提交。然后将其合并为master,然后将master合并为 translation 分支

如果只需要 translation 分支的修补程序,则可以cherry-pick将提交提交到分支。

答案 3 :(得分:0)

尝试此方法:

  1. 查看引入了该错误的提交,但是很久以前

    git checkout -b fixthatbug $thatcommit
    
  2. 修复错误并提交
  3. 在需要合并的地方合并错误修正