我是新来的git,并试图了解之间的差异git reset --soft和git reset --mixed.我知道后者重置索引,而前者没有,但我试图理解材料的不同之处:我何时使用一个与另一个?
我已经阅读了这篇Stack Overflow帖子,这似乎表明它mixed有助于在重新提交之前进行一些更改,同时还soft可以简单地重新提交.我正在使用SourceTree,关闭了暂存窗格,并努力想知道为什么会这样; 我不能为我的生活看到任何实际的真正差异.
我能看到的唯一区别是,我重置的新添加的文件显示为添加了软重置,但混合不是这样.但在任何一种情况下,我都可以成功地对新添加的文件进行更改,然后重新提交.当然,我对现有文件所做的任何新更改都会无缝地添加到我当前未提交的更改中,随时可以提交.
我是否必须使用源树的暂存窗格来查看任何实际差异,或者我只是缺少某些东西?要清楚,现在我已经设置了工具,我看到了未提交的更改,我只需一步即可完成.
首先,阅读上面@Ant P建议的链接.
什么是git reset --mixed, - soft和--hard之间的区别?
让我用一些模型来补充这一点.
'git reset'适用于三种不同的东西.
因此,如果您使用两个文件foo.txt和bar.txt创建一个git repo.
在您的第一个修订版中,在每个文件中放入"v1".在您的第二个修订版中,在每个文件中放入"v2".现在,在每个中加上'v3',并执行'git add foo.txt'.
此时,您改变主意,并决定重置为第一个修订版.你最终想进入哪个州?
那你为什么要做git reset --soft?
假设您创建了一个提交,并确定您没有做到正确,并希望在推送之前修复它.(重要!一旦你推动,你想要认为提交是永久性的,或者你会为其他人努力)
您可以进行更改,并执行'git commit --amend'.但这只适用于最后一次提交.或者您可以执行'git rebase --interactive',并对特定提交进行更改,合并提交等.
或者您可以执行'git reset --soft',添加,更改,更新或重置任何文件,直到获得新提交所需的状态,然后将其作为新提交提交.
'git reset --mixed'(或没有--mixed;它是默认值)对于撤消'git add'或'git rm'非常有用.
最重要的是,在我看来,你可能不想在交互式使用中使用--soft.使用它没有任何问题,但'git commit --amend'或'git rebase --interactive'可能是一种更直观的方式来获得你想要的东西.
'git reset --mixed'你会用很多东西.
| 归档时间: |
|
| 查看次数: |
2757 次 |
| 最近记录: |