取 push 时,我用的 git diff origin/${branch} HEAD 但是只能去远程分支存在的情况,如果分支是新开的,且要在 push 前的 hook 里拿到 diff,有木有什么命令
另外有没有什么命令能判断一个远程分支是否存在
取 push 时,我用的 git diff origin/${branch} HEAD 但是只能去远程分支存在的情况,如果分支是新开的,且要在 push 前的 hook 里拿到 diff,有木有什么命令
另外有没有什么命令能判断一个远程分支是否存在
|
sagaxuSep 9, 2018 via Android
1
HEAD^
|
|
3
git log branch_name --graph
|
|
wdSep 9, 2018 via iPhone
4
没明白 新开的分支和哪里的 diff ?
|
|
helloSpringBootSep 9, 2018 via Android
6
diff 后面可以接 commit 吧
|
|
7
@az09py 实际上 git 本地和远端的分支可以不同名的,比如本地的 dev 分支可以往远端的 master 分支 push。所以你得说清楚新检出的和远端的什么分支比较,如果是远端的同名分支,那也有可能远端还没有这个分支,那 diff 显示什么呢?
|
|
kanegSep 9, 2018 via iPhone
8
git log <local branch>..<remote branch>
例如:git log master..origin/master |
|
10
本质上所有的操作对象都是某个提交。
你指定分支,指定的是分支头部的提交。 你指定标签,指定的是标签指向的提交。 你指定相对地址,指定的是与当前头部相差一定距离的提交。 你敲这命令的时候,只要搞清楚,这两端你要的是哪两个提交,就行了。 比如你有分支 origin/a,签出到本地 a,提交了一次,叉出了分支 b,又提交了两次。 那么看起来是这样的: Parents -> Commit 1 (origin/a) -> Commit 2 (a) -> Commit 3 -> Commit 4 (b) 那么你如果要看 2 到 4,那就指定 a..b。如果要看 1 到 4,那就是 origin/a..b。如果要看 3 到 4,那就是 b~1..b。 |
|
12
|
|
SoloCompanySep 9, 2018
14
git diff $(git merge-base HEAD $(git branch -r)) HEAD
|
|
15
@SoloCompany 抱歉,没太明白
|
|
17
push 之前,且分支是新开的,没有远程分支的时候
|
|
18
push 之前,且分支是新开的,没有远程分支的 case
|
|
21
@msg7086 是的,主要是这些操作都要放到代码里实现,不通过人工看的。我现在通过正则把分叉点的 commit 拿出来了,不过这个分叉点并不是检出时状态。
|