1、git与SVN区别:
说一下自己的理解,git是分布式版本管理系统,每个PC都是一个独立且完整的版本库,一个人工程的丢失不会造成太大影响,只需远程下载即可,只要提交到远程,大家都可以查看与更新,每一笔提交都会有记录,安全性较高,适用于互联网上多人协作共同维护,甚至没有网络,个人都是可以编辑的,linux上操作较方便;svn是集中式,对网络要求较高,一般适用于局域网,比如一家公司的同一办公区,大家的每一笔提交集中到中央服务器上,因为是局域网,故速率较高,缺点也很明显,如果中央服务器报废,维护就麻烦很多,一般是windows下就可以操作。
2、git命令详解:
先放一张大神的图
git commit:
git branch:
git checkout
git merge:咱两是不同分支就合并,并产生一个新的分支
git rebase:我带我的嫁妆跟你走
这里发现如果当前分支(master)继承有个子节点(比方说是C1,分支叫bugFix),使用git merge bugFix;和使用git rebase bugFix。两者得到的结果一样:使分支bugFix和master一样均指向子节点。
Git merge CC是将分支CC的记录与当前分支合并(是否产生合并,以当前节点是否包含所有提交决定),而git rebase CC是将当前分支的工作复制到CC记录上。
测试:如果当前分支(master)继承父节点(比方说是C1,分支叫bugFix),使用git rebase bugFix则不会产生任何提交,提示“分支已经是最新”;而当前分支(master)有个子节点(比方说是C1,分支叫bugFix),使用git merge bugFix则将使当前分支master和bugFix一样指向C1。
(使用git merge和git rebase从用户角度来看,得到的结果是一样的,只是merge过程中有差异则会产生一笔新的提交,而rebase得到的是线性的结构,而且当前分支所在节点在最后合并的位置上)
HEAD:代表当前的指向——星号“*”
相对引用:^和~
撤销变更:git reset 和 git revert
git cherry-pick
交互式rebase
弹出的UI界面可以选择移动最近4笔提交的顺序,如图所示:
confirm后得到如下结果:
本地栈式提交:
提交技巧1:
提交技巧2:
git tags:
git describe:
选择父提交记录:
多分支处理:
远程仓库:
git clone:将远程仓库拷贝到本地仓库
git fetch:从远程仓库下载到本地
git pull:
git pull:相当于是 git fetch 和 git merge 的合并版
模拟团队合作:
git push:将本地仓库上传到远程仓库
远程服务器拒绝: