git使用

119 阅读1分钟

关于rebase和merge

rebase 应用场景:

多人在A分支同时开发时,小刘本地有三条提交,准备提交远端时发现小黄已经在远端提交了一次,和小刘本地的开发形成了分叉,类似下图

2022-09-13-15-57-22-image.png

此时如果用git pull --rebase,就是把C3 C4 C5的源头挪到C6,变成这种结构

2022-09-13-16-00-51-image.png

如果用merge,会把C5和C6在分支上合并成一个新的提交C7,结构如图

2022-09-13-16-05-31-image.png

2022-09-13-16-07-12-image.png

总结:rebase 将当前的提交复制到最新提交之后,会形成一个线性的分支树;merge会将最新的两个提交合并成一个,最后分支树是非线性的。

其他使用

本地记录回滚
  1. git reflog 查找到要回滚到的记录如HEAD@{0}
  2. git reset --hard HEAD@{0}
删掉某一条commit记录
  1. git log 找到要删的某一条记录的commit id
  2. git rebase -i commit-Id(如3aabafb2b556a8a01d56c84310300f65c1a0e47b),进入vim
  3. 在vim中,将不需要的行前面的pick改为drop,然后保存退出
强制覆盖本地

git reset --hard origin/分支

创建分支

    1.创建关联到远端分支的同名本地分支

        git checkout --track origin/分支

    2.新建并切换到新分支然后关联到远端

        git branch --set-upstream-to=origin/feature/分支

删掉commit的某一个文件(变为不提交
  1. git reset commit-ID 要删的文件(不加要删的文件就整个回滚)
  2. git checkout 要删的文件
  3. git commit --amend --no-edit
  4. 看情况要不要提交push review