首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在合并期间忽略版本更改

在合并期间忽略版本更改
EN

Stack Overflow用户
提问于 2016-08-22 19:07:46
回答 1查看 604关注 0票数 0

展示

这是我经常遇到的情况。我们的团队在发布分支中所做的第一件事就是从版本中删除-SNAPSHOT后缀。我们在必要的时候做任何最后的改变,有时这包括做一些重大的改变。我在下面做了一个同样的git日志显示了这个。(在问题的末尾,会显示一个更详细的日志,以帮助更好地解释。)

代码语言:javascript
复制
* ea88c23 (release/1.0.0) Fix an embarrasing bug
* 5fe35e1 Drop SNAPSHOT in prep for release
| * 34433c6 (HEAD -> master) Add important features
| * fe41d3b Bump version to 1.1.0-SNAPSHOT
|/
* 8dcfc4f Add greet feature
* 0337c4c Bump version to 1.0.0-SNAPSHOT
* 775277d Inital commit

本质上,所发生的是

  1. 工程正在进行中
  2. 一个释放分支被切断
  3. 并行..。
    • 版本在发布分支上更改
    • 在活动开发分支上更改了版本

  1. 平行继续..。
    • 一个bug被固定在发布分支上。
    • 在活动开发分支上添加了一个特性。

问题

现在,如何将这些更改从发布分支(release/1.0.0)分支干净地返回到active development分支(master) --下面有几个潜在的解决方案,没有一个是非常有利的。

朴素方法

代码语言:javascript
复制
git checkout master
git merge release/1.0.0
# Fix conflicts manually

请记住,此示例简化为少量提交,并且版本仅位于单个文件中,但实际上可能会有许多更改和许多文件与版本一起使用;正因为如此,将release/1.0.0合并到master和修复版本更改引起的冲突的天真方法要困难得多,也更烦人。

稍微不那么天真

代码语言:javascript
复制
git checkout master
git merge release/1.0.0
git checkout --ours */pom.xml

如果POM文件中的所有更改都是版本,那么它是可以的,但这是危险的,因为pom文件中除了版本之外还有其他更改。当然,为了安全起见,您可以在git diff之前执行git checkout --ours */pom.xml,但这仍然很烦人。

采樱桃

我不完全明白如何采摘樱桃,但我明白它的作用。这种方法的一个好处是,很容易忽略你总是不想要的一个提交,但一个缺点是你最终得到了很多额外的提交,这不一定是坏的,但看起来很糟糕。

也许这是最好的方法,我只是无缘无故地紧张。似乎有时候你会发现一个问题(不管是出于什么原因),然后找出它对事情有影响的地方,但是如果它是采樱桃的(或者是樱桃的),那么你可能会错过一些地方。

富勒测井

代码语言:javascript
复制
* ea88c23 (release/1.0.0) Fix an embarrasing bug
| diff --git a/file b/file
| index e98206a..8ab686e 100644
| --- a/file
| +++ b/file
| @@ -1 +1 @@
| -Hell, World!
| +Hello, World!
* 5fe35e1 Drop SNAPSHOT in prep for release
| diff --git a/pom.xml b/pom.xml
| index f755149..3eefcb9 100644
| --- a/pom.xml
| +++ b/pom.xml
| @@ -1 +1 @@
| -1.0.0-SNAPSHOT
| +1.0.0
| * 34433c6 (HEAD -> master) Add important features
| | diff --git a/file2 b/file2
| | new file mode 100644
| | index 0000000..e6afbe7
| | --- /dev/null
| | +++ b/file2
| | @@ -0,0 +1 @@
| | +Import features
| * fe41d3b Bump version to 1.1.0-SNAPSHOT
|/
|   diff --git a/pom.xml b/pom.xml
|   index f755149..5902d52 100644
|   --- a/pom.xml
|   +++ b/pom.xml
|   @@ -1 +1 @@
|   -1.0.0-SNAPSHOT
|   +1.1.0-SNAPSHOT
* 8dcfc4f Add greet feature
| diff --git a/file b/file
| new file mode 100644
| index 0000000..e98206a
| --- /dev/null
| +++ b/file
| @@ -0,0 +1 @@
| +Hell, World!
* 0337c4c Bump version to 1.0.0-SNAPSHOT
| diff --git a/pom.xml b/pom.xml
| new file mode 100644
| index 0000000..f755149
| --- /dev/null
| +++ b/pom.xml
| @@ -0,0 +1 @@
| +1.0.0-SNAPSHOT
* 775277d Inital commit
  diff --git a/.gitattributes b/.gitattributes
  new file mode 100644
  index 0000000..176a458
  --- /dev/null
  +++ b/.gitattributes
  @@ -0,0 +1 @@
  +* text=auto
  diff --git a/.gitignore b/.gitignore
  new file mode 100644
  index 0000000..e69de29
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-22 19:07:46

这似乎经常发生,我在写问题的时候找到了一个解决办法。

在日志片段5fe35e1中,我们不希望在master中提交,它会给我们带来问题。

* ea88c23 (Release1.0.0)修复一个令人尴尬的bug * 5fe35e1删除快照,用于准备发布的prep * 34433c6 ( ->主版)向1.1.0添加重要的特性* fe41d3b Bump版本到1.1.0-快照/* 8dcfc4f添加功能* 0337c4c Bump版本到1.0.0-快照* 775277d

我们把它处理掉吧!

代码语言:javascript
复制
git checkout release/1.0.0
git checkout -b port-to-1.1.0
git revert 5fe35e1
# Now port-to-1.1.0 has all the changes we want and none of the ones we don't
git checkout master
git merge port-to-1.1.0

您可能仍然有冲突,但您将不会有任何碰撞版本。这种方法可以用来“摆脱”任何你不想要的提交。您的日志现在如下所示。记住,恢复并不会删除提交本身,它只是取消单个提交所带来的所有更改。您可以在下面看到5fe35e1仍然存在。

代码语言:javascript
复制
*   6683b44 (HEAD -> master) Merge branch 'port-to-1.1.0'
|\
| * 81e9bf5 (port-to-1.1.0) Revert "Drop SNAPSHOT in prep for release"
| * ea88c23 (release/1.0.0) Fix an embarrasing bug
| * 5fe35e1 Drop SNAPSHOT in prep for release
* | 34433c6 Add important features
* | fe41d3b Bump version to 1.1.0-SNAPSHOT
|/
* 8dcfc4f Add greet feature
* 0337c4c Bump version to 1.0.0-SNAPSHOT
* 775277d Inital commit
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39087014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档