git与svn区别:
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
git初始化及基本操作:
初始化全局配置:因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。
- git config --global user.name "$username"
- git config --global user.email "$useremail"
git config --global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。
创建一个版本库:
- mkdir /gitproject/flask #新建仓库目录
- cd /gitproject/flask
- git init #初始化仓库
基本操作: 在flask目录中创建一个测试文件readme.txt内容为:11111
- git add readme.txt #将文件添加到暂存区中去
- git status #查看当前git的状态
- git commit -m readme.txt #把文件提交到git仓库
- #修改readme.txt内容,添加一行22222
- git diff readme.txt #查看文件修改了那些内容
版本回退:提交第二次修改的readme.txt文件 git add git commit
- git log #查看每次修改的历史纪录
- git reset --hard HEAD^ #退回到上一个版本
- git reset --hard HEAD^^ #退回到上上一个版本
- git reset --hard HEAD~5 #退回到前5个版本
- git reset --hard 6fcfc89(版本号) #退回到指定的版本
撤销修改:
- 知道自己要删除哪些内容的话,直接手动更改那些需要修改的文件,然后add添加到暂存区,最后commit
- 可以使用版本回退恢复到上一个版本,使用git reset --hard HEAD^
- git checkout --readme.txt #丢弃工作区的修改,其中--很重要,如果没有--则表示创建分支
- 如果readme.txt修改后好没有放到暂存区,使用撤销修改就回到和版本库一模一样的状态
- 如果readme.txt已经放入暂存区了,接着又做了修改,撤销修改则会回到添加暂存区后的状态
- 如果删除了一个文件在没有commit之前也可以使用checkout恢复删除的文件
git远程仓库:
- 添加远程仓库:
- 在github上注册用户后需要创建sshkey ssh-keygen -t rsa -C "youremail@example.com" 创建完后可在用户根目录下查看.ssh目录下的文件id_rsa 和id_rsa.pub
- 登陆github打开settings中的sshkey页面,点击add ssh key 天上任意的title,在key文本框里粘贴id_rsa.pub文件的内容
- 在github上创建一个新的仓库,create repository
- 在本地git上运行 git remote add origin https://github.com/$your github name/$your github project name.git
- git push -u origin master #推送到远程仓库,需要验证你的用户名和密码即github的用户和密码
- 从远程仓库克隆
- git clone 远程仓库地址