回退

对于错误的commitpushmeger操作进行回退。

方式一: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粘贴操作

git cherry-pick b734ef2b93bfdc5ccc1bad6f53855ae956754274

如果需要合并多个,后面版本号用空格隔开,拼接即可

git cherry-pick v1 v2 v3

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 "zhangsan@qq.com"

# 当前项目单独配置,去掉 --global 即可
git config user.name 'zhangsan@qq.com'

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

原文地址:http://www.cnblogs.com/cn9991/p/16832519.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性