Git常用操作

代码版本回退

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

方式一:reset

回退,也就是修改HEAD指针
image

通过版本号
版本号就是很长的一串,如下面那个。有时候也是短的,比如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 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。如下图所示:
image

适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。其实就是覆盖

# 通过版本号
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 "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
posted @   山河c  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示