git命令行练习地址:git命令行练习地址
基础命令行操作
Git Commit
提交修改记录,将暂存区的文件提交到本地仓库
git commit -m'提交的备注信息'
Git Add
将工作区的文件提交到暂存区
Git Branch
创建分支,指针跟着切换
git branch <分支名>
git branch bugFix
git checkout <切换到分支名>
git checkout bugFix
git checkout -b <分支名>
git checkout -b bugFix
Git Merge
合并两个分支时会产生一个新的特殊的提交记录,新的提交记录有两个父节点。指针指向新的提交记录
git merge <分支名(将这个分支合并到当前分支,合过来)>
git merge bugFix
未合并 合并后:执行git merge bugFix 练习
git checkout -b bugFix
git commit -m '在bugFix分支上提交一条记录'
git checkout master
git commit -m '在master分支上提交一条记录'
git merge bugFix
Git Rebase
Rebase 的优势就是可以创造更线性的提交历史。产生一个新的提交记录,只有一个父节点。
git rebase <分支名(将当前分支合并到这个分支,合过去)>
git rebase master
未合并 合并后:执行git rebase master 再次合并:切换到master分支,再执行git rebase bugFix 练习:
git checkout -b bugFix
git commit -m '在bugFix分支上提交一条记录'
git checkout master
git commit -m '在master分支上提交一条记录'
git checkout bugFix
git rebase master
提交记录移动
HEAD
HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录。 HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。 HEAD 通常情况下是指向分支名的(如 bugFix)。在你提交时,改变了 bugFix 的状态,这一变化通过 HEAD 变得可见。 分离的 HEAD 就是让其指向某个具体的提交记录而不是分支名 操作前 操作后:执行
git checkout C1;git checkout master;
git commit;git checkout C2
操作前: 操作后:执行git checkout C1 练习:
git checkout C4
相对引用
哈希值:基于 SHA-1,共 40 位; 通过指定提交记录哈希值的方式在 Git 中移动不太方便,相对引用从一个易于记忆的地方(比如 bugFix 分支或 HEAD)开始计算。 使用 ^ 向上移动 1 个提交记录,放在引用参照后面,如master^,移动到 使用 ~ 向上移动多个提交记录,如 ~3
^练习
操作前: 操作后:执行git checkout master^ 操作前 操作后:执行
git checkout C3
git checkout HEAD^
git checkout HEAD^
git checkout HEAD^
练习
git checkout bugFix
git checkout bugFix^
git checkout C3
~练习
操作前 操作后:执行git checkout HEAD~4 强制修改分支位置(移动分支),可以直接使用 -f 选项让分支指向另一个提交; 例如:git branch -f master HEAD~3:会将 master 分支强制指向 HEAD 的第 3 级父提交。 操作前 操作后:执行git branch -f master HEAD~3 练习:
git branch -f master C6
git branch -f bugFix C0
git checkout C1
|