Git 基础
1. Git 记录文件内容 (snapshot),而非差异 (patch)。
2. 文件的三种状态
3. 基本操作
-
初始化 Git 仓库
git init
-
添加文件到暂存区
git add <file>
-
将文件撤出暂存区
git reset HEAD <file>
-
提交
git commit -m <comment>
-
撤销对工作区的更改(危险)
git checkout -- <file>
-
添加远程仓库
git remote add <name> <url>
-
推送到远程仓库
git push [remote] [branch]
-
从远程仓库抓取
git retch [remote] git pull
分支
1. 基本操作
Git 的分支是指向 commit 的指针,因此十分轻量。
HEAD 指向当前所在分支。
-
新建分支
git branch <branch> git checkout -b <branch>
-
切换分支
git checkout <branch>
-
删除分支
git branch -d <branch>
2. merge
git merge <branch>
-
一个分支是另一个的祖先
快进 (Fast forword)
-
分支分叉
把两个分支最新的快照以及二者最新的共同祖先进行三方合并,合并的结果是产生一个新的提交对象
3. rebase
把一个分支里产生的变化补丁在另一个分支上重新打一遍
git checkout experiment
git rebase master
rebase 时应注意,不要对公共分支(一般为 master 分支)进行 rebase,公共分支只允许快进(Fast forward)。
重写历史
1. 改变最近一次提交
git commit --amend
2. 修改多个提交
例如,修改最近 3 个提交:
git rebase -i HEAD~3