今天是git專題的第二篇,我們來介紹一下git的基本配置,以及建立一個git倉庫的基本方法。
首先申明一點,本文不會介紹git的安裝。一方面是大部分個人PC的系統當中都是已經裝好了git的,另外一方面是git安裝的教程和內容網上太多了,大同小異,所以這部分我們就略過了。如果你打開命令行輸入git提示報錯的話,那么可以百度一下你對應系統的git安裝方法。
git配置
git常用的配置內容不多,一般來說最常用的就只有兩個。一個是user相關的配置,一個是alias相關的配置。下面就來詳細說說,首先講講user的配置。
user是配置你的用戶名和郵箱,這是一個非常常用的配置。因為像是github和gitlab等等代碼倉庫,當我們使用git命令與它們交互的時候,它都會通過git的配置獲取我們的郵箱來和賬戶進行關聯,從而對我們的賬號進行驗證。配置的方法也很簡單,主要有兩種方法,一種是通過git config命令來配置,另外一種我們等會一起說。
先來看看config命令:
git config --global user.name chengzhi
git config --global user.email chengzhi@gmail.com
這里的global表示的是全局配置,一次配置全局生效。
第二個配置是alias配置,也就是別名配置。別名配置的用途是我們自己給git命令起一個別名,這樣當我們輸入命令的時候可以進行簡化。比如說git當中切換分支的命令是git checkout xxx,這里的checkout單詞很長,我們經常會拼錯。我們可以給它起一個別名是co,這樣命令就成了git co xxx,相比起來要舒服很多。
我們同樣可以使用git config命令來完成別名的配置:
git config --global alias.st status # st 替換status
git config --global alias.co checkout # co 替換checkout
下面再來說說第二種方法,第二種方法就是直接修改git的配置文件。在windows系統當中,git配置文件的路徑是C:\Users\Administrator,如果是Linux或者是Mac系統,配置文件地址是~/下。
我們cd到對應的地址尋找一下gitconfig這個文件,如果找不到可以自己創建一個。我們在文件當中輸入我們想要進行的配置就行了,這里提供一個模板:
[user]
name = chengzhi email = chengzhi@gmail.com [alias] co = checkout br = branch ci = commit st = status
當然在這個config當中我們還可以進行一些其他的配置,比如配置git默認的編輯器成emacs等等,但一般這些配置不是很常用,所以我們就不提了,感興趣的可以自己了解一下。
一般來說配置用戶名和常用的別名就可以了。
配置ssh
git安裝好了之后,我們就可以注冊github賬號開始我們的開源旅程了。這里說明一下,git和github其實並沒有特殊的關系,github只是使用git的開源代碼倉庫而已。前面也說到過使用git作為工具的代碼倉庫有很多,除了github之外還有gitlab以及國內這幾年比較火的碼雲等等。
注冊成功之后,我們進入github需要做一件事情就是配置ssh。ssh是安全外殼協議,它本身和git沒什么關系,主要是為了使用它來進行安全驗證。說白了為了證明你是你,為了方便根據賬號做權限管理。比如阻止你clone你沒有權限的代碼,阻止你push代碼到沒有權限的遠程等等。說白了,這是一個安全工具,通過它可以讓我們的賬號和代碼更加安全。
ssh相關的細節不做過多深入,感興趣的同學可以自行了解,我們簡單說下應該怎么配置。首先我們需要使用ssh-keygen工具來生成我們的ras秘鑰。ras是一種對稱加密算法,它的加密原理是生成一對秘鑰,一個是可以分享給別人的公鑰,一個是你自己保管的私鑰。簡單來說持有公鑰一方可以驗證私鑰的正確性,但是不可以破解私鑰加密的數據。所以我們會把公鑰上傳到各個網站,在自己的機器保留私鑰。
我們在命令行當中輸入:
ssh-keygen -t rsa -C "chengzhi@gmail.com"
這里傳入的是你自己剛剛設置在git當中的郵箱,之后系統會提示你輸入密碼,之后我們查看公鑰和私鑰需要輸入密碼。這里可以不設置,敲兩個回車即可。完成之后,我們可以輸入命令查看我們的公鑰:
cat ~/.ssh/id_rsa.pub

接着把屏幕上顯示的內容拷貝下來,填到github當中。具體的路徑是先點擊右上角自己的頭像,選擇settings,在彈出的頁面當中選擇SSH and GPG keys,再點擊右上角的New SSH key,起一個名字再把剛才復制的內容粘貼進去即可。

