Git及SourceTree的使用

其实用git也是很久了,刚入行就在github安家,靠着各路大神的教程,也能够配合github客户端更新自己的站点。第一家公司使用SVN,用的也算得心应手,但是每隔一段时间,总会有人把别人的代码或者文件覆盖了的情况,而且有时SVN出现问题就只能干等着了。上家公司只有我一个前端和一个Java后端,前后端完全分离,提交代码通过一个shell脚本直接就可以发布到git仓库了,没有分支的概念,全都是我自己处理,倒也是省心。

今天入职新公司第一天,用的依然是git,clone下来代码修改完之后,随手就发布到了master上,而且git push了两次才想起来需要分支的事情,然后就被打回来了,让我重来……习惯害死人啊……

新公司是需要每个人建立自己的分支,然后交给大牛review一下再由他负责合并到master上面。但是因为已经有了我的两次直接push,一下子慌了,不知道要怎么处理了(遇事就慌的毛病是改不掉了- -)。

老子说:慌鸡巴毛。静下心来想了想,先在git仓库里找到我push之前的commit id,然后在线建立自己的分支,再然后删掉本地分支,从远程仓库fetch一份到本地,这样事情就解决了,so easy!

  1. 找到远程仓库需要分支的地方的commitID,在此处在线建立分支,输入分支名称和commit id即可。
  2. 删掉本地分支:
    git checkout dev //切换到本地分支
    git checkout -d dev //删掉本地分支
  3. fetch远程分支到本地:
    git fetch origin dev:dev //会自动在本地新建分支

吃一堑长一智,举一反三,所以,多人协作的正确流程就应该是:

每个人拉取一份分支到本地干活,然后add修改的具体文件,然后commit然后push到远程分支,在远程仓库下发起一个合并请求,大牛review合格了就会给你合并,over。

代码表示就是:

1、git checkout -b 本地分支名 //切换到本地分支
2、git add <file> //最好是具体文件,防止把没改完的也提交上去
3、git commit -m "提交说明" //最好要有说明
4、git pull //先拉取远程分支,有冲突先合并后再重复2、3步骤
4、git push origin 远程分支 //提交到远程分支

如果其他人先于你建立了分支并发布到远程仓库,此时需要跟踪远端分支并建立同名的本地分支,等于是你俩共用一个分支进行开发

git checkout --track origin/远程分支名

git常用操作:

  • git init 初始化本地仓库,把当前目录当成git仓库

  • git status 查看状态

  • git log 查看提交日志

  • git log --pertty=oneline 单行显示

  • git relog 命令历史记录

  • git reset --hard HEAD 回退到当前版本

  • git reset --hard HEAD^ 回退到上一个版本

  • git reset --hard <commit id> 版本回退,commit id写前几位即可

  • git diff <filename> 查看上次提交的修改内容

  • git checkout -- readme.txt 撤销工作区的修改

  • git reset HEAD readme.txt 撤销暂存区的修改

  • git rm <filename> 删除仓库文件

  • git checkout -b dev 创建并切换到dev分支

    相当于:
    git branch dev 创建dev分支
    git checkout dev 切换到dev分支

  • git branch 查看所有分支

  • git merge master 先切到自己的分支,然后把主分支合并到自己分支(丢掉分支历史信息)

  • git merge --no-off 保存分支历史信息

  • git branch -d dev 删除分支, -D 强制删除

  • git branch -m old new 修改分支名

  • git branch -r 找到远程分支

  • git checkout --track origin/远程分支名 进入本地的远程对应分支

  • git stash 暂存未提交的修改

  • git stash pop 取出暂存的修改

其他

  • rimraf node_modules 删除 node_modules 文件

  • cls node 清空控制台

SourceTree的使用

以前自己用github客户端也是得心应手,偶尔用一下命令行也是很简单的操作,没有遇到过什么问题。项目复杂一些,需要多人合作,而且要正规的操作,所以再也不能胡来了。于是乎就看中了SourceTree这个神器,简单易用的界面,可以直接看出来代码的变化,用上手了就离不开了,大赞!

既然是GUI的工具,使用起来也是很简单的:

  1. 从远程库克隆:

    直接点击界面【新仓库】按钮,点击从URL克隆,填写远程库地址,选择本地文件夹,再起一个名字就OK了。
  2. 本地开发代码:

    从远程库克隆下来的代码就可以进行开发,可以新建分支,也可以直接在这个主分支上面进行操作。
  3. add修改后的代码:

    点击界面左侧【workspace】下面的【文件状态】即可查看已经修改后的代码,选中要提交的部分点击【未暂存文件】复选框即可提交,点击【已暂存文件】即可撤回提交。
  4. commit代码:

    直接点击菜单提交即可把代码提交到本地仓库,别忘了添加提交信息哟。
  5. push代码:

    如果是从主分支进行的修改,先在远程库新建一个分支,然后再将本地分支push到这个新建的远程分支,方便其他人review你的代码。
  6. 申请合并代码

    一般是由review你代码的人进行合并,你在远程提交一个merge request,添加合并信息即可。
  7. 其他操作:

    当远程库有更新的时候,SourceTree会提示你,你直接拉取即可更新本地分支代码。
    本地新建分支和合并分支直接点击相关菜单即可,十分便捷。