一、什麼是版本控制
我們在寫論文的時候,總是會不停地修改,下面這種狀況相信很多人都遇到過:
因爲不清楚自己刪除的東西以後是否會用到,新增的又是否正確,所以在每次修改之後都“另存爲”一個新的文檔,這時候要是有一個軟件能幫你記錄每一個版本,並且能顯示出各個版本之間的差異,那就方便多了。幸運的是,這樣的軟件還真有,Git 就是其中一個,功能如下所示:
二、版本控制系統的分類
版本控制可以分爲兩大主流類——集中式版本控制系統,分佈式版本控制系統,接下來討論他們之間的區別。
1.集中式版本控制系統
對於集中式版本控制系統(如CVS、SVN)而言,版本庫是集中存放在中央服務器的,開發者之間的合作方式是共用一個倉庫(repository),無論這個倉庫是在本地還是在遠端,所有成員都共同 存取 於同一個倉庫,如下圖所示:
集中式版本控制系統最大的 缺點 就是必須聯網才能工作,開發者想要取出代碼、提交到倉庫,或是對檔案庫做一些其他的操作,都必須在能夠連網的環境下進行,這會大大降低開發效率。
2.分佈式版本控制系統
分佈式版本控制系統(如Git)使得每個人的電腦上都是一個完整的版本庫,這樣,在工作的時候,就不需要聯網了,因爲版本庫就在你自己的電腦上。
在分佈式版本控制系統中,開發者可以進行“推”(push)的動作,其意義是將自身檔案庫中的變更送至其他的檔案庫;也可以進行“拉”(pull)的動作,其意義是獲取其他檔案庫的變更。
Git的優勢不單是不必聯網這麼簡單,後面我們還會看到Git極其強大的分支管理,其中最重要的意義在於檔案庫中包含了完整的版本管理數據、例如提交信息、版本變化記錄等等。 因此,所有對版本控制系統的操作,都可以直接在本機端的檔案庫中進行,包括提交、分支、合併、回退等。
三、Git的本地安裝與基本操作
參考文檔:https://www.cnblogs.com/specter45/p/github.html
https://www.cnblogs.com/wangmingshun/p/5424767.html
比較詳細Git Bash命令解釋:http://www.admin10000.com/document/5374.html
以下的介紹,都在Windows操作系統下
1.下載安裝git
- 下載網址:https://git-scm.com/download/win
- 下載完後,默認安裝即可,安裝位置可以自己設定
2. Git Bash的操作
- 打開
Git Bash
工具 - 綁定用戶
因爲Git是分佈式版本控制系統,所以需要填寫用戶名和郵箱作爲一個標識,用戶和郵箱爲github註冊的賬號和郵箱。
輸入語句:git config --global user.name "qichoy" git config --global user.email "[email protected]"
git config –global 參數
,有了這個參數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然你也可以對某個倉庫指定的不同的用戶名和郵箱。
- 創建本地倉庫
cd G: //進入G磁盤 cd Git //進入本地倉庫的文件夾 mkdir test //創建test文件夾 cd test //進入test文件夾下 git init //把這個目錄變成git可以管理的倉庫
創建完後,會在G/Git/test文件夾下創建一個.git隱藏文件夾(可以通過 “查看->顯示隱藏文件” 查看到)
四、爲Github賬戶設置SSH key
1.生成SSH key
先查看電腦中,C盤用戶目錄是否有.ssh目錄,看看裏面是否有rd_rsa和id_rsa.pub這兩個文件,如果有則跳到下一步;如果沒有這個目錄,通過$ ssh-keygen -t rsa -C “[email protected]”
來生成。
1)是路徑確認,直接按回車存默認路徑即可
2)直接回車鍵,這裏我們不使用密碼進行登錄, 用密碼太麻煩;
3)直接回車鍵
2. 查看ssh key公鑰
生成成功後,去對應目錄C:\Users\ASUS\.ssh裏(ASUS爲電腦用戶名,每個人不同)用記事本打開id_rsa.pub,得到ssh key公鑰(id_rsa.pub裏面的全部內容)
3.爲github賬號配置ssh key
- 然後打開SSH keys菜單, 點擊Add SSH key新增密鑰,填上標題,跟倉庫保持一致吧,好區分。接着將id_rsa.pub文件中key粘貼到此,最後Add key生成密鑰吧。
- title設置成倉庫的名稱——此時爲test,成功後顯示如下:
五、上傳本地項目到github
創建新倉庫的指令:
git init //把這個目錄變成Git可以管理的倉庫
git add sqlist.h //將工作文件修改提交到本地暫存區
git add . //將所有修改過的工作文件提交到本地暫存區
git commit -m "first commit" //把文件提交到倉庫
git remote add origin [email protected]:qichoy/test.git //將本地倉庫和遠程倉庫關聯
git push -u origin master //把本地倉庫的項目推送到遠程倉庫(github)上
1.將所有的項目文件放到文件夾G:/Git/test/中,示例:
2.將所有文件添加到倉庫
git add . //將所有文件添加到倉庫
git commit -m "說明語句" //把文件提交到倉庫,雙引號內是提交註釋。
3.關聯github倉庫
- 到github test倉庫複製倉庫地址,注意點擊SSH
- 也可以使用https協議,但是SSH速度快。
- 然後執行指令:
git remote add origin [email protected]:qichoy/test.git
4.上傳本地代碼
- 執行指令:
git push -u origin master
- 敲一個:yes, 然後回車
- 上面出現錯誤,是因爲倉庫地址複製錯了
5.最終效果
可以看到,我們上傳了三個文檔,其中,git commit -m "提交文檔"
,說明語句會在每個文檔後出現說明。
6.bug解決:
- bug1說明
-由於之前在關聯github倉庫時,輸錯了地址,所以需要重新關聯,但出現瞭如下bug:fatal: remote origin already exists.
正常情況下,如果已經關聯過一次遠程倉庫後,繼續輸入git remote add origin……
則會出現以上的問題,可以直接push,無需關聯。
bug1解決方案
如果輸入
$ git remote add origin [email protected]:qichoy(github帳號名)/test(倉庫名)git
提示出錯信息:fatal: remote origin already exists.
解決辦法如下:
1、先輸入$ git remote rm origin
2、再輸入$ git remote add origin [email protected]:djqiang/gitdemo.git
就不會報錯了!
更多參考:https://blog.csdn.net/dengjianqiang2011/article/details/9260435 - bug2說明
-如果在創建遠程倉庫時,勾選了Initliaze this repository with a README(即創建倉庫時,系統自動創建了一個README文件),在將本地倉庫內容推送到遠程倉庫(git push -u origin master
)時會出現如下bug:error: failed to push some refs to '[email protected]:qichoy/LIST.git'
bug2產生原因
本地的倉庫目錄中沒有遠程倉庫裏的README文件
bug2解決方案
先將遠程倉庫中的文件拉下來,使得本地倉庫也有README文件。
先輸入語句:git pull --rebase origin master
在這之後,輸入git push -u origin master
即可上傳成功
六、git的一些說明
- 說明
git init (初始化,如果不是git項目,這一步必須要有),通常情況下,本地倉庫只需要執行一次初始化
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:qichoy/test.git(創建本地與遠程倉庫的紐帶,通常只需要進行一次關聯)
git push -u origin master (第一次推送master分支的所有修改內容)
//此後,每次本地提交後(在完成`git add README.md`和`git commit -m "說明"`之後)
//只要有必要,就可以使用命令`git push origin master`推送最新修改
//這個也可以簡略地寫成:`git push`,將本地倉庫的內容推送至遠程倉庫github
- 推薦git教程——廖雪峯官網(非常詳細,可以自行了解g工作區,暫存區,分支等概念)
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000