- 主题:请教大家一个git的使用技巧
rt
目前我是开发一个大的feature,但一次commit肯定是做不完的。
我新建了一个自己的branch,叫 myBranch
然后会merge到 develop branch上,然后部署测试,测出问题,继续在 myBranch修改,继续merge继续测。
现在问题来了:我不断的从myBranch merge到 develop,每次提交的PR,都会看见之前的commit记录,最新提交的commit仅仅是众多commit的末尾一个,review的人 file compare的时候,把之前的file的改动都看到。
如果想让review的人清净点,就看到本次的改动,那么我需要每次重新新建一个 branch,但我觉得太麻烦,毕竟没有正式的release,这些改动都不对应具体的bug。而且将来通过一个PR就能看到我为这个feature做出的所有的改动,也是非常必要的。
这个问题大家会不会也经常会遇到?大家都是怎么解决的?
谢谢
--
FROM 120.244.236.*
你好,比如我前十次commit一共修改了100个文件
我合并成1个commit了
当我第十一次在同一个myBranch里向develop提交一个新的PR,里面只修改了1个文件,那么reviewer看到的,还是包含了前面修改的 100 个文件的修改。这对他们非常不友好。
除非我再新建一个分支 myBranch1,这样是可以的,但是一个feature,就分散在多个PR当中了。
不知道你是如何处理这类问题的?
【 在 woshidashu 的大作中提到: 】
: 提交前压缩一下commit,同一个功能的可以压缩成一个commit
: IDEA-git-squash
: 不知道是不是你想要的
: ...................
--
FROM 120.244.236.*
我以前也是和你一样认为的
但最近做实验才发现:
除非你新建一个全新的branch,否则你一直复用之前的branch,commit新的PR,那么reviewer看到的是这个branch曾经修改过的所有的记录。我最新的commit仅仅是在所有commit的末尾一个。
不知道你明白我的意思没有。
【 在 eric8888 的大作中提到: 】
: 第一次的100个修改review完了之后并且PR merge了之后,再commit就可以提一个新的PR了啊,新PR应该只会包含当前commit的内容。
--
FROM 120.244.236.*
我为了这个feature,连续不断的从myBranch commit PR到 develop上。
但是文件越来越多之后,reviewer很难看清楚我最近的commit是修改了哪些文件,除非他点击进入这个PR的最后一次commit,否则直接从PR的compare files里是看到 myBranch到develop的所有的修改记录,包括以前commit的文件。
这样github有这样的功能也是有意义的。将来我只需要一份PR link,我就能看到我这个feature对应的所有代码。
但是目前开发的过程中,确实给reviewer造成麻烦。
【 在 remind423 的大作中提到: 】
: 你是想把从myBranch合并到develop上的commit都合并为一个commit,这些commit中间夹杂了其他feature的commit对吧
--
FROM 120.244.236.*
我们现在的pipeline逻辑必须进入develop分支才能自动部署到 dev 环境。我只有在dev环境测试才能发现新的问题,于是又进行新一次的修改。
【 在 irroy 的大作中提到: 】
: 怎么感觉应该弄一个远程分支myBranch?然后再远程分支上测试,
: 最终没有问题之后,dev-merge-myBranch, --squash,
: 然后发送review申请提交到dev。
: ...................
--
FROM 120.244.236.*
关键的问题是:我这个分支,myBranch已经修改了太多次了
接下来的每次从myBranch下提交commit,PR都会看到之前的commit的文件修改。
是不是github能有什么开关呢?这次PR只显示最近一次commit的修改?
【 在 SlO 的大作中提到: 】
: rebase。
: 就好比你的分支一开始从主干较低的位置长出来,后来主干又长高了,你把你的分支砍下来,然后把这个分支接到树干的顶端。你的分支还是你的分支,只是位置不一样了。这样review的人就可以仅仅看到你的分支修改。
--
FROM 120.244.236.*
每次我提交新的申请的时候,我当然不想让人看见我之前的文件的修改。
但是我需要等我这个大feature做完了之后,我用一个统一的PR的link,就能给大家看到我所有的曾经的修改。这样别人参照我的代码可以做他的feature。
如果我给后来人一堆PR,别人会看不过来,很晕。
【 在 nikezhang 的大作中提到: 】
: 你到底是不想让人看到你之前的文件修改还是不想让人看见?前面你的描述是想让人看见,现在成了不想让人看见?
--
FROM 120.244.236.*
我的需求是:
1:等我这个feature完成之后,我想用一个PR link,就能展示我所有的修改,以供后来人参考。
2:开发的过程中,每次commit,我想让reviewer 只看到最新一个commit的修改
而这两个需求确实有矛盾的地方。但大家都是怎么解决的呢?
难得大家都没有我这样的需求吗?
我觉得这个需求是很常见的呀
【 在 SlO 的大作中提到: 】
: 那就不好办了。
: 试试cherrypick,只把你的修改提出来。不过有可能会有冲突。
--
FROM 120.244.236.*
知道了,所以我现在遇到的问题是源自公司的系统问题
因为我们很多问题,只有merge到了dev branch之后,才能部署,才能测出问题来。
自己的私有分支是不能进入dev测试环境的,只能本机测试。
【 在 webhost 的大作中提到: 】
: 先分多个commit,每次提交前要先rebase,不然就像你说的,最新提交会包含所有(上次rebase前的)历史提交。
: 最后功能做完,squash成一个pr合并到主分支。
: 假设dev是大家都在上功能的分支,那么你还需要一个临时的review分支,以及一个用于修改代码的工作分支。
--
修改:feed FROM 120.244.236.*
FROM 120.244.236.*
为什么大家都不停的问我这个问题?
这和我要问的是两个问题啊
我在本地rebase了之后,重新提交一个新的commit,reviewer还是会看到我过去所有修改的文件啊!除非我新建一个branch,去commit
【 在 nikezhang 的大作中提到: 】
: 所以你在本地只commit,等本地测试好了再rebase再push再merge过去不就行了?你不会是本地commit一次就push一次吧
--
FROM 1.119.174.*