在我的实验中,我无法找到两者之间的任何功能差异
git reset --hard
和
git reset --merge
使用说明也没有给出任何提示
--hard reset HEAD, index and working tree
--merge reset HEAD, index and working tree
我经常使用这个--hard
选项,所以了解它是如何工作的。--merge
选项和选项有什么区别--hard
?
干杯,奥利
也许一个例子在这里会有所帮助,让我们使用以下序列:
cd git_repo
touch file_one
git add file_one
git commit -m "commit one" # sha1 of 123abc
echo "one" >> ./file_one
git commit -a -m "commit two" # sha1 of 234bcd
echo "two" >> ./file_one
git add . # populate index with a change
echo "three" >> ./file_one # populate working area with a change
现在如果我尝试
git reset --merge 123abc
我明白了
error: Entry 'file_one' not uptodate. Cannot merge.
fatal: Could not reset index file to revision '123abc'
原因是 file_one 在工作区和索引中都有变化
为了解决这个问题,我做
git add .
git reset --merge 123abc
这次它有效,但是,我得到与git reset --hard
. 索引为空,工作区为空,file_one 为空,就像第一次提交后一样。
有人可以提出说明差异的步骤吗?