git命令备忘录

发布于:2024-11-27 ⋅ 阅读:(153) ⋅ 点赞:(0)

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次:

ce9e5a474fe34af9ba4fec76f10a2dd2.png

2)拉取新分支featur-b,并对b文件更新3次:

a8c78f53a46f4b75a454d0029ef89848.png 3)在master分支上,对c文件更新3次:

6332c48925694f2fa4e218b26e78a573.png 

 

4)形成如下的提交记录:

e55d5d5e86db42b3abd133e77f7e1ae6.png

 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‘的提交记录:

0568b15c940a44ce9bd598d77e0dd215.png

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.......]