团队协作git操作流程:
- git clone XXX //克隆代码库(默认仓库名origin)
- git checkout -b test //新建并切换到该分支
- // modify some files //完成修改
- git add . //把修改加入index中
- git commit -m '' //提交修改到本地test分支
review代码
- git checkout master //切换到master分支
- git pull //更新代码到工作台
- git checkout test //切换到test分支
- git meger master //把master分支的代码merge到test分支
- git push origin 分支名 //把本地当前分支的代码push到远程库origin指定的分支上
- 目前正在test分支上面开发某个功能,但是没有完成。突然一个紧急的bug需要处理
- git add .
- git stash
- git checkout bugFixBranch
- git pull --rebase origin master
- fix the bug
- git add .
- git commit -m ''
- git push
- git checkout test
- git stash pop
- continue new feature's development
Git工作流
- git init //初始化本地git环境,默认分支名master
- git clone XXX//克隆一份代码到本地仓库,默认仓库名origin
- git pull //把远程库的代码更新到工作台
- git pull --rebase origin master //强制把远程库的代码跟新到当前分支上面(防止有人对特性分支所基于的分支进行rebase操作)
- git fetch origin // 把远程仓库origin的代码更新到本地缓存(此时,抓取到的分支不能直接操作,要建立对应的本地分支,见下面一行)
git checkout -b test origin/test // 新建本地分支test,使其跟踪远程分支orgin/test(本地和远程分支的名称最好一致)
- git add . //把本地的修改加到stage中
- git commit -m 'comments here' //把stage中的修改提交到本地库
- git push //把本地库的修改提交到远程库中
- git branch -r/-a //查看远程分支/全部分支
- git checkout master/branch //切换到某个分支
- git checkout -b test //新建test分支
- git checkout -b 本地分支名 远程仓库名/远程分支名 //将远程git仓库里的指定分支拉取到本地
- git branch -d test //删除test分支
- git push origin --delete test //删除远程仓库origin下的test分支
- git merge master //假设当前在test分支上面,把master分支上的修改同步到test分支上
- git merge tool //调用merge工具
- git rebase [变基分支paul] [目标分支master] // 变基操作可以使历史记录更加整洁。在执行变基操作前,要先切换到变基分支。需注意只能将变基用在从未推送至公共仓库的提交上(不对除本地仓库外还有副本的分支执行变基)
- git checkout master
- git merge paul
- git stash //把未完成的修改缓存到栈容器中
- git stash list //查看所有的缓存
- git stash pop //恢复本地分支到缓存状态
- git blame someFile //查看某个文件的每一行的修改记录()谁在什么时候修改的)
- git status //查看当前分支有哪些修改
- git log // 查看当前分支上面的日志信息
- git log 的常用选项
- -p 按补丁格式显示每个更新之间的差异。
- -<n> n代表任何正整数,仅表示最近的若干条提交。
- --stat 显示每次更新的文件修改统计信息。
- --shortstat 只显示 --stat 中最后的行数修改添加移除统计。
- --name-only 仅在提交信息后显示已修改的文件清单。
- --name-status 显示新增、修改、删除的文件清单。
- --abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
- --relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
- --graph 显示 ASCII 图形表示的分支合并历史。
- --pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format. git log --pretty=format:"%h - %an, %ar : %s" //自定义日志打印格式
- git diff //查看当前没有add的内容(工作目录与暂存区的区别)
- git diff --cache //查看已经add但是没有commit的内容(暂存区和已提交的区别)
- git diff HEAD //上面两个内容的合并
- git reset HEAD <file> // 撤销某文件的暂存(无hard选项只影响暂存区)
- git reset --hard HEAD // 撤销工作目录修改
- git checkout -- [文件] // 单个文件回滚到上次提交的版本
- git reset --soft HEAD^ // 撤销本地提交(commit),保存工作目录的修改
- git reset --hard HEAD^ // 撤销本地提交,不保存工作目录的修改
- git push [仓库名] [分支名] -f //撤销远程修改,(用在上面那条命令之后)
- git remote // 查看远程仓库
- git remote add <远程仓库名缩写> <url> // 添加远程仓库
- echo $HOME //查看git config的HOME路径
- export $HOME=/c/gitconfig //配置git config的HOME路径
多人协作的工作模式通常是这样:
首先,可以试图用
git push origin <branch-name>
推送自己的修改;如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并;如果合并有冲突,则解决冲突,并在本地提交git add, git commit;
解决掉冲突后,再用
git push origin <branch-name>
推送就能成功!