赞
踩
git branch
后面加上 -a 参数可以查看所有分支列表,包括本地和远程,远程分支一般会用红色字体标记出来
如果用git branch -a
没有显示全部的远程分支,可以通过git fetch
将本地远程跟踪分支进行更新,与远程分支保持一致。
后面加上 -vv
参数可以显示本地所有分支追踪(关联)的远程分支的情况,最后面是最近一次提交commit的注释。
git branch test
git branch 后面加上新建的分支名 (branchname) 即可完成本地分支的建立(分支内容与master一样,因为在新建分支时的当前所处分支为master(*标识) ,也即你是基于master新建的test分支),并且此分支仅存在于本地。
git checkout (branchname)
git checkout -b test2
比如说我现在test1分支,想查看远端test2的代码(此时本地会新建并切换一个分支,当然你可以把这个本地的分支名设置成与远端同名)
git checkout -b [local name] [origin name]
本地新建的分支,需要关联远程的某个分支才能 push 成功,否则会出现一下报错,关联命令会自动提示,按提示关联远程分支后会在远端新建一个同名的远程分支:
删除远程分支:
git push origin --delete test2
删除本地分支:注意不能删除当前所在分支,不然会报错,只能删除非当前分支
git branch -d test2
push命令:git push
接下来演示提交代码的整个流程:
首先在gittee上创建一个自己的仓库
将其colne到本地
创建并切换到本地分支:
将上传的文件放到里面,这里我放的1.txt
接下来就是
git add .
git commit -m " "
git push其中需要建立和远程分支的联系复制提示即可
如果需要将dev分支合并到master上
先切换到master上,再使用
git merge dev
1、采用merge和rebase后,git log的区别,merge命令不会保留merge的分支的commit,rebase会保留所有的commit:
rebase会把你当前分支的 commit 放到公共分支的最后面,所以叫变基。就好像你从公共分支又重新拉出来这个分支一样。
举例:如果你从 master 拉了个feature分支出来,然后你提交了几个 commit,这个时候刚好有人把他开发的东西合并到 master 了,这个时候 master 就比你拉分支的时候多了几个 commit,如果这个时候你 rebase master 的话,就会把你当前的几个 commit,放到那个人 commit 的后面。
merge 会把公共分支和你当前的commit 合并在一起,形成一个新的 commit 提交
2、处理冲突的方式:
1.(一股脑)使用merge
命令合并分支,解决完冲突,执行git add .
和git commit -m'fix conflict'
。这个时候会产生一个commit。
2.(交互式)使用rebase命令合并分支,解决完冲突,执行git add .和git rebase --continue,不会产生额外的commit。这样的好处是,‘干净’,分支上不会有无意义的解决分支的commit;坏处,如果合并的分支中存在多个commit,需要重复处理多次冲突。
- apt-get install git-review # ubuntu
- yum install git-review # centos
- pip install git-review # python方式安装
添加gerrit用户名
git config --global gitreview.username gerritadmin
代码工程添加 .gitreview配置文件
.gitreview
- [gerrit]
- host=192.168.3.57
- port=29418
- project=mec-demo
- defaultbranch=dev
新增代码
- gerrit@node-33:~/gerrit/mec-demo$ git add .
- gerrit@node-33:~/gerrit/mec-demo$ git status
- On branch test
- Changes to be committed:
- (use "git reset HEAD <file>..." to unstage)
-
- new file: test123
-
- gerrit@node-33:~/gerrit/mec-demo$ git commit -m "new file"
- [test 3f7515b] new file
- 1 file changed, 0 insertions(+), 0 deletions(-)
- create mode 100644 test123
- # 每次提交前都要和要提交到的分支对齐,有冲突的话需要解决冲突
- gerrit@node-33:~/gerrit/mec-demo$ git fetch origin dev:dev
- gerrit@node-33:~/gerrit/mec-demo$ git rebase dev
- Current branch review/unknown/test is up to date.
- gerrit@node-33:~/gerrit/mec-demo$ git review -c -v
patch 代码
在原分支上
- gerrit@node-33:~/gerrit/mec-demo$ git branch
- dev
- * test
- gerrit@node-33:~/gerrit/mec-demo$ git status
- On branch test
- nothing to commit, working directory clean
- gerrit@node-33:~/gerrit/mec-demo$ echo "test" >> test123
- gerrit@node-33:~/gerrit/mec-demo$ git status
- On branch test
- Changes not staged for commit:
- (use "git add <file>..." to update what will be committed)
- (use "git checkout -- <file>..." to discard changes in working directory)
-
- modified: test123
-
- no changes added to commit (use "git add" and/or "git commit -a")
- gerrit@node-33:~/gerrit/mec-demo$ git add .
- gerrit@node-33:~/gerrit/mec-demo$ git commit --amend
- # 每次提交前都要和要提交到的分支对齐,有冲突的话需要解决冲突
- gerrit@node-33:~/gerrit/mec-demo$ git fetch origin dev:dev
- gerrit@node-33:~/gerrit/mec-demo$ git rebase dev
- Current branch review/unknown/test is up to date.
- gerrit@node-33:~/gerrit/mec-demo$ git review -c -R -v
- .......
- To ssh://gerritadmin@192.168.3.57:29418/mec-demo
- * [new branch] HEAD -> refs/for/dev/test
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。