git操作

Git合并操作

title

git merge

使用git merge将master分支合并到feature分支

1
2
git checkout feature
git merge master

上面的操作会在feature分支上产生一个新的commit,它是c4和c7的合并为c8,c8包含了master分支上的所有修改,结果如下图所示:

title

git rebase

rebase将feature分支的基移到master分支的开头(即c4),将所有的新提交合并到主分支中。与在feature分支中创建合并提交不同,rebase通过在feature分支中为每个commit创建全新的commit来重写提交历史,在c4的基础上,依次重新提交在feature分支上的每一次修改。

1
2
git checkout feature
git rebase master

title

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 合并最近的分支
git rebase -i HEAD~3

# 弹出一个文本编辑窗口,前三行即最近三次的commit
pick 344a29d test1
pick 36f77fe test2
pick 88cb498 test3

# 含义
p, pick = use commit
s, squash = use commit, but 合并到前面的分支上
f, fixup = like "squash", but discard this commit's log message
d, drop = remove commit 删除这个分支

# 在合并过程中若发生冲突,需要自己对比修改本地文件,解决完冲突后执行
git add .
git rebase --continue

# 中途不想合并了,则可以执行:
git rebase --abort

git squash

在git merge中,每一次merge就会产生一个额外的commit,如果在工程中有许多bug和一些微小改变的commit,那么可以使用–squash选项将feature分支中的所有commit取出,然后压缩这些commit为一个并加入到master分支中

1
2
git checkout master
git merge --squash feature

title

Git保存操作

想切换分支,正在处理当前项目的一个未完成部分。不想对半成品进行提交。Git 缓存允许你这样做。git stash 命令使你能够在不提交当前分支的情况下切换分支

1
2
3
4
5
6
7
8
9
10
# 保存
git stash
# 列出保存的文件
git stash list
# 重新恢复保存的文件
git stash apply <stash id>
git stash pop <stash id> # 一样的效果,会删除<stash id>

# 删除
git stash drop <stash id>

git操作
https://zhangfuli.github.io/2023/08/31/git操作/
作者
张富利
发布于
2023年8月31日
许可协议