美文网首页
工作Git+Sourcetree+Gerrit

工作Git+Sourcetree+Gerrit

作者: LouisHUI | 来源:发表于2017-04-07 18:35 被阅读2070次

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

    相关文章

      网友评论

          本文标题:工作Git+Sourcetree+Gerrit

          本文链接:https://www.haomeiwen.com/subject/ocvhattx.html