你什么时候使用git reset --soft?我一直使用git reset --hard但似乎从来没有找到使用git reset --soft的情况。
答案 0 :(得分:2)
哎呀,我不是故意要现在承诺。
git reset --soft HEAD^
(我倾向于默认为--mixed
,但它非常接近。)
答案 1 :(得分:2)
首先,它可以让你将提交压缩在一起。在我们处理某些事情时,让我们进行三次临时提交:
... change files ...
git commit -m 'Temporary 1'
... change files ...
git commit -m 'Temporary 2'
... change files ...
git commit -m 'Temporary 3'
这给了我们这样的历史:
A ---> T1 ---> T2 ---> T3
^master
好的,现在这些更改已经准备好了,但我想将它们压缩成一个提交,因为它们包含一个逻辑更改。
git reset --soft HEAD~3
这给了我们这样的历史:
A ---> T1 ---> T2 ---> T3
^master
但索引(要提交的更改)包含T3的所有内容。请注意,T1-T3是孤立的。
git commit -m 'Full commit message'
现在我们有了这个:
A ---> T1 ---> T2 ---> T3
\
--> B
^master
B和T3具有相同的内容,但历史不同。
git commit --amend
可以用git reset
重写,至少在简单的情况下:
git commit --amend
通常与......相同。
git reset --soft 'HEAD^'
git commit
答案 2 :(得分:0)
虽然有几个开发人员同时在同一个git存储库上工作,但当有人要求你查看他们的PR(Pull Request)时,这是很常见的。
这经常发生在我身上。当我有未提交的WIP(正在进行中)时,必须从我的功能分支切换到PR分支有点痛苦。
我曾经使用git stash
,但现在我使用git reset --soft
。
当有人要我查看他们的PR时,这就是流程的样子
git commit -m 'WIP whatever' # instead of git stash
git checkout develop
git pull
git checkout pr-branch
然后,在GitHub中查看和合并后......
git checkout my-branch
git rebase develop # to sync my feature branch
git log # to see which commit hash was the one from the PR
git reset --soft 2cf4332 # resets from my WIP commits
# to the PR commit.
我写了一篇关于这个主题的博客文章。