git学习

最近开了个github,顺便学习一下git,同时对比一下svn。

手把手教你git:http://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=409525257&idx=1&sn=54b046e372fcde787c0e2e89e0da1def&scene=5&srcid=1214aq46Dwja2DAO64afcJQG#rd

git常用命令清单:http://blog.jobbole.com/78960/

git学习:http://www.liaoxuefeng.com/

一.git和svn的区别

   SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。

   Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

二.工作上的svn

其实我目前工作上还没有用整个打包svn代码的方式,更新线上的东西。

根据我知道的svn应用:

①svn checkout个副本,用钩子触发update 副本,同时rsync副本到对应机器上。

②svn 双机热备,其实在钩子里面运用了svnsync命令双机热备。

三.初学git的一些记录

一.创建版本库
git init #把这个目录变成git可以管理的仓库

git add file #把文件添加到暂存区

git commit -m “” #把文件提交到仓库,-m"" 是提交的注释

git status #查看是否还有文件未提交

git diff file #查看文件改了什么

二.版本回退
git log #最近到最远的日志

git log --pretty=online #更漂亮日志的输出

git reset --hard HEAD^ #回退到上一个版本

git reset --hard HEAD^^ #回退到上上一个版本

git reset --hard HEAD~100 #回退到前100个版本

git reflog #查看历史记录的版本号id

三.撤销修改
git checkout -- file #撤销在工作区还没放到暂存区的修改或者已经添加暂存区但是接着又作了修改,撤销修改回到添加暂存区后的状态。

四.删除文件
git rm file #删除工作区文件,并且将这次删除放入暂存区

五.远程仓库
①添加远程库
git remote add origin git@github.com:binhy/test-ssh-key.git #本地仓库于github仓库test-ssh-key关联
git remote -u origin master #把本地仓库分支master内容推送到远程仓库去
git push origin master #以后本地做了修改,运行这个命令,就能推过去远程仓库了

②克隆远程库
git clone git@github.com:binhy/testgit2.git

六.创建与合并分支
git checkout -b fenzhi1 #创建并切换到分支,相当于下面两条命令。
git branch fenzhi1 #创建分支
git checkout fenzhi1 #切换到分支

git merge fenzhi1 #在master分支上合并fenzhi1的内容
git branch -d fenzhi1 #删除fenzhi1分支
git branch #查看分支

#通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,我们来使用带参数 –no-ff来禁用”Fast forward”模式
git merge --no-ff -m "注释" fenzhi1 #合并fenzhi1 --no-ff表示禁用fast forward

七.bug 分支
git stash #把工作现场隐藏起来
git stash list #查看工作现场
恢复①git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
恢复②是使用git stash pop,恢复的同时把stash内容也删除了。


八.多人协作
①推送分支
git remote #查看远程库信息
git remote -v #查看远程库详细信息
git push origin master #把本地master 推送到远程仓库
git push origin fenzhi1 #把本地分支fenzhi1 推送到远程仓库

②捉取分支
git checkout -b fenzhi1 origin/fenzhi1 #创建远程origin的分支fenzhi1到本地来
git push origin fenzhi1 #把fenzhi1 推送到远程去
git pull #把最新的提交从远程拉下来,然后在本地合并,解决冲突,再推送

四.在看手把手教你git的文章上

①记录一个删除的例子,顺便加深理解:

首先理解:1.git rm file #删除工作区文件,并且将这次删除放入暂存区

            2. rm file #删除工作区文件,还没有放到暂存区

1.git rm file

2. rm file

①记录一个stash的例子,顺便加深理解:

2017-05-25

一. 导出干净代码,不带版本控制,将代码导出并 zip 打包后放在当前目录下,`output.zip`就是需要的文件,`-0`的意思是不压缩
git archive --format zip --output "./output.zip" master -0

原文地址:https://www.cnblogs.com/binhy0428/p/5102645.html