1.创建分区并切换到分区
git checkout -b 分区名
2.创建分区
git branch 分区名
3.切换分区
git checkout 分区名
4.查看所有分区
git branch -a
5.删除分区
git branch -d 分区名 (已合并到当前分区)
git branch -D 分区名 (还没有合并到当前分区,注意原来合并过的数据会丢失)
6.查看提交日志
git log
--pretty=oneline 单行显示
git log --graph --pretty=oneline
--abbrev-commit 显示id的前7位 (即可使用操作的位数)
git log --graph --pretty=oneline --abbrev-commit
7.合并其他分区,到当前分区
git merge 分区名
注意有冲突的话需要解决冲突后才能提交
如果分支只有你自己一个人用的话,可以使用下面的方式,合并分区
git rebase 分区名
7.工作区和暂存区文件区别
git diff 对比的是同一个文件在工作区和暂存区的区别
git diff --cached 对比的是同一个文件在暂存区和本地仓库的区别
git diff HEAD 对比的是同一个文件在本地仓库和工作区的区别 (HEAD 指向的是 local repository 中最新提交的版本)
git 目录中的文件都在工作区
git add 后相应的文件就复制到了暂存区
git commit 后相应的文件就提交到本地仓库
git push 后相应的文件就推送到远程仓库了
git 合并方式
git merge (git merge --ff)
git merge --no-ff
git merge --squash
fast-forward (--ff)
Git 合并两个分支时,如果顺着一个分支走下去可以到达另一个分支的话,那么 Git 在合并两者时,只会简单地把指针右移,叫做“快进”(fast-forward)不过这种情况如果删除分支,则会丢失merge分支信息。
–squash
把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用–squash进行合并,此时文件已经同合并后一样了,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并。
–no-ff
关闭fast-forward模式,在提交的时候,会创建一个merge的commit信息,然后合并的和master分支
merge的不同行为,向后看,其实最终都会将代码合并到master分支,而区别仅仅只是分支上的简洁清晰的问题,然后,向前看,也就是我们使用reset
的时候,就会发现,不同的行为就带来了不同的影响
git merge和git rebase 区别参考