Bootstrap

Git - 在公司中,使用 git 的流程是什么?遇到冲突怎么办?

目录

一、公司中 git 的使用流程

1.1、设置用户签名

1.2、创建分支,提交代码到远程仓库

1.3、创建 pr,code review

1.4、意外情况:分支冲突

1.5、分支冲突另一种解决办法

1.6、分支冲突最好的解决办法(最推荐!!!)


一、公司中 git 的使用流程


1.1、设置用户签名

刚进公司,肯定是先初始化个人的用户签名啦~

用户名一般是你的 "花名" .

邮箱就是公司给你的邮箱.

git config --global user.name "用户名"
git config --global user.email 邮箱

配置权限:

1. local(优先级最高):默认,只影响本地;

2. global (优先级中等) :影响当前用户的git仓库;

3. system (优先级最低) :印象到全系统的git仓库;

注意:首次下载git一定要进行设置,否则后续提交代码会出错;这里的邮箱不一定需要真实邮箱,可以是一个虚拟邮箱;

执行之后就可以在用户目录下看到这个文件:

1.2、创建分支,提交代码到远程仓库

a)写完代码之后,就可以提交代码啦~

注意:对于实习生来说,push 的时候不能在 master 主分支上,而是要自己先创建一个分支,然后 push 自己的分支!

因此建议写完代码之后,首先就是要创建分支并切换.

git checkout -b feature/xxx

Ps: 分支名以 "feature/" 开头,后面的内容自定义即可.

b)接下来就是以下一顿操作

git add .

git commit -m "feat:xxx" .

git push origin feature/xxx

Ps:提交的信息以  "feat:" 开头,后面的内容有意义即可

c)不出意外的话(没有分支冲突,不过作为实习生的你,自己的分支 push 一般是不会遇到滴),因该是以下情况

1.3、创建 pr,code review

a)此时就可以去到代码仓库中新建一个 pr

b)选择你要向哪个分支上去合并,以及评审人(一般就是你的 Monter)

c)选择你的评审人

d)之后就可以将此页面的链接发送给你的 Mentor 啦,他就会对你的代码进行 code review...  指出哪里有问题,如果没问题的话,你的导师就会直接给你 merge 了.

Ps:下面这一步,在你不是正式工之前,一般都是由你的 Mentor 来完成的,

之后你就可以去 预发 啦.

1.4、意外情况:分支冲突

a)这天,你兴致勃勃的敲完代码,并且 push 完后,准备 pr,却发现如下情况:

这种情况就是因为你在你的分支上写代码之前,有其他人提交了代码到 master 分支上,导致你本地的代码和远程仓库的代码不一致,此时你再去编辑本地的代码(你 push 的文件正好是别人在远程仓库上已经修改过的文件),然后 push,就会出现以上这种情况.

因为 git 可不知道你是要保留远程仓库上的代码,还是保留你的代码,还是都保留...

b)莫慌莫慌,此时你只需要通过 pull 再拉取一下你要合并的那个分支的到你自己的分支上即可

例如,我当前是 feature/xxx 分支,需要向 master 分支合并,但是遇到了上述冲突,因此你只需要在 feature/xxx 分支上,拉取一下 master 分支的代码,如下:

c)此时你再去查看你之前 push 的文件,就可以选择保留谁的代码啦

比如我两个都要,那么删掉提示信息即可.

d)此时你就可以继续,执行以下一套操作来提交代码啦~

e)这个时候,你再刷新 pr 的页面,就会发现冲突已经解决了~

1.5、分支冲突另一种解决办法

当你在 feature/kang 分支上面做了修改,然后 push 上去之后发现冲突了.

a)首先 git pull 拉取最新的 master


b)然后切换到自己的分支上.

c)然后将 master 分支合并到自己的分支上

d)接着通过 git status 就可以看到自己的冲突文件了

解决这些冲突

e)修改完成之后,提交即可

git add .
git commit -m 'feat: search'
git push origin feature/kang

f)冲突就解决了~

1.6、分支冲突最好的解决办法(最推荐!!!)

1)git pull --rebase

例如我在本地 feature/yikang/fix 上工作(E),同时,远程的 master 上有新的提交(C 和 D).

远程 master: A -- B -- C -- D
本地 feature/yikang/fix: A -- B -- E

然后执行 git pull --rebase origin master ,会先拉取远程 master 上的 C 和 D 提交,然后将 E 放到 D 之后,如下:

本地 feature/yikang/fix: A -- B -- C -- D -- E

然后解决冲突就完事了~

2) git rebase master 

例如我在本地 feature/yikang/fix 上工作(E),同时,本地的 master 上有之前的提交(C 和 D).

本地 master: A -- B -- C -- D
本地 feature/yikang/fix: A -- B -- E

然后执行  git rebase master ,会把本地 master 上的 C 和 D 拉过来,接着将 feature/yikang/fix 上的 E,放到 D 之后,如下:

本地 feature/yikang/fix: A -- B -- C -- D -- E

然后解决冲突就完事了~ 

;