代码版本回退
对于错误的commit
、push
、meger
操作进行回退。
方式一:reset
回退,也就是修改HEAD指针
通过版本号
版本号就是很长的一串,如下面那个。有时候也是短的,比如Gitlab上拷贝的,都一样能用
git reset --hard 7135c789143acf19380f4917a6af73c7899e645f
# 如何查看版本号,通过日志或开发工具
git log --since=2.days # 查看近两天的日志(2代表天数)
idea 在commit记录上右键第一个选项就是版本号
通过次数
# 回退到当前版本的上 1 个版本
git reset --hard HEAD^1
# 回退到当前版本的上 2 个版本
git reset --hard HEAD^2
最后的符号,正确命令应该是 ^ ,因为 ^ 符号在Windows下被识别为是否换行了,所以如果是Windows窗口使用该命令,需要把 ^换成~
git reset --hard HEAD~1
这个时候,本地的代码已经倒退,但是远程还没有,需要push
一下来撤销远程
使用git push -f
提交更改:
此时如果用 git push
会报错,因为我们本地库HEAD指向的版本比远程库的要旧
所以我们要用git push -f
强制(force) 推上去,覆盖掉远程的新代码就可以了
注意:
采用这种方式回退代码的弊端显而易见,那就是会使 HEAD 指针往回移动,从而会失去之后的提交信息。将来如果突然发现,版本二 和 版本三 是多么绝妙的想法,可它们已经早就消失在历史的长河里了,再也找不回来了,也可以考虑先备份。
有些公司明令禁止使用 git reset 命令去回退代码,原因与上述一样。所以,我们需要找到一个命令,既可以回退代码,又可以保存错误的提交。这时,git revert 命令就派上用场了。
方式二:revert
git revert
是用于反做某一个版本,以达到撤销该版本的修改的目的,他比 git reset稍微麻烦一些 。
场景:我们 commit 了三个版本(版本一、版本二、 版本三),突然发现版本二不行(有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。如下图所示:
适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。其实就是覆盖
# 通过版本号
git revert 7135c789143acf19380f4917a6af73c7899e645f
git revert HEAD # 重做上1次(1可以省略)
git revert HEAD^1 # 重做上1次(1表示次数)
git revert HEAD^2 # 重做上2次(1表示次数)
git cherry-pick
场景:我在dev分支做了10次提交、现在需要合并 到master,但是我又不想全部合并,只合并一个两个或者某个commit记录到master,怎么操作?
1、在dev把需要合并到master的commit 版本号查出来。
2、切换到master分支,执行commit version的粘贴操作。
例如:
git cherry-pick b734ef2b93bf
如果需要合并多个,后面版本号用空格隔开,拼接即可
git cherry-pick v1 v2 v3
因为合并过来的是commit记录,所以不需要再次commit了,这个时候直接push即可
Tag 操作
tag是一个标签或者说是一个记录点,可以用于对某个commit点或分支进行标记,比如项目中V1版本对应某个commit点,对这个commit打一个V1 tag,那么,在查找或者回退代码时,可以直接查找V1找到对应的源码,相比去查找commit id更加方便与人性化。
查询tag
git tag # 查看本地所有tag
git ls-remote --tags origin # 查看远程所有tag
git show <tag名字> # 查看 tag 详细信息
创建tag
git tag <tag名字> # 创建 tag
git tag -a <tag名字> -m <注释文字> # 创建带注释的tag
提交tag
git push origin <tag名字> # 推送单个tag到远程
git push origin --tags # 推送所有本地tag到远程
删除tag
git tag -d <tag名字> # 删除本地tag
git push origin :<tag名字> # 删除远程tag
个人信息修改
# 查看所有配置
git config --list
# 查看单项配置
git config user.name
git config user.password
git config user.email
# 修改配置全局配置
git config --global user.name "zhangsan"
git config --global user.email "[email protected]"
# 当前项目单独配置,去掉 --global 即可
git config user.name '[email protected]'
remote 修改
# 查看当前 remote
git remote -v
# 直接更新 remote(方式一)
git remote set-url origin xxxxx.git
# 直接更新 remote(方式二)
# 先删除、在添加
git remote rm origin
git remote add origin https://xxxxxxx.git
branch 修改
# 查看本地分支 * 表示当前使用的分支
git branch
# 查看远程分支
git branch -r
# 查看所有分支
git branch -a
# 需要将分支br_old修改为br_new,执行如下步骤:
# 1、切换到br_old分支,如果已经在这个分支下,可以不执行此步骤
git checkout br_old
# 2、将代码更新到和远程仓库一致
git pull origin br_old
# 3、将本地仓库的br_old的名称修改为br_new
git branch -m br_old br_new
# 4、将本地分支push到远程仓库
git push --set-upstream origin br_new
# 5、将远程分支br_old删除
git push origin --delete br_old
标签:常用,Git,br,--,commit,tag,版本,git,操作
From: https://www.cnblogs.com/qiushanyueyue/p/17192653.html