這樣當我們clone倉庫的時候就可以使用SSH協議代替https協議了,這樣會更加安全。

github創建倉庫
最后,我們來介紹一下在github當中創建倉庫的方法。第一種方法是創建一個空白倉庫,這個很簡單,我們可以直接在github當中操作。
點擊右上角頭像,選擇Your Repositories,之后點擊右上角的New新建即可。

在之后彈出的頁面當中我們填上項目的名稱以及簡介即可,下圖框出的三個選項前兩個可選可不選,第三個一般不選。前兩個選項如果選上會替我們生成readme以及gitignoree文件,這兩個文件的用途我們以后會說,可選可不選隨意。第三個框表示開源許可證,和我們關系不大,可以忽略。

如果說我們已經在本地開發好了內容,想要同步到github當中這時候應該怎么辦?當然我們也可以現在github創建,再把本地的代碼拷貝進去,但顯然這樣做很low,我們還有更好的辦法。
當然我們在github創建項目是免不了的,創建好了之后,我們要做的就是把本地的文件夾和遠程的這個剛建好的倉庫關聯起來。首先,我們在本地的文件夾當中運行git init,在本地初始化一個git倉庫。
git init
下面我們要做的就是關聯本地的倉庫和遠程的倉庫,並且把本地的倉庫當中的內容push到遠程去。為了做到這一點,我們運行git remote add origin命令給本地的git倉庫增加一個遠程的源,這里后面跟着的鏈接是我們剛才在github里創建好的倉庫的地址。
git remote add origin git@github.com:moutsea/git-tutorial.git
由於這個git-tutorial是我們自己創建的,所以是沒有問題的,如果add別人的repo可能會報錯。添加完成之后我們需要拉取遠程的改動,因為我們在創建repo的時候創建了一個readme文件,這也算是一個改動,我們需要把這個改動拉下來,和遠程保持同步之后再推送更新。
記住這一點,我們在push代碼到遠程之前,一定要先通過git pull和遠程先保持同步之后再進行推送。
但是我們直接git pull是不行的,會報錯,因為雖然本地和遠程關聯起來了,但是分支沒有關聯,它根本不知道該去pull哪個分支。我們需要把本地的master分支關聯遠程的master分支,但是這又迎來一個新的問題。我們本地暫時還沒有任何改動,這個master分支實際上是不存在的,所以我們需要先提交本地的文件到git倉庫。
這里的兩個命令很常規,首先是git add .這里的.表示添加全部變更,使用.的時候要小心,因為有時候不是所有文件都需要添加的。大家知道就好,細節我們以后再說。然后是git commit -m提交到git倉庫,由於我們配置了alias,所以可以使用ci代替commit。-m是message的意思,后面需要傳入一個字符串,表示這個改動的備注,方便以后查看。

注意這里的commit操作並不是提交到遠程,而是提交到本地的git倉庫。terminal當中會把git添加的文件名都輸出出來,由於我用的是中文,所以出來的是亂碼,不過這沒有關系,至少我們add成功了。
之后我們用命令把本地的master和遠程的master分支關聯起來,其實也就是給本地的master分支添加一個上游:
git branch --set-upstream-to=origin/master master
現在一切都已經就緒了,按理說我們直接git pull之后在git push就可以了。但還有一個小問題是你會遇到這么一個報錯:fatal: refusing to merge unrelated histories.
這個報錯的意思是說不能夠將兩個沒有關系的歷史記錄合並起來,原因是我們commit到本地git倉庫的時候,本地的master還沒有和遠程的master分支取得關聯。git默認是不允許將沒有關聯的記錄進行合並的,不過這個問題也很好解決,我們只需要加上參數強制讓它允許就可以了:
git pull --allow-unrelated-histories
這樣我們就會發現它已經成功了,遠程的readme文件已經被拉取了下來。之后我們再運行git push即可。由於我們已經將本地的master和遠程的master取得了聯系,我們只需要git push就可以了,不需要git push origin master了。
我特意為git專題創建了一個github的repo,鏈接如下:https://github.com/moutsea/git-tutorial
今天的文章到這里就結束了,如果喜歡本文的話,請來一波素質三連,給我一點支持吧(關注、轉發、點贊)。
本文使用 mdnice 排版
- END -{{uploading-image-690710.png(uploading...)}}