git
First Step
1 | git config --global user.name "xxx" |
Create repo
1 | git init |
.git 目录说明:
hooks:记录一些校验用的 goal 值
info:配置,如 .gitignore
objects:主要目录,只要这个不丢所有信息都可以还原
refs:记录分支
remotes:远端分支
1 | git commit -m ’first commit‘ |
此时 objects 和 refs 会略有变化
Clone One
1 | git clone repourl |
A Basic Workflow
- Edit file:
vim / emacs / etc
- Stage the changes:
git add (file)
- Review your changes:
git status / git diff
- Commit the changes:
git commit
Branching and Merging
Branching
创建分支
1 | git branch xxx |
查看分支状态
1 | git branch |
切换分支
1 | git checkout xxx(分支号) |
删除分支(-d 只可删除已被 merge 的空指针,-D 强制删除分支指针)
1 | git branch -d xxx |
Merging
合并分支
1 | git merge xxx |
可视化解决冲突
1 | git mergetool |
Collaboration
拉取远端代码
1 | git clone xxx |
提交代码到远端,如果远端被别人修改了,此时会 push 失败
1 | git push origin master |
失败的话就要先把远端的新版代码 fetch 下来
1 | git fetch |
然后把 fetch 下来的新代码和自己改的代码 merge 之后就可以 push 了,或者直接 pull,不建议使用,git pull = git fetch + git merge
或者用 rebase 保证线性历史(下图等价于 git pull –rebase = git fetch + git rebase)
查看
1 | git log xxx(默认 HEAD) |
–oneline:简单参数展示
–graph:简易图像
–all:把所有分支展示
–decorate:把分支名也展示
返回两图差集:
1 | git log A ^B |
多人协作常用流程
- 新建远程分支
- git clone
- git branch -avv
- fit checkout -b dev origin/…
- git push origin <本地分支名>:<远程分支名>
others:
与远程代码同步
1
git pull origin <分支名>
更新远程路径列表
1
git remote update origin --prune xxx
添加远程路径
1
git remote add origin xxx