reset(版本撤回)

git reset 命令用于回退版本,可以指定退回某一次提交的版本。

git reset 命令语法格式如下:

git reset [--soft | --mixed | --hard] [HEAD]

–mixed

–mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。

git reset HEAD^            # 回退所有内容到上一个版本  
git reset HEAD^ hello.php  # 回退 hello.php 文件的版本到上一个版本  
git reset  052e					 	 # 回退到指定版本

–soft

回退到上上上一个版本,保留commit中的提交内容

git reset --soft HEAD~3 

–hard

回退到上一个版本,撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交

git reset --hard HEAD~^
git reset --hard origin/master    # 将本地的状态回退到和远程的一样 

注意:谨慎使用 –hard 参数,它会删除回退点之前的所有信息。

HEAD 说明:

  • HEAD 表示当前版本
  • HEAD^ 上一个版本
  • HEAD^^ 上上一个版本
  • HEAD^^^ 上上上一个版本
  • 以此类推…

可以使用 ~数字表示

  • HEAD~0 表示当前版本
  • HEAD~1 上一个版本
  • HEAD^2 上上一个版本
  • HEAD^3 上上上一个版本
  • 以此类推…

revert(撤消操作)

git revert 操作是将选择的某一次提交记录 重做,若之后又有提交,提交记录还存在,只是将指定提交的代码给清除掉。

git revert 052e					 	 # 重做到指定版本

冲突的相关操作

  • 在git操作过程中,最不想看到的一种情况就是冲突,但是,冲突就是一个狗皮膏药,永远避免不了,revert也跑不了这个魔咒,那么我们改怎么处理这个情况

合并冲突后退出

git revert --abort
  • 当前的操作会回到指令执行之前。

合并后退出,但是保留变化

git revert --quit
  • 该指令会保留

合并后解决冲突,继续操作

  • 如果遇到冲突可以修改冲突,然后重新提交相关信息
git add .
git commit -m "提交的信息"

stash(存储)

save

执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。

git stash save "save message"

list

查看stash了哪些存储

git stash list

show

显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}

git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p

git stash show

git stash show stash@{1} -p

apply

应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}

git stash apply

git stash apply stash@{1}

pop

命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num},比如应用并删除第二个:git stash pop stash@{1}

git stash pop

git stash pop stash@{1}

drop

丢弃stash@{$num}存储,从列表中删除这个存储

git stash drop stash@{$num}

clear

删除所有缓存的stash

git stash clear

commit(提交)

amend

修改最近一次 commit 信息,修改之后需要强制提交 -f

git commit --amend

-m

-m 添加提交备注信息

git commit -m [message]

-a

-a 参数设置修改文件后不需要执行 git add 命令,直接来提交

git commit -a

结合一下

git commit -am '修改 hello.php 文件'