你什么时候使用git reset --soft?

时间:2015-07-31 22:07:46

标签: git git-reset

你什么时候使用git reset --soft?我一直使用git reset --hard但似乎从来没有找到使用git reset --soft的情况。

3 个答案:

答案 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.

我写了一篇关于这个主题的博客文章。

https://medium.com/@Cuadraman/how-to-deal-with-github-prs-while-working-on-your-feature-branch-f56ef829efcd#.kxnabannq