工作Git+Sourcetree+Gerrit

在现在的工作开发中,一般都会使用版本控制来协同开发,在此我讲述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创建私人仓库的操作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容