Git使用记录

一些git使用经验记录

一、合并master场景

假设现在有一个分出去很久的v_oldversion分支需要合并到master分支,流程应如下:
以下均为本地操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 1. 切到master分支
git checkout master

# 2. 检出一个master副本分支:copy_oldversion
git checkout -b copy_oldversion

# 3. merge & 解决冲突
git merge v_oldversion

# 4. 提交分支:mg/v_oldversion
git commit -m 'branch merge v_oldversion'

# 5. 推送到gitlab上
git push -u origin copy_oldversion

# 6. 在gitlab上申请合并到master
以上合并流程优势:
1. 能够借助本地IDE工具解决merge冲突;
2. 能够保证master的合并线清晰;
3. 能够避免旧版本的覆盖;
4. 能够不影响旧v_oldversion分支;

二、同分支开发behind状态

(1)未commit
假设存在共同开发分支develop_common,你修改了一个文件src/common/configure.go,而此时同事先一步向远程仓库push了该文件的修改。此时你执行git pull时会失败:

1
2
3
4
5
6
7
8
# 1. 保存当前修改
git stash

# 2. 拉取远程仓库
git pull

# 3. 恢复编辑环境
git stash pop

(2)已commit
假设存在共同开发分支develop_common,你修改了一个文件src/common/configure.go,并且已经本地commit了。此时执行git push时失败:

1
2
3
4
5
# 1. 把自己修改的内容,直接衔接到最新远程代码
git pull --rebase

# 2. 提交
git push

三、管理特定分支

假设你要新建一个分支,请从你预期要合并的分支中检出!!!

1
2
3
4
5
6
7
8
9
# 新建dev_fix_somebug
git co -b dev_fix_somebug

# 创建远程分支
git push -u origin dev_fix_somebug
# 删除远程分支(如果后续分支无维护必要,请合理删除)
git push -d origin dev_fix_somebug
# 删除本地分支
git branch -d dev_fix_somebug

四、获取特定分支or版本的文件

1
2
3
4
5
6
7
# 假设你想要历史版本中的特定文件
git checkout <COMMIT_ID> src/configure.go

# 假设你想要特定分支中的特定文件
git checkout <BRANCH_NAME> src/configure.go
此时该文件src/configure.go就会被修改为特定<COMMIT_ID>或<BRANCH_NAME>的文件内容
(⚠️该文件已保存为暂存区状态)