ref^
是指之前ref
的提交,之后 获取提交ref
怎么样?
例如,如果我git checkout 12345
如何检查下一次提交?
谢谢.
PS是的,git是一个DAG节点指针结构树,无论如何. 如何在此之后找到提交?
假设如下图:
A -- B -- C -- D -- E -- F
\
G -- H -- I
Run Code Online (Sandbox Code Playgroud)
我想找到G
以便能够通过交互式rebase来压缩提交(但仍然在主题分支上保留一个提交),稍后将对其进行检查和合并.我不想仅仅修改整个分支,因为我想保留有分支的信息并将其合并.
(我知道我可以查看历史记录,只使用提交的SHA校验和,但我正在寻找一种方法来实现它,而无需手动挖掘信息或计算提交了多少提交并使用〜来自HEAD那个数字).
编辑:澄清我想要实现的目标:
我想避免这个:
A -- B -- C -- D -- E -- F -- J
\ /
G -- H -- I -- -- -- -
Run Code Online (Sandbox Code Playgroud)
而是有类似的东西:
A -- B -- C -- D -- E -- F -- J
\ /
G' -- -- -- -- -- -- -
Run Code Online (Sandbox Code Playgroud)
换句话说,我想将主题分支上的交互式rebase压缩为一个,但仍保留分支并使用常规合并将主题分支中的更改集成到主分支中.
:
A
T / \
i B C
m : :
e D E
\ /
| F
V :
Run Code Online (Sandbox Code Playgroud)
git merge-base B E
允许查找A
两个提交的共同祖先的位置.有没有办法找到F
两个分支再次合并的提交?
如何在HEAD 之前引用提交?
例如,在 HEAD 后面提交1次的提交是HEAD~1.
相对于HEAD,我如何向相反的方向移动?
基本上,我做了git checkout HEAD~1
3次.现在我想向前推进1次提交,有效地撤消我的最后一次提交git checkout HEAD~1
.我怎样才能做到这一点?
我知道提交的一个分支就像一个单独的链表,每个提交只指向它的父.因此,如果遍历提交的孩子是不合理的,我想知道如何在他们之间进行处理.
在这种情况下:
v HEAD
o--o--o--x--o--o (foo)
/
o--o--o--o--o--o--o (master)
Run Code Online (Sandbox Code Playgroud)
如果我想向后移动一步我输入:
$ git checkout HEAD~1
v HEAD
o--o--o--x--o--o (foo)
/
o--o--o--o--o--o--o (master)
Run Code Online (Sandbox Code Playgroud)
如果我想向前迈出一步,我会带着这个荒谬的命令:
$ git log --pretty=oneline --all | \
grep -B1 `git rev-parse HEAD` | \
head -n1 | egrep -o '[a-f0-9]{20,}' | xargs git checkout
v HEAD
o--o--o--x--o--o (foo)
/
o--o--o--o--o--o--o (master)
Run Code Online (Sandbox Code Playgroud)
我可以做得更好git checkout HEAD+1
吗?
我目前在我的实现~/.gitconfig
是:
[alias]
# Move forward/Backward
fw = "!git log --pretty=oneline --all | grep -B1 `git rev-parse HEAD` | head -n1 | …
Run Code Online (Sandbox Code Playgroud) 我知道如何将父提交称为HEAD^
.
但是是否有可能以类似的方式引用子提交?
说我有一个blob的SHA.我可以去git show并查看blob的内容.是否有可能获得包含该blob的所有提交的列表?
git ×8
git-branch ×2
git-checkout ×2
branch ×1
git-bash ×1
git-commit ×1
git-revision ×1
merge ×1
parent-child ×1