工作Git+Sourcetree+Gerrit

2017-04-07  本文已影响2070人  LouisHUI

在现在的工作开发中,一般都会使用版本控制来协同开发,在此我讲述Git的的日常使用。(本教程只针对工作不久的小白或者没有进行团队多人开发的成员)

1、Git基本操作

1.1 克隆代码

1.1.1 代码克隆

git clone -b remote-branch-name  url/project-name

解析:

remote-branch-name -> 后跟你要拉取的远程分支名  

url -> 可以使ssh或者https的地址

project-name ->指你要拉取的工程名

例如拉取retrofit代码

git clone -b master https://github.com/square/retrofit.git

master分支是默认分支,你也可以指定其它分支名称

1.1.2 用SourceTree拉取远程代码

复制下面选中的URL,打开SourceTree

SourceTree如图

点击“克隆/新建” ,将项目Url粘贴在下图的源路径/URL中,下面就可以Clone代码了

1.2、提交代码

如果你开发了一个功能,想要将你的代码提交到本地仓库,你可以使用git status命令 查看你添加了那些文件以及以及修改的文件和删除掉的文件。

添加单文件到Git文件管理中用 "git add <file>"

git add hotel/src/com/tuniu/globalhotel/activity/NewActivity.java

添加所有改动的文件到文件系统中

git add . 或者 git add --all

如果有文件改错了或者误删除 “git checkout -- <file>...”,

git checkout -- hotel/src/com/tuniu/globalhotel/activity/GHotelOrderFillActivity.java

确认无误后,使用git commit -m "日志"

git commit -m "测试测试"

1.3 提交错误,代码回退

回退使用git reset 命令

git reset --mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息

git reset --soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可

git reset  --hard:回退到某个版本,在此次提交后的代码丢弃掉

你可以这么理解:

git reset --hard commit-id 重置代码到你指定的位置,同时删除在它之后你提交的代码

git reset --mixed和soft  也重置到你指定的代码,但是会保留你修改的代码

如果不小心用了git reset --hard命令,又想查看自己又修改的代码,可以使用 git reflog 命令

查看你想要回退的版本,可以再次使用git reset命令回退到指定版本,重新进行reset操作或者使用git cherry-pick <commit-id> 将指定提交内容合并到当期分支上。

1.4 推代码到远程

git pull --rebase origin dev      #拉取远程分支最新的代码

git push origin dev                  #将当前代码推送到远程

将本地代码推送到远程dev分支上

1.5 提交服务器代码出现问题

如果提交到服务端的代码出现问题时

git revert + commitid 

重新执行1.4 的操作

2 团队协作之gerrit 

在实际开发中,很多都是团队共同开发,用户的代码提交并不会直接提交到仓库中,而是会提交一个类似中转站的地方,让团队其他成员review你的代码,防止发生一些低级的错误。

团队作战室,在push之前要先进行git pull 操作!!!

团队作战室,在push之前要先进行git pull 操作!!!

团队作战室,在push之前要先进行git pull 操作!!!

重要的事情说3遍。

2.1 推送代码

git pull --rebase origin dev     # 拉取远程分支,同时本地和远程进行rebase操作,你可以看做merge,效果上基本相同

git push origin HEAD:refs/for/dev  #dev 就是你远程分支名称

如果没有冲突,当前一次提交就OK了。

2.2 修改同事Review出来的问题

同事review你的代码发现你的代码有问题,会给你指出来,你需要进行解决然后重新push代码。

修改代码后,使用追加的方式进行commit,防止生成多个commit-id

git status

git add .(或者git add –all防止有删除的东西为提交) # 保存改动

git commit --amend #以追加的方式将改动的代码,添加到最后一次的提交代码中

git pull  --rebase origin dev

git push origin HEAD:refs/for/dev

在弹出的对话框中你可以修改提交日志,也可以继续使用上一次的提交日志

如果使用Sourcetree提交你的改动的话,在它的提交-右下角的“提交选项”下拉框中-选择“修改最后一次提交” 

上图也是以追加的方式进行提交,这样在你push时,会与gerrit上的提交保持同步不会出现多次的commit-id.

2.3 合并多个本地的多次commit

假设要合并最后的2个提交,可以按如下命令进行:

git rebase –i HEAD~2

使用该命令,你会进入一个交互式的界面,显示了最后两次提交,并且询问你要压缩哪些。

将第二个pick修改为squash或者s,然后输入":wq”退出。

这时git会自动第二个提交合并到第一个中去。并提示输入新的message(就是我们常说的comments),

编辑输入新的message,然后输入":wq"退出,

此时本地的(HEAD中)最后两次提交已经被合并为一个。git log可以查看。

如果需要提交到远端,运行git push --force origin master即可。

3 暂存代码

如果一个功能开发完了,在提交之前可以执行stash命令,对当前的代码进行保存,保存后可以执行pull命令,防止本地代码和远程代码冲突

git add --all

git stash save "your feature"

代码显示贮存代码列表

sourcetree 贮藏列表

git stash save stash@{0}  #应用贮存代码

git stash drop stash@{1} #删除贮存代码

4 删除多余分支

git branch -D git-test  # git-test是分支名

下一把更新git + bitbucket创建私人仓库的操作。

上一篇下一篇

猜你喜欢

热点阅读