# 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]
```