6.git使用补充

本地开发/暂存/提交

新功能开发-feat、缺陷修复-fix

首先,基于最新的master切换一个功能分支-feat/xxxx或修复分支-fix/xxxx

git checkout -b feature/xxxx master

本地开发完毕后,添加本地修改到暂存区

git add .

提交暂存区文件到本地仓库

// 常规使用
git commit -m "注释内容"
// 例如
git commit -m "feat: 添加xxxx功能"

// 使用git-cz,根据cli对话框键入相应内容
git cz

如果我已经本地commit了,但是发现还需要继续修改此分支,为了避免主干分支出现过多冗余的commit,原则上我们需要保证一个分支只有一次提交,那么我该如何commit?

// 使用amend参数,直接修改上次的commit

// 常规使用
git commit --amend 

// 使用git-cz
git cz --amend

推送本地分支到远端,如果本地commit时使用过amend参数,则push时需要加上f参数强推

// 本地commit时,没有amend
git push origin feat/xxxx

// 本地commit时,有过一次或多次amend
git push origin feat/xxxx -f

关于MR前分支状态【0|1】的解释,何时该使用restore、reset、rebase

为了便于快速将分支代码合并到主干,减少不必要的合并冲突,原则上我们需要分支相对于主干的状态为0|1,即等待被合并的分支不能落后master分支,并且最多只能领先master一次commit;
错误示例状态:0|2、0|3、0|5等,21、4|1、6|1等

我在本地开发时,多次commit时没有amend,怎么办?

解决办法:

// 比较快捷的办法,直接rebase
git rebase -i
// 也可以选择回滚重新提交
// 首先回滚到master分支
git reset [master 或 master的commitId]

// 然后重新add
git add .
// 重新commit
git commit -m "重新注释"
// 或
git cz
// push,如果之前已经push过,则需要加上f强推
git push origin feat/xxxx [-f]

我已经推送了分支,但是MR前,发现已经落后于master,怎么办?

解决办法:

// 首先本地切换到master分支并更新到最新
git checkout master
git pull origin master

// 切换回功能分支,合并本地master分支到功能分支
git checkout feat/xxxx
git rebase master

// 如果rebase过程遇到冲突,分支后面会标记rebase,处理完冲突后,分支后面rebase会消失
// 处理冲突后需要add,并继续rebase,直到所有冲突消失
git add .
git rebase --continue

// 推送该功能分支,由于我们在本地合并了未来的commit,所以需要强推
git push origin feat/xxxx -f

我此刻已经头皮发麻,感觉自己的东西越改越乱,想重置本次更改到最初状态,怎么办?

// 重置本次修改到初始状态,注意只是清除本地的add,不会影响commit
git restore .
// 或
git restore fileName

Leave a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注