赞
踩
欢迎关注 『发现你走远了』 博客,持续更新中
欢迎关注 『发现你走远了』 博客,持续更新中
自从通过ide插件去实现之后 git命令统统忘光了~
但是面试要求会考`还是记录一下吧~
我们修改了txt的内容并进行一次提交
git add .
git commit
然后再次修改txt
可以发现此时因为没有add,出现了被追踪但是没有提交的文件红色警告
git status
查看提交历史看到确实增加了提交历史总共有3次,第一次是一开始时候的默认提交,第二次提交的哈希值100c6c8ce803b4067f65f7fb13a2723ee30db16c
git log
保留工作目录和暂存区的修改,将 HEAD 指向指定的提交,相当于取消提交并将更改放回暂存区。(撤销了commit,但是没有撤销add,此时你可以直接commit提交)
根据哈希值还原到第二次的提交文件,这里的commit是哈希值,因为我们这从第3次提交回退到第2次提交,是回退到上一个版本,所以可以HEAD^1代表哈希值
git reset --soft <commit>
git reset --soft 100c6c8ce803b4067f65f7fb13a2723ee30db16c
git reset --soft HEAD^1
可以看到此时的txt内容不变仍然是我们提交之前的,但是git log会发现第三次提交没了.
也就是说,你回到了你第三次提交之前,回退了add和commit的命令
默认行为,保留工作目录的修改,但不会保留暂存区的修改,将 HEAD 指向指定的提交,相当于取消提交并将更改放回工作目录。(撤销了add和commit,下次提交你需要add后才能commit)
git reset --mixed <commit>
或
git reset <commit>
git reset --mixed HEAD^1
重设 HEAD 到指定提交,并丢弃工作目录和暂存区中的所有修改,慎用,会永久丢失未提交的修改。
(回退add回退commit并且回到上次刚刚提交后的状态,放弃了所有修改,慎用)
git reset --hard <commit>
git reset --merge <commit>
用于取消一个合并,并将 HEAD 指向合并前的状态。
git reset --merge 的作用包括:
类似于 --hard,但会保留未提交的本地修改。
当使用 git reset --keep 命令时,版本库会回退到指定的提交,同时清空暂存区,并且会根据情况保留或重置工作目录中的文件状态。
如果工作区中的文件在当前版本和回退版本之间没有发生过变动,那么工作区的修改将被保留,不会受影响。
git reset --keep <commit>
git reset --keep HEAD^1
可以发现此时的版本回退了,但是文件内容改为了原来的,git log后发现第三次提交没有了,并且可以直接commit无需add
如果工作区中的文件在当前版本和回退版本之间有发生过变动,并且工作区也进行了修改,那么需要手动合并这些变动或解决可能出现的冲突。
在我们执行keep之前先修改了txt的内容,就会有如下报错,提示合并冲突
大家喜欢的话,给个
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。