其实用git
也是很久了,刚入行就在github
安家,靠着各路大神的教程,也能够配合github客户端更新自己的站点。第一家公司使用SVN,用的也算得心应手,但是每隔一段时间,总会有人把别人的代码或者文件覆盖了的情况,而且有时SVN出现问题就只能干等着了。上家公司只有我一个前端和一个Java后端,前后端完全分离,提交代码通过一个shell脚本直接就可以发布到git仓库了,没有分支的概念,全都是我自己处理,倒也是省心。
今天入职新公司第一天,用的依然是git,clone
下来代码修改完之后,随手就发布到了master
上,而且git push
了两次才想起来需要分支的事情,然后就被打回来了,让我重来……习惯害死人啊……
新公司是需要每个人建立自己的分支,然后交给大牛review一下再由他负责合并到master
上面。但是因为已经有了我的两次直接push
,一下子慌了,不知道要怎么处理了(遇事就慌的毛病是改不掉了- -)。
老子说:慌鸡巴毛。静下心来想了想,先在git仓库里找到我push之前的commit id,然后在线建立自己的分支,再然后删掉本地分支,从远程仓库fetch一份到本地,这样事情就解决了,so easy!
- 找到远程仓库需要分支的地方的commitID,在此处在线建立分支,输入分支名称和commit id即可。
- 删掉本地分支:
git checkout dev //切换到本地分支
git checkout -d dev //删掉本地分支 - fetch远程分支到本地:
git fetch origin dev:dev //会自动在本地新建分支
吃一堑长一智,举一反三,所以,多人协作的正确流程就应该是:
每个人拉取一份分支到本地干活,然后add修改的具体文件,然后commit然后push到远程分支,在远程仓库下发起一个合并请求,大牛review合格了就会给你合并,over。
代码表示就是:
|
如果其他人先于你建立了分支并发布到远程仓库,此时需要跟踪远端分支并建立同名的本地分支,等于是你俩共用一个分支进行开发
|
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的工具,使用起来也是很简单的:
从远程库克隆:
直接点击界面【新仓库】按钮,点击从URL克隆,填写远程库地址,选择本地文件夹,再起一个名字就OK了。本地开发代码:
从远程库克隆下来的代码就可以进行开发,可以新建分支,也可以直接在这个主分支上面进行操作。add修改后的代码:
点击界面左侧【workspace】下面的【文件状态】即可查看已经修改后的代码,选中要提交的部分点击【未暂存文件】复选框即可提交,点击【已暂存文件】即可撤回提交。commit代码:
直接点击菜单提交即可把代码提交到本地仓库,别忘了添加提交信息哟。push代码:
如果是从主分支进行的修改,先在远程库新建一个分支,然后再将本地分支push到这个新建的远程分支,方便其他人review你的代码。申请合并代码
一般是由review你代码的人进行合并,你在远程提交一个merge request,添加合并信息即可。其他操作:
当远程库有更新的时候,SourceTree会提示你,你直接拉取即可更新本地分支代码。本地新建分支和合并分支直接点击相关菜单即可,十分便捷。