我希望拆分提交,不知道要使用哪个重置选项。
我在看页面你能解释一下“git reset”用简单的英语做什么吗? ,但我意识到我并不真正理解git索引或临时区域是什么,因此解释没有帮助。
另外,-- --mixed
和--soft
的用例在我的回答中看起来是一样的(当你想要修复和重新发送时。)有人可以将它分解得更多吗? 我意识到 - --mixed
可能是选择,但我想知道为什么 。 最后,怎么样 - --hard
?
有人能给我一个如何选择3个选项的工作流程示例吗?
#1楼
以下是TortoiseGit用户的基本说明:
git reset --soft
和--mixed
保持您的文件不变。
git reset --hard
实际上会更改您的文件以匹配您重置的提交。
在TortoiseGit, 该指数的概念是非常受GUI隐藏。 修改文件时,不必运行git add
将更改git add
到暂存区/索引。 当简单地处理对不改变文件名的现有文件的修改时, git reset --soft
和--mixed
是相同的! 如果添加新文件或重命名文件,您只会注意到不同之处。 在这种情况下,如果运行git reset --mixed,则必须从“ 未版本化的文件”列表中重新添加文件。
#2楼
请注意,这是一个简化的解释,旨在作为了解这一复杂功能的第一步。
对于想要在每个命令之后可视化项目状态的视觉学习者可能会有所帮助:
对于那些使用打开颜色的终端的人(git config --global color.ui auto):
git reset --soft A
你会看到B和C的东西是绿色的(上演并准备提交)
git reset --mixed A
(或git reset A
),你会看到B和C的东西是红色的(未分阶段,准备上演(绿色),然后提交)
git reset --hard A
你将不会再看到B和C的变化(就好像它们从未存在过)
或者对于那些使用像'Tower'或'SourceTree'这样的GUI程序的人
git reset --soft A
,你会在'staged files'区域看到B和C的东西准备提交
git reset --mixed A
(或git reset A
),你会在'unstaged files'区域看到B和C的东西,准备移动到staged然后提交
git reset --hard A
你将不会再看到B和C的变化(就好像它们从未存在过)
#3楼
修改存储库中的文件时,更改最初是未分级的。 为了提交它,你必须进行它 - 也就是说,使用git add
将它添加到索引中。 进行提交时,提交的更改是已添加到索引的更改。
git reset