
小菜鸡一枚 求教一个 git 问题
我用 git merge 合并了两个开发分支,然后获取 LOG 日志文件,通过 sed 处理得到的 merge 的代码变更集清单,此清单中既包括两个分支共同修改过的代码文件,也包括只有被合并分支改过的代码文件,现在我想只获取到公共部分的代码变更集,即在两个分支上都被修改过的文件(无论 git merge 操作是否产生冲突),有什么手段可实现么。
git checkout dev-A git checkout dev-B git merge dev-A &> LOG 示意图如下。
在 stackoverflow 上也提了个问题。 https://stackoverflow.com/questions/60778476/how-can-i-get-the-program-name-list-of-codes-which-changed-both-in-two-branches
LOG :
twd-place: Updating c6157fg..8eceqaa Fast-forward pom.xml | 223 +++++++++++---------- .../auto/srf/place/PlaceAutoServiceImpl.java | 26 ++- .../auto/srf/place/srf_auto_place.xml | 23 ++- twd-head: Updating 082a5cd..cr2dedc Fast-forward pom.xml | 26 +- .../gather/Gather.java | 44 ++- Auto-merging src/main/scripts/TWD.properties CONFLICT (content): Merge conflict in src/main/scripts/TWD.properties Auto-merging src/main/resources/com/twd/head/config/discovery.xml CONFLICT (content): Merge conflict in src/main/resources/com/twd/head/config/discovery.xml LOG :
twd-place: pom.xml .../auto/srf/place/PlaceAutoServiceImpl.java .../auto/srf/place/srf_auto_place.xml twd-head: pom.xml .../gather/Gather.java src/main/scripts/TWD.properties src/main/resources/com/twd/head/config/discovery.xml 比如.../auto/srf/place/PlaceAutoServiceImpl.java 这个文件是只在 dev-A 分支上做了修改,dev-B 分支上没有修改,我就需要在清单里把它删除,只留下两个分支上都修改过的程序文件名称。
1 momocraft 2020-03-21 12:25:14 +08:00 **获取文件** 是什么意思 文件名? grep -f <(git diff --name-only BASE dev-A) <(git diff --name-only BASE dev-B) 这样可吗? |
2 Cink OP 这个是我 LOG 日志的内容,我会用 sed 来处理 --- `LOG` : ``` twd-place: Updating c6157fg..8eceqaa Fast-forward pom.xml | 223 +++++++++++---------- .../auto/srf/place/PlaceAutoServiceImpl.java | 26 ++- .../auto/srf/place/srf_auto_place.xml | 23 ++- twd-head: Updating 082a5cd..cr2dedc Fast-forward pom.xml | 26 +- .../gather/Gather.java | 44 ++- Auto-merging src/main/scripts/TWD.properties CONFLICT (content): Merge conflict in src/main/scripts/TWD.properties Auto-merging src/main/resources/com/twd/head/config/discovery.xml CONFLICT (content): Merge conflict in src/main/resources/com/twd/head/config/discovery.xml ``` --- 处理完以后会是这样的内容,就是我需要的程序变更清单了。 --- `LOG` : ``` twd-place: pom.xml .../auto/srf/place/PlaceAutoServiceImpl.java .../auto/srf/place/srf_auto_place.xml twd-head: pom.xml .../gather/Gather.java src/main/scripts/TWD.properties src/main/resources/com/twd/head/config/discovery.xml ``` --- 比如.../auto/srf/place/PlaceAutoServiceImpl.java 这个文件是只在 dev-A 分支上做了修改,dev-B 分支上没有修改,我就需要在清单里把它删除,只留下两个分支上都修改过的程序文件名称。 |
4 Cink OP 。。。 |