这是我的git日志现在的样子:
git log --topo-order --reverse --pretty=oneline
50d035a5a12db8a0b23f4910a0e387f1ad38524c 0
49c9fef259eb54182da6d70fa0425474accb29e0 3
a1108badac40942296d9c9d734a561a645144914 7
1d7e5ea36224169db465d2e413c36895b02cafea 11
c327029ebf8c442c45aaef090236650b50fb5e47 1
c64fcac8dd676084caacea4e20a0409926be7054 5
1e1f9e389341e4161f2aa8d6f868346d76b21e33 9
e98be40ea2066b65a980de20200f036d2f37b027 2
e5f8dfe7c8bd9d7e02eae85a5c534e2d2db23f4a 6
1439d018ed902b9fde247b8568dc0df1539700e5 10
663f06f969597ddf1a6eeb9ec7921775c7f1bc02 Merge branch 'b'
a9b044cf716d6de969ed0649017bf61cae3e9421 4
b8a76a56c5f29c63b82dd823ec0b5b45abcd655c 8
6c266c5bb7106821b63d7e2ddf09347022f570ac 12
9162a13adb1642f8434d0211cf15bf4ac06b9a4b Merge branch 'd'
a704f3284be8289a50468215a12f5a214ae6ab4f (HEAD -> master,
origin/master, origin/HEAD) Merge branch 'master' into c
我想将此重置为“ 1e1f9e389341e4161f2aa8d6f868346d76b21e33” sha1(从顶部开始的第7次提交)。但是当我这样做时,我丢失了之前发生的其他几次提交。我意识到重置应该删除在给定提交之后发生的所有更改,但是在这种情况下,它也要删除之前发生的更改。
git reset --keep 1e1f9e389341e4161f2aa8d6f868346d76b21e33
git log --topo-order --reverse --pretty=oneline
50d035a5a12db8a0b23f4910a0e387f1ad38524c 0
c327029ebf8c442c45aaef090236650b50fb5e47 1
c64fcac8dd676084caacea4e20a0409926be7054 5
1e1f9e389341e4161f2aa8d6f868346d76b21e33 (HEAD -> master) 9
带有消息“ 3”,“ 7”和“ 11”的提交到哪里去了?我怎么不丢失那些提交?
答案 0 :(得分:1)
由于您在将这些提交merged
提交到主提交之前跳到了某个点,因此这些提交未显示在您的log
中。如果您只是想轻松参考存储库中的提交3
,7
和11
,则可以在以下位置创建tag
或branch
最高的提交(在本例中为11
)。
然后,您需要merge
将其恢复为主节点;或rebase
将它放在master之上(但这会重写提交)。
git tag <tag name> 1d7e5ea36224169db465d2e413c36895b02cafea
或
git branch <branch name> 1d7e5ea36224169db465d2e413c36895b02cafea
您需要将--all
传递给log
命令以查看所有分支。
除了创建branch
或tag
之外,您还可以merge
将11
提交给master。
git merge 1d7e5ea36224169db465d2e413c36895b02cafea