Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

git命令 学习 #10

Open
wanCheng7 opened this issue Dec 17, 2019 · 0 comments
Open

git命令 学习 #10

wanCheng7 opened this issue Dec 17, 2019 · 0 comments

Comments

@wanCheng7
Copy link
Owner

wanCheng7 commented Dec 17, 2019

撤回操作

当操作错误覆盖了别人的代码的时候就需要撤回。关于撤回,有两个命令:resetrevert。他们都可以完成撤回的操作,但是作用原理是不同的。

git reset

git reset命令可以回到之前的某一次提交。如果想回到上次提交,可以使用命令:

git reset --hard head

如果是上上次就是head^,多次可以用head~n,例如前五次head~5,或者知道commit id的话可以直接用这个id重置到这次提交:

git reset (复制的commitId)--hard

关于hard这种修饰符可以参考下面的解释,详情查看官网相关参数

--soft 回退后a分支修改的代码被保留并标记为add的状态(git status 是绿色的状态)
--mixed 重置索引,但不重置工作树,更改后的文件标记为未提交(add)的状态。默认操作。
--hard 重置索引和工作树,并且a分支修改的所有文件和中间的提交,没提交的代码都被丢弃了。
--merge 和--hard类似,只不过如果在执行reset命令之前你有改动一些文件并且未提交,merge会保留你的这些修改,hard则不会。【注:如果你的这些修改add过或commit过,merge和hard都将删除你的提交】
--keep 和--hard类似,执行reset之前改动文件如果是a分支修改了的,会提示你修改了相同的文件,不能合并。如果不是a分支修改的文件,会移除缓存区。git status还是可以看到保持了这些修改。

git revert

git revert回到某一次提交的原理是在已有提交记录的最后面新添加一个commit,而这个commit的内容就是目标提交的内容。例如

git revert (复制的commitId)

不同

git reset会改变已有的提交记录,而git revert只是会在已有的提交记录上添加一条提交记录,所以后者是一种相对安全的回退方式。

我们再自己的个人分支上可以使用git reset,在公共分支上最好使用git revert。也可以这样区分,用git revert撤销已经推送的更改,用git reset撤销还没推送的更改。

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant