GIT命令

吴书松
吴书松
发布于 2025-05-06 / 6 阅读
0

GIT命令

Git

1、git文档

  • https://mp.weixin.qq.com/s/BIvx7cnvLBHMKE5lYgcOLw

  • https://www.runoob.com/git/git-tutorial.html

git branch --merged                                       # 显示所有已合并到当前分支的分支

git branch --no-merged                                    # 显示所有未合并到当前分支的分支

git branch -m master master_copy                          # 本地分支改名

git checkout -b master_copy                               # 从当前分支创建新分支master_copy并检出

git checkout -b master master_copy                        # 上面的完整版

git checkout features/performance                         # 检出已存在的features/performance分支

git checkout --track hotfixes/BJVEP933                    # 检出远程分支hotfixes/BJVEP933并创建本地跟踪分支

git checkout v2.0                                         # 检出版本v2.0

git checkout -b devel origin/develop                      # 从远程分支develop创建新本地分支devel并检出

git checkout -- README                                    # 检出head版本的README文件(可用于修改错误回退)

git merge origin/master                                   # 合并远程master分支至当前分支

git cherry-pick ff44785404a8e                             # 合并提交ff44785404a8e的修改

git push origin master                                    # 将当前分支push到远程master分支

git push origin :hotfixes/BJVEP933                        # 删除远程仓库的hotfixes/BJVEP933分支

2、git基本命令

1、删除本地分支和远程分支

删除本地分支:

注意,需要切换到别的分支上执行

git branch -d release

强制删除本地分支:

git branch -D release

删除远程分支:慎用

git push origin --delete release

2、添加 远程分支

git remote add origin https://gitee.com/xxxx/wss-cloud.git

3、基于远程某分支创建本地分支

1、方法1:

先切换到远程分支,在拉取最新代码

再给予该分支创建本地分支

2、方法2:

直接给予远程分支创建本地分支

git checkout -b new_branch_name origin/branch_name

4、idea回退已经push的提交

注意,会提前需要切新分支做数据保存,防止出意外

如:已经有四次提交1-4,每次都提交一行

现在回退到 02

预期:内容保留:11 22

方法1

1、选中要回退的提交记录 -》右键 -》 Reset current branch to here

2、选择Hard -》 点击 Reset

这个时候,本地文件就已经回退到02提交了

但是远程仓库还没有回退

3、提交远程

注意,这里不能使用idea上的push,要使用命令强制提交,不然提交的时候,远程的会覆盖本地额

git push -f

方式2 类似于方式1

方式2和方式1,是一样的,不过是使用提交编号回退

1、复制需要回退版本的编号

选中需要回退的记录 -》 右键 -》 Copy Revision Number

2、右击项目名称 》git -》 Reset HEAD

3、回退

1、Reset Type 设置成Hard

2、To Commit 填写之前复制的编号

3、点击Reset


git reset --soft/--mixed/--hard 区别
git 有三个区域
1、工作区:就是我门编辑写代码的区域
2、暂存区:代码add之后,存放的区域
3、本地库:代码commit之后,存放的区域

soft : 将本地库的指针移动到指定位置,就相当于回退了commit,代码处于add阶段,再缓冲区中,status状态是绿色的
mixed:将本地库和暂存区,指针移动到指定位置,就相当于回退了add,代码处于没有add阶段,还在工作区中,status状态是红色的
hard:将本地库、暂存区和工作区,指针移动到指定位置,相当于没有写这些代码,工作区代码都回回退了,没有了

4、提交远程

注意,这里不能使用idea上的push,要使用命令强制提交,不然提交的时候,远程的会覆盖本地额

git push -f

方式3

注意,当前方式,是回退选中提交,如果要回退到指定版本,需要点击下一个提交

比如:要回退到02,需要点击03回退

1、选中要回退版本的下一个提交 》 右键 -》 Reset Commit

2、分支合并

注意,因为远程提交的已经被Reset了,所以合并的时候,直接要远程的就行

3、cherry-pick

摘樱桃
只会合并某个分支的某次提交时候的全部文件
如:
分支a
    文件内容:a,b,c
分支b:基于分支a创建,初始文件内容,和分支a相同:a,b,c
    后续提交了三次
    提交1、加了内容,1 ->a,b,c,1
    提交2、加了内容,2 ->a,b,c,1,2
    提交3、加了内容,3 ->a,b,c,1,2,3

现在基于a分支,cherry-pick 分支b的提交2
    那么只会将分支b的内容:a,b,c,1,2 合并到分支a

git cherry-pick ff44785404a8e                             # 合并提交ff44785404a8e的修改

查看分支提交记录

git log --oneline

4、更换远程地址

git remote -v
git remote set-url origin https://github.com/newuser/newrepository.git
git remote -v

6、将暂存区内容恢复到工作区

文件m5 add 到了暂存区,但是工作区的m5文件呗删除了,可以使用下面命令将暂存区文件恢复到工作区

git restore m5

3、GIT规范

dev

开发分支,所有新功能开发、改进、优化等都应该从此分支开始创建功能分支,上线没问题之后,最终合并回此分支。

feature-功能点

功能开发分支,基于dev创建,尽量做到一个功能/一批上线的功能,放在一个feature分支中

test

测试分支,测试环境发布使用的分支,feature分支开发完成之后,合并test分支,进行提测

uat

预发布分支,预生产环境测试分支,用于发布前的功能测试,和release分支保持代码高度一致,减少发布线上BUG率,feature分支合并test之后,测试没问题,再合并该分支,做预发布测试

release

线上环境,线上环境发布使用的分支,feature发布uat测试没有问题之后,合并该分支,发布线上

hotfix-bug点

bug修复分支,线上发现BUG之后,基于release分支创建,进行BUG修复,之后合并test分支,做测试,没问题合并uat做测试,再没问题,合并release,线上没问题之后,合并dev,再合并master做归档

注意:

  • 1、线上运行没有问题之后,将feature分支合并dev分支,再合并master分支做代码归档

  • 2、所有feature/hotfix分支,不能直接合并dev,master,需要等release线上没问题之后再合并

  • 3、如果两个feature功能分支(feature-a、feature-b),需要合并做自测,需要另起第三个feature分支(feature-c),在合并前两个feature功能分支(feature-a、feature-b),做测试,不能直接让两个功能分支(feature-a、feature-b)直接相互合并

  • 4、feature/hotfix分支,可以定期删除

查看分支创建人

git for-each-ref --format='%(refname:short) %(authorname)'

git for-each-ref --format='%(refname:short) %(authorname)' refs/heads/