1.撤销操作
1.1 修改上一次的提交(commit)-- git commit --amend
有时候我们在提交完成之后才发现有几个文件没有提交,或者发现提交信息填写错了,这时候可以使用 git commit --amend 尝试重新进行提交。
1.这条命令会将暂存区中的文件进行提交
2.在提交的时候可以修改上一次commit的提交信息
3.最终只有一次commit,第二次的commit会替代第一次的commit(也就是只会产生一个commit节点,使用 git log 会看到上一次的commit不见了,被这次的新commit替换)
1.2 取消暂存的文件 -- git reset HEAD <filename>
使用 git reset HEAD <filename> 可以将暂存的文件变为未暂存的文件。
1.3 撤销对文件的修改 -- git checkout -- <filename>
当你对一个文件进行了修改,还没有add进暂存区,你想要放弃所有的修改,将文件恢复到没有修改之前的样子,这时候可以使用 git checkout -- <filename>
这条命令会将文件恢复到上一次commit的时候,这个文件的样子。
2.打标签
打标签是指给一个commit打上标签,表示这个commit的重要性。通常人们会用这个功能来标记发布节点(例如v1.0等)。
2.1 列出标签 -- git tag
git tag 会按照字母顺序列出所有的标签。
git tag -l '<condition>' 列出感兴趣的标签。例如git tag -l 'v1.0*' 列出v1.0系列的标签。
2.2 创建标签
Git中的标签只有两种:轻量标签(lightweight)和附注标签(annotated)。通常建议使用附注标签,因为附注标签的信息更为全面,会包括打标签者的名字、电子邮件地址、日期时间等。
1.附注标签 -- git tag -a v1.4 -m "version 1.4"
使用-a就可以为某个提交打上附注标签了。-m指定标签的描述信息。
3.轻量标签 -- git tag v1.4
轻量标签本质上是将提交校验和存储在一个文件中,没有保存其他任何信息。
2.3 查看特定标签的相关信息 -- git show v1.4
1.显示标签的相关信息;
2.显示标签被打在了哪个commit上。(对于轻量标签,只会显示标签被打在了哪个commit上)
2.4 对过去的提交打标签 -- git tag -a <tag name> -m <tag info> <commit 的hash值>
给指定的commit打上标签。这个指定的commit可以是很久以前提交的节点。也就是说给过去的commit打标签。
2.5 标签的共享 -- git push origin <tag name>
如果想将本地的tag上传到远程仓库,则必须显示的将tag push上去。默认情况下 git push 是不会将tag上传到远程仓库的。
一次推送许多标签: git push origin --tags 会将不在远程仓库的所有标签上传上去。
2.6 删除标签 -- git tag -d <tagname>
注意这条命令不会更新远程仓库。
使用 git push origin :refs/tags/<tagname> 来更新删除远程仓库的tag。
3.Git别名
Git不会再你输入命令的时候推断出你想要输入的命令,如果不想要每次都输入完整的命令,这时候可以给命令定义别名,每次输入的时候输入别名就可以了。
可以通过config文件来实现:例如 $ git config --global alias.co checkout 给checkout去别名为co,那么每次在输入的时候,就可以使用git co来代替git checkout了。
下面的2个别名可以加入到config中:
$ git config --global alias.unstage 'reset HEAD --' //使用git unstage表示取消暂存的操作,这样更加直观
$ git config --global alias.last 'log -1 HEAD' //使用git last表示显示最后一个commit的相关信息
上面只是对Git的内部命令取别名。如果你想要对Git的外部命令取别名,那么你在命令前面加上!。
$ git config --global alias.visual '!gitk' //将git visual定义为gitk