Github與Git
以前只知道在GitHub上下一些代碼,然後在本地進行參考學習,由於最近寫代碼的過程中遇到了總是要頻繁修改版本的情況,纔開始決定了解學習一下可用於版本管理的GitHub與Git,以下爲學習過程的一點筆記。
爲什麼要用到Github?
Github是一個面向軟件的託管平臺,什麼時候會用到它?
- 想要造輪子或者復現論文的時候,先去github上看看別人有沒有做過以及別人是怎麼做的,畢竟代碼公開,在遵循開源協議的前提下,可以copy下來用的。
- 幾個小夥伴合作開發小軟件小項目的時候,放到github上來實現合作開發,相當於在雲上的代碼倉庫(公有倉庫免費,私有收費),還免費,省去了單獨建設倉庫服務器的成本,還有自己搭建物理主機服務器的麻煩。
要用Github,我需要會點什麼?
需要會Git。
-
那麼什麼是Git?
- 是用來實現代碼版本歷史管理的工具
-
爲什麼要會Git 或者說 Git有什麼用?
- 講個設計師的段子,金主爸爸要你改第一版,第二版,第三版,第n版, 你通宵改了後,他說,還是第一版的好,改回來吧。如果這個時候你沒有留存第一版的話,就會很麻煩。代碼也是一樣,老闆要你改第一版,第二版,第n版,最後或許還是要某一版(可能因爲新的版本不穩定之類的問題),就需要你留存下來某一版的歷史記錄,這就需要Git的幫助,即需要Git來做版本控制。
- 幾個小夥伴一起開發東西,各自將各自的代碼傳到服務器上,然後有需要時候下載其他人的代碼進行修改,修改後再傳上去,這就需要Git記錄誰,什麼時候,下載了什麼東西,改了什麼內容,這將有助於整個團隊開發的管理。
-
怎麼用Git?
-
-
下載安裝:window下載地址
剩下的我就是幾乎一路默認下來。。。
打開後的界面大概是這樣:
-
-
-
設置自己的名字以及郵箱:
$ git config --global user.name "Your Name" $ git config --global user.email "[email protected]"
- “Your Name”: 名字
- “[email protected]”: 郵箱
-
-
-
使用Git:
- 建庫&提交:
-
進入待管理的文件夾:
文件夾內情況爲: -
git init
初始化一個本地倉庫 -
將文件內的helloWorld.txt先放到倉庫緩存區,再正式提交到倉庫。
其中
git add helloWorld.txt
的意思是將文件添加到倉庫的緩存區(add可多次),而git commit -m "添加了helloWorld.txt"
則是將其正式提交到倉庫,而"添加了helloWorld.txt"則是告訴對這次更改的描述(commit一次性全提交了)。
-
回退版本:
-
git log
查看版本的情況:
第一行是commit id,可認爲其是版本號。藍色的HEAD表示是當前版本。
第二行是作者,包括我的名字以及郵箱。
第三行是修改時間。 -
回撤回從前的某一版本:
git reset --hard HEAD^
HEAD^
表示上一版本,HEAD^^
表示上兩個版本,幾個^
符號表示往上幾個版本,當版本過多的時候,比如回退1000個版本的時候寫成HEAD~1000
即可。 -
恢復到新版本:
首先利用git reflog
找到新版本的commit id,然後git reset --hard commitId
即可,Id寫前幾位即可(能找到唯一的版本即可)。
-
-
-
會了Git後,我該怎麼使用GitHub?
首先得去GitHub上註冊個賬號。
添加SSH Key,證明你是你
如果你想要提交一份代碼到GitHub上去,那麼GitHub需要知道是你而不是張三李四提交的,這就需要明確你是你,而已知Git支持SSH協議,因此可以通過公鑰來知道你是你。
ssh-keygen -t rsa -C "[email protected]"
創建SSH Key, 雙引號內爲自己的郵箱地址,一路回車下去,然後可以在主目錄中找到.ssh目錄,裏面有兩個文件,如下圖所示,其中公鑰可以告訴別人,私鑰不行:
將公鑰的內容複製。
登錄我的github,然後依次"Account settings" — “SSH Keys and GPG keys” — “New SSH Key” 填上自定義的title,並在Key文本框內粘貼公鑰中的內容即可。
添加後的Key爲:
創建倉庫
創建倉庫,然後自己填一些這個項目的信息。
將本地倉庫和GitHub倉庫進行相互的關聯
1. 本地倉庫 —> GitHub倉庫
本地已有的和遠程倉庫同名的倉庫可以進行關聯,比如:
git remote add origin git@github.com:flow-specter/0529_testGit.git
git push -u origin master
即可將同名的本地倉庫內容推送上去。
注意,如果出現以下報錯:
可通過git remote rm origin
刪除origin後,再用GitHub建議的命令git remote add origin [email protected]:flow-specter/0529_testGit.git
, git push -u origin master
即可。
2. GitHub倉庫 —> 本地倉庫
剛開始開發時建議首先創建遠程庫,再利用Git clone
從遠程庫克隆。
GitHub上的庫會有其地址,可以被用來克隆,比如:
git clone [email protected]:flow-specter/fucking-algorithm.git