# Git 使用流程
1. 準備工作
在[我的github代碼倉庫](https://github.com/thrillerqin)新建一個項目,項目名稱為qt_ex;
2. Git全局設置項查看和設置(Git global setup)
NaNundefined查看全局設置項
```
git config -l
```
- 設置全局設置項
```
git config --global user.name "qinbao"
git config --global user.email "haphqb@163.com"
```
3. 創建SSH Key
第1步: 在用戶主目錄下(在windows下git bash輸入命令*cd ~* 進入該目錄),看看有沒有.ssh目錄(由于.ssh是隱藏的,須用*ls -a* 查看),如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果已經有了,可直接跳到下一步。如果沒有,打開Shell(Windows下打開Git Bash),創建SSH Key:
```
$ ssh-keygen -t rsa -C "youremail@example.com"
```
你需要把郵件地址換成你自己的郵件地址,然后一路回車,使用默認值即可,由于這個Key也不是用于軍事目的,所以也無需設置密碼。
如果一切順利的話,可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
第2步:登陸GitHub,打開“Account settings”,“SSH Keys”頁面。然后,點“Add SSH Key”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內容。
具體參考[廖雪峰git教程之“遠程倉庫”](https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374385852170d9c7adf13c30429b9660d0eb689dd43a000)。
4. 初始化代碼倉庫
切換至項目所在目錄,初始化代碼倉庫。
```
cd existing_folder
git init
$ git remote add origin git@github.com:thrillerqin/qt_ex.git
git add .
git commit -m "Initial commit"
git push -u origin master
```
git init
3. 創建新的倉庫(Create a new repository)
```
git clone git@gitlab.haph.com:qinbao/qb-project.git
cd qb-project
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
```
5. Existing Git repository
```
cd existing_repo
git remote rename origin old-origin
git remote add origin git@gitlab.haph.com:qinbao/qb-project.git
git push -u origin --all
git push -u origin --tags
```
## 附: ##
- git add命令
|git_add_命令|描述
|-|-
| git add . | 他會監控工作區的狀態樹,使用它會把工作時的所有變化提交到暫存區,包括文件內容修改(modified)以及新文件(new),但不包括被刪除的文件。
| git add -u | 他僅監控已經被add的文件(即tracked file),他會將被修改的文件提交到暫存區。add -u 不會提交新文件(untracked file)。(git add --update的縮寫)
|git add -A |是上面兩個功能的合集(git add --all的縮寫)
- 給別人倉庫提交代碼的流程
當你想更正別人倉庫里的錯誤時,要按照下面的流程進行:
1. 先 fork 別人的倉庫,相當于拷貝一份別人的資料。因為不能保證你的修改一定是正確的,對項目有利的,所以你不能直接在別人的倉庫里修改,而是要先fork到自己的git倉庫中。
2. clone到自己的本地分支,做一些bug fix,然后發起pull request給原倉庫,讓原倉庫的管理者看到你提交的修改。
3. 原倉庫的管理者review這個bug,如果是正確的話,就會merge到他自己的項目中。merge的意思就是合并,將你修改的這部分代碼合并到原來的倉庫中添加代碼或者替換掉原來的代碼。至此,整個 pull request 的過程就結束了。
>[warning] 我嘗試用類比的方法來解釋一下pull reqeust。想想我們小學寫作業,作業就像倉庫,你的作業肯定會有很多錯誤,就相當于程序里的bug。老師把你的作業拿過來,相當于先fork。在你的作業上做一些修改批注,相當于git commit。最后把改好的作業給你,相當于發pull request,你拿到試卷重新改正錯誤,相當于merge。
### 附:
[我的github代碼倉庫](https://github.com/thrillerqin),僅供本人學習和使用。