git 配置教程
# Git 教程
---
[TOP]
## 安装git
傻瓜式安装即可,这里就不赘述了
## 注册账号 https://gitee.com
## 配置
### (1)配置git 用户名和邮箱
git config --global user.name '你的用户名'
git config --global user.email '你的邮箱'
### (2)配置公钥
生成ssh公钥, [设置公钥](http://git.mydoc.io/?t=154712) 在提交的时候不用每次都输入.
```
# 生成 sshkey:
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
# 三次回车即可生成 ssh key
# C:/Users/Administrator/.ssh下会看到 id_rsa 和 id_rsa.pub 两个文件,其中id_rsa是私钥,不可泄露出去,而id_rsa.pub是公钥,可以公开。
1. 找到 id_rsa.pub 文件(使用记事本打开)
2. 复制里面的内容
3. 粘贴到 https://gitee.com/profile/sshkeys 下的公钥文本框里面,标题随便写。
```
## 第一种上传方式
本地已经有项目要上传到线上
### (1)创建版本库
mkdir test // 新建目录,路径中不要有中文字符!
cd test // 切换到目录下
### (2)初始化git
git init
### (3)将本地文件跟远程文件关联起来。
git remote add origin https://gitee.com/xxx/demo.git
### (4)github中的README.md文件不在本地代码目录中,可以通过如下命令进行代码合并
git pull --rebase origin master
执行上面代码后可以看到本地代码库中多了README.md文件
### (5)添加本地文件到git仓库,并提交文件添加记录
git add . && git commit -m '注释'
### (6)提交本地仓库修改记录到线上(可与上面命令一起写
git push -u origin master (第一次这样写,以后可以直接省略成 `git push` 即可)
## 第二种上传方式
本地无项目,想将远程文件下载下来
git clone https://gitee.com/xxx/demo.git
------
以上基本搞好一个项目的初始化了,下面是对项目文件的更多操作。
------
## 添加文件到本地git仓库 相当于svn的+
git add test.txt
## 提交文件到本地git仓库
git commit -m 'add test.txt'
```
1. 提交文件到git仓库相当于svn的commit.
2. 参数`-m`表示本次提交的说明,可以输入任意有意义的内容,这样方便从历史记录中找到改动记录。
3. 可以同时添加多个文件
```
修改文件,在文件中写上点东西
## 查看文件状态【提示消息中告诉我们哪些文件被修改】
git status
## 查看详细修改内容
git diff
再修改文件,在文件中写点东西
## 查看修改记录【打印出具体日志信息】 会显示版本号id对应的信息
git log
## 我们也可以以一种更简洁的方式查看日志,只需要加上“--pretty=online”参数即可
git log --pretty=online
## 版本回退
git reset --版本号
## 记录我们每次执行的命令“git reflog”
git reflog
## 撤销修改
git checkout --text.txt
## 删除文件
git rm text.txt
```
参考:
1. (深入学习:Windows下Git入门教程)[http://blog.csdn.net/huangyabin001/article/details/35557231]
# (上)是基本操作,必学
# (下)是分支操作,可以作为扩展。
2. 廖雪峰的git入门
```
---
## git和svn的区别
```
1. Git是分布式的,而Svn不是分布的.
相同的是:Git跟Svn一样有自己的集中式版本库和Server端。
不同的是:但Git更倾向于分布式开发,因为每一个开发人员的电脑上都有一个本地仓库,所以即使没有网络也一样可以Commit,查看历史版本记录,创建项 目分支等操作,等网络再次连接上Push到Server端。
2. 版本库:
SVN只能有一个指定中央版本库。当这个中央版本库有问题时,所有工作成员都一起瘫痪直到版本库维修完毕或者新的版本库设立完成。
Git可以有无限个版本库。每一个Git都是一个版本库,区别是它们是否拥有活跃目录(Git Working Tree)。如果主要版本库(例如:置於GitHub的版本库)发生了什麼事,工作成员仍然可以在自己的本地版本库(local repository)提交,等待主要版本库恢复即可。工作成员也可以提交到其他的版本库
3. Git的内容的完整性要优于SVN
4. Git把内容按元数据方式存储,而SVN是按文件.
因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。.git目录的体积大小跟.svn比较,你会发现它们差距很大。
5. Git没有一个全局版本号,而SVN有
6. Git下载下来后,在离线状态下可以看到所有的Log,SVN不可以
7. 分支(Branch)
在SVN,分支是一个完整的目录。且这个目录拥有完整的实际文件。如果工作成员想要开啟新的分支,那将会影响“全世界”.
在git,每个工作成员可以任意在自己的本地版本库开啟无限个分支。举例:当我想尝试破坏自己的程序(安检测试),并且想保留这些被修改的文件供日后使用, 我可以开一个分支,做我喜欢的事。完全不需担心妨碍其他工作成员。只要我不合并及提交到主要版本库,没有一个工作成员会被影响。等到我不需要这个分支时, 我只要把它从我的本地版本库删除即可
8. 提交(Commit)在SVN,当你提交你的完成品时,它将直接记录到中央版本库。当你发现你的完成品存在严重问题时,你已经无法阻止事情的发生了。如果网路中断,你根本没办法提交!而Git的提交完全属於本地版本库的活动。而你只需“推”(git push)到主要版本库即可。Git的“推”其实是在执行“同步”(Sync)。
來源:(话说Svn与Git的区别)[http://www.jianshu.com/p/bfec042349ca]
```