1. 创建标签
GIT可以打标签(tag)标记一个版本号,发布一个版本时,通常可以在版本库中打一个标签,这样就可以确定打标签时刻的版本。
# git tag -a "指定标签名" -m "指定说明文字"
git tag -a "v1.0.1" -m "version 1.0.1 released"
当然也是给指定的commitId打标签:
#给指定的commit id打标签 git tag -a "指定标签名" commitID
git tag -a "v1.0.2" 9fbc3d0
为某一次提交设置标签。
2. 远程回滚reset命令
reset(重置)是修改header指针指向,达到回滚的目的。
# 获取将要回滚到的版本号
git log --pretty=oneline --abbrev-commit
# 回滚提交(本地回滚)
git reset --hard commentId
# 强制提交到远程分支
git push -f origin master
Git每次提交,都会将其串成一条时间线。header指针指向的是当前提交。
若是将代码push到远程回滚的步骤。
需要通知同分支的开发人员
- 本地使用reset回退版本;
- 强行push -f到远程;
- 同事使用pull命令拉取服务器代码;
- 所有同事本地都要使用reset来回退版本;
3. 远程回滚revert命令
revert(还原)还原某次提交,并作为一次新的commit。
# 还原上一次提交
git revert head
# 推送到远程
git push
例如还原某次提交,使用head
即还原上一次提交。
bogon:SpringBoot_Study yexuerui$ git revert head
[master 02a6800] Revert "git9提交"
1 file changed, 8 deletions(-)
delete mode 100644 src/main/java/com/git/Git9.java
使用commitId是还原指定的提交。
注意:
git revert
只是还原某一次提交,而git reset
是回滚多次提交(直接修改header指针指向)。
4. merge代码如何回滚
例如,我们在dev分支上进行大量提交后,合并到了master分支。发现需要将某次合并回滚,如何进行操作?
可以在合并前使用
git tag
记录分支;合并后,master分支上有多次的提交记录:可以使用reset命令进行本地回滚,然后在强制提交到远程,但是需要和其他同事沟通,以防代码丢失。
合并后,master分支上有多次的提交记录:但若是产生冲突会存在
Merge
的日志(只有发生冲突时才会存在该提交记录),可以使用git revert 对应的commitId也可以将本次合并回滚。
bogon:SpringBoot_Study yexuerui$ git log --pretty=oneline
0b965774b8c057f327e9c0527b3dcc7696117345 Merge branch 'master' of https://github.com/yexuerui/SpringBoot_Study
5. reset的三种命令
- --hard:放弃本地目前的所有改变(即去除掉工作区和暂存区的文件)详细命令:
git reset --hard HEAD
。 - --soft:保留工作目录,并将重置的HEAD所带来的新的差异放进暂存区。
- 不加参数(默认):保留工作目录,并清空暂存区。即:工作目录的修改、暂存区的内容、reset所造成的新的文件的差异都会放入到工作内容。