1、git rebase
把某个分支的commit重新应用到另一个分支的基础上:
A0————A1————A2————A3————A4
\
B1————B2————B3
假如有两个分支A和B,在A1的变更提交到A分支后以此作为基准拉取B分支,此后A分支提交了A2、A3、A4变更,B分支发生了B1、B2、B3变更,当在B分支执行rebase时会把B1、B2、B3暂存(摘下),把B分支的基准移动到A3,B分支形成如下的提交记录:
A0————A1————A2————A3————A4————B1'————B2'————B3'
实操:
1)在master分支新建a、b、c三个文件,在master分支对a文件更新2次:
2)拉取新分支featur-b,并对b文件更新3次:
3)在master分支上,对c文件更新3次:
4)形成如下的提交记录:
5)执行rebase:
# 切换到feature-b
git checkout feature-b# 把feature-b的变基到master分支上
git rebase master# 变基操作推送到远程分支
git push origin feature-b --force
6)变基操作完成后feature-b分支的提交记录变成如下,变基后B1、B2、B3的commit的hash发生变更,与第4节的不一样,形成了B1‘、B2’、B3‘的提交记录:
7)git rebase过程中遇到冲突,需要先解决冲突,再通过命令git add .标记解决冲突,然后再继续rebase操作
git rebase --continue
8)如果希望停止rebase,可以通过命令取消rebase进程
git rebase --abort
2.删除分支
删除本地分支
git branch -D [branch_name
删除远程分支
git branch --delete [branch_name]
3. 分支打标签
git tag [tag_name]
推送标签至远程
git push origin [tag_name]
4.git stash暂存
1)暂存代码:当前分支的代码不想提交时,可以通过stash进行暂存:
git stash save 暂存描述
2)查看暂存记录
git stash list
3)应用暂存的代码到当前分支
#恢复索引为0的暂存记录
git stash apply 0
4)删除暂存的代码
#删除指定索引的暂存记录
git stash drop 0
5. git restore
当文件修改后,想撤销改动,可以通过git checkout [file-name]来还原代码,或者git restore [file-name]还原代码,或者git restore .来还原所有代码
当文件修改后,通过git add [file-name]添加到了暂存区
#还原指定文件
git checkout [file-name]
#还原指定文件
git restore [file-name]
#还原更改的文件
git restore .
#暂存所有代码
git add [file-name]
此时需要通过git restore --stage [file-name]撤销暂存
#把提交到暂存区的变更还原至未提交状态
git restore --stage [file-name]
此时无法通过git checkout来还原代码,需要通过git reset还原代码
6. cherry-pick
把其他分支的commit应用到当前分支
git cherry-pick [hash1 hash2.......]