Git-Gerrit使用

0x01 新建分支

1
2
$ git checkout -b test remotes/origin/test   在origin/master的基础上,创建一个新分支:newBrach
$ git merge origin/master 表示在当前分支上,合并origin/master

0x02 代码提交的一般过程

1
2
3
4
5
git fetch origin
git add files
git commit -a -m "msg"
git push origin HEAD:refs/for/branch
refs/for/master是对应远程master的临时分支,作代码review使用,当review通过以后,提交的改动会合并至master分支。

0x03 对服务器上有新代码,本地分支已经滞后情况的处理

1
2
3
4
5
6
7
8
执行git rebase remote

解决冲突:
git rebase --continue
方式二:
git rebase origin/master #查看有“CONFLICT (content): ”的地方,手工解决冲突后,下一步
git add dev/controller/web/index.php #这只是一个举例,即要先add操作
git rebase --continue

0x04 审核不通过的处理

1
2
git commit --amend
在本地修改代码,改完后执行git add -A添加所有修改,然后执行git commit --amend, 在弹出的编辑窗口中,不要修改之前的change-id,其它信息也可保持不变,直接保存,退出。这里使用git commit --amend而不使用git commit -m的原因,就是要保持同一个change-id,这样在gerrit的审核界面中,还是同一个review界面,不会产生新的,只是增加了一个新的patch set 2

0x05 代码审核权限管理

1
2
3
4
5
6
审核权限有两种+1和+2 。+1权限表示同意代码提交,+2权限表示同意代码提交并赋予提交资格(界面上会多出一个submit按钮)如果有多个人同时+1了,但是没有被+2,代码仍然无法提交。而只要被+2了,不管是否有+1,代码都可以提交。
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ct commit
git config --global alias.df diff
git config --global alias.br branch

0x06 问题解决

BUG:多次提交,未上传出现多个commit的解决方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
1,查看提交历史,git log

首先你要知道自己想合并的是哪几个提交,可以使用git log命令来查看提交历史,假如最近4条历史如下:

commit 3ca6ec340edc66df13423f36f52919dfa3......

commit 1b4056686d1b494a5c86757f9eaed844......

commit 53f244ac8730d33b353bee3b24210b07......

commit 3a4226b4a0b6fa68783b07f1cee7b688.......
历史记录是按照时间排序的,时间近的排在前面。

2,git rebase

想要合并1-3条,有两个方法

1.从HEAD版本开始往过去数3个版本

git rebase -i HEAD~3
2.指名要合并的版本之前的版本号

git rebase -i 3a4226b
请注意3a4226b这个版本是不参与合并的,可以把它当做一个坐标

3,选取要合并的提交

1.执行了rebase命令之后,会弹出一个窗口,头几行如下:

pick 3ca6ec3 '注释**********'

pick 1b40566 '注释*********'

pick 53f244a '注释**********'
2.将pick改为squash或者s,之后保存并关闭文本编辑窗口即可。改完之后文本内容如下:

s 3ca6ec3 '注释**********'

s 1b40566 '注释*********'

s 53f244a '注释**********'
3.然后保存退出,Git会压缩提交历史,如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了。修改以后要记得敲下面的命令:

git add .

git rebase --continue
如果你想放弃这次压缩的话,执行以下命令:

git rebase --abort
4.如果没有冲突,或者冲突已经解决,则会出现如下的编辑窗口:

# This is a combination of 4 commits.
#The first commit’s message is:
注释......
# The 2nd commit’s message is:
注释......
# The 3rd commit’s message is:
注释......
# Please enter the commit message for your changes. Lines starting # with ‘#’ will be ignored, and an empty message aborts the commit.
5.输入wq保存并推出, 再次输入git log查看 commit 历史信息,你会发现这两个 commit 已经合并了。

0x07 gitlab使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
常用命令:
git branch -a #列出所有本地分支和远程分支
git branch --track [branch] [remote-branch] #新建一个分支,与指定的远程分支建立追踪关系
git checkout -b test #新建test并切换到test分支


test为自己的分支
git checkout test
git add *
git commit -m '跟新代码test'
git push origin test
git checkout master
git pull
git merge test
git add *
git commit -m '合并主分支'
git push
git checkout test
git pull origin master
然后就可以直接开发了...

忽略更新文件:
git update-index --assume-unchanged application/config/database.php

忽略本地修改:
git fetch --all
git reset --hard origin/master
坚持原创技术分享,您的支持将鼓励我继续创作!