给分支 标记tag
git checkout branchName
切换到 分支-
git log
查看分支 提交记录
git tag -a 标签名 -m "标签注释" d5a65e9(提交哈希值)
打tag
git tag -a pre_v1.0 -m "预生产环境版本1.0tag" a26c46416caf351af6cdbeb751a13bfec085baec
- 把本地的分支tag push 到 远端服务器上
1 push 单个tag,命令格式为
git push origin tag_20170908
2 push 所有tag,命令格式为
git push [origin] --tags
git push --tags
或
git push origin --tags
通过标签 恢复代码
1.查看标签的详情,找出打标签的那次提交的 commit id
git tag
查看本地所有标签
git show tagName
查看某个标签的详细信息
- 版本回退(将主干分支回退到某个版本)
下面 我们就通过 commit id 回到发版本(commit id 为 38ce7582791cff7890aaff8c96ba533440740650 )时候的代码去
git reset --hard 38ce7582791cff7890aaff8c96ba533440740650
当然写commit id是可以回滚到任何版本,但在真实环境下我们用的比较多的应该是返回到上个版本即最后一次提价的版本这个我们可以使用如下命令
git reset --hard HEAD
特别注意:通过标签回退版本后,要马上拉一个分支,然后当前主干分支要立即回到原来的位置,否则正在开发的代码可能白干了,接着在刚拉的分支上修改bug,修改完毕合并到主干上
git log 和 git reflog的区别
git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录
具体一个例子,假设有三个commit,git commit -m"add test1.c",git commit -m"add test2.c",git commit -m"add test3.c":
commit3: add test3.c
commit2: add test2.c
commit1: add test1.c
这样提交了三个,也就是有三个commit id,commit3是最后提交的。
如果执行git reset --hard HEAD~1则 删除了commit3,如果发现删除错误了,需要恢复commit3,这个时候就要使用git reflog 因为回退原因git log是看不到commit3的commit id的
强推 push -f
情况理解:当我们的master分支想回退到某个之前的版本时需要做如下流程:
1、git checkout master :本地切换到master分支
2、git pull : 本地分支跟新为最新(非必须,只是习惯)
3、git log 、git reflog :查看提交记录,寻找合适的commitId (注意这里的commitid一定要注意,因为我们开发分支的版本号在合并的时候也会被合并过来)
4、git reset --hard commitid :回滚到指定的版本、git reset --hard HEAD:会滚到之前一个版本
5、git push : 将本地代码推到远程,但是这时会报错误,不会让你推因为你的本地版本比远程低一个版本,所以他会要求你更新为最新的在push但是这样的话就会有问题啊,吧我们回滚的又覆盖了,所以我们不能更新,所以不能使用这个命令,只能使用下面的6这个命令了!!!
6、git push -f origin master(修改这里的master为你的分支名称,不要把master强推到你的分支) :将本地代码强制推到远程,也就是用本地代码覆盖远程