2020-09-05
Git 常用命令及使用情况 2
Git 常用命令
tag 常用于发布版本
默认在 HEAD 上创建一个标签
1
$ git tag tag_name
制定一个 commit id 创建一个标签
1
$ git tag tag_name commit_id
创建带有说明的标签,用 -a 指定标签名,-m 指定说明文字
1
$ git tag -a tag_name -m "说明文字"
查看所有标签 (标签都是按照字母排序的)
1
$ git tag
查看单个标签具体信息
1
$ git show <tag_name>
推送一个本地标签
1
$ git push origin <tag_name>
推送全部未推送过的本地标签
1
$ git push origin --tags
删除本地标签 (由于创建的标签只能存储在本地,不会自动推送至远程,所以错误的标签可以在本地安全的删除)
1
$ git tag -d tag_name
删除一个远程标签 (先删除本地标签,再删除远程标签)
1
$ git push origin :refs/tags/<tag_name>
删除文件 rm
版本切换 & 重设 & 撤销 详解
checkout : 可以撤销工作区的文件, 可以作用于 commit 或者文件
恢复暂存区文件到工作区
1
$ git checkout <filename>
恢复暂存区的所有文件到工作区
1
$ git checkout .
回滚到最近的的一次提交,如果修改某些文件后,没有提交到暂存区,此时回滚是回到上一次提交,如果已经提交到仓库,这个回滚无效,只能回滚到提交的版本
1
2$ git checkout HEAD
$ git checkout HEAD --filename回滚到最近一次提交的上一个版本
1
$ git checkout HEAD^
回滚到最近一次提交的上两个版本
1
$ git checkout HEAD^^
切换分支
1
$ git checkout branchname
切换到某个指定的 commit 版本
1
$ git checkout <commit_id>
切换到指定的 tag
1
$ git checkout <tag>
reset : 可以撤销工作区/暂存区的文件, 可以作用于 commit 或者文件
当你用 reset 回滚到了某个版本后,那么在下一次 git 提交时,之前该版本后面的版本会被作为垃圾删掉.
当我们回退到一个旧版本后,此时再用 git log 查看提交记录,会发现之前的新版本记录没有了。如果第二天,你又想恢复到新版本怎么办?找不到新版本的 commit_id 怎么办?
- 用 git reflog 查看历史命令,这样就可以看到之前新版本的 commit_id ,然后 git reset –hard commit_id 就可以回到之前的新版本代码
git reset [--hard|soft|mixed|merge|keep] [<commit>或HEAD]
将当前的分支重设(reset)到指定的
或者 HEAD (默认,如果不显示指定 ,默认是 HEAD ,即最新的一次提交),并且根据 [mode] 有可能更新索引和工作目录。mode 的取值可以是 hard、soft、mixed、merged、keep . 从暂存区撤销特定文件,但不改变工作区,会取消这个文件的暂存,而不覆盖任何更改
1
$ git reset <filename>
重置暂存区的最近一次提交,但工作区文件不变
1
2
3$ git reset
<==>
$ git reset HEAD (默认)重置工作区与暂存区,回退到最近一次提交的版本内容
1
$ git reset --hard
重置暂存区与工作区,回退到最近一次提交的上一个版本
1
$ git reset --hard HEAD^
mixed : 将当前分支的指针指向为指定的 commit (该提交之后的提交都会被移除), 同时重置暂存区,但工作区不变
1
2
3$ git reset <commit>
<==>
$ git reset --mixed <commit>soft : 将当前分支的指针指向为指定的 commit (该提交之后的提交都会被移除), 但保持暂存区和工作区不变
1
$ git reset --soft <commit>
hard : 将当前分支的指针指向为指定的 commit (该提交之后的提交都会被移除), 同时重置暂存区、工作区
1
$ git reset --hard <commit>
revert : 只能作用于 commit,撤销某个已经提交的快照(和 reset 重置到某个指定版本不一样)」。它是在提交记录最后面加上一个撤销了更改的新提交,而不是从项目历史中移除这个提交,这避免了 Git 丢失项目历史
cherry-pick : 将指定的提交 commit 应用于当前分支 (可用于恢复不小心撤销 (revert/reset) 的提交)
1 | $ git cherry-pick <commit_id> |