Git 的入門使用
學習一時爽,一直學習一直爽
Hello,大家好,我是 Connor,又和大家見面了。最近學習 Django 需要用到 Git,但是苦於之前沒有用過,所以花費了一點時間專門來研究了一下 Git 應該如何使用,我總結一下,讓我們一起來看看如何快速上手 Git 吧。
1. 安裝 Git
Linux 下,執行如下命令,即可安裝 Git:
$ sudo apt-get install git
Windows 下,訪問網址 https://git-scm.com/download/win 直接下載,或者點擊 這裏 直接下載,下載時會自動匹配符合你電腦的操作系統版本,直接下載即可。
2. Git 運行前的配置
當我們要運行 Git 之前,我們需要爲 Git 做一些配置,計算機會爲我們保留這些配置信息,只需要輸入一次,之後就再也不需要重複輸入。我們最主要需要進行的配置就是配置你的用戶名和郵箱,這是每一個Git 倉庫 都會要求的東西。
運行下面命令,配置你的用戶名:
$ git config --global user.name [用戶名]
運行下面的命令,配置你的郵箱:
$ git config --global user.email [郵箱]
3. Git 倉庫的操作
通常來說我們會有兩種情況來使用 Git 倉庫。第一種,從本地創建一個 Git 倉庫,並把它連接到遠程倉庫。第二種,從遠程倉庫克隆內容到本地。
3.1 對現有目錄進行初始化倉庫
有些時候我們不會先去創建倉庫再來創建文件,這樣的方式太麻煩,而且也不利於我們進行開發,修改,所以我們會事先對項目進行編寫,當寫的差不多的時候會在項目目錄直接進行初始化倉庫,這樣就簡單的將項目文件添加到了倉庫中。通過如下命令可以對現有目錄進行初始化倉庫:
$ git init
到這裏,我們就快速的對 Git 倉庫進行了初始化,我們只是在文件夾下創建了一個 .git 的文件夾,用於初始化倉庫。初始化完成後我們的項目並不會被跟蹤和同步。還需要後面的操作。
3.2 克隆現有的倉庫
有些時候我們並不需要從頭來創建一個倉庫。在公司維護代碼的時候,我們只需要從遠程倉庫中的內容下載到本地進行調整即可。所以我們需要執行下面的命令,來將遠程倉庫中的代碼下載到本地:
$ git clone [url/ssh]
4. Git 的文件基本操作
當我們擁有一個全新的倉庫或者克隆下來一個倉庫的時候,無外乎就是要對文件進行增刪改操作。而在 Git 下,文件只有兩種狀態,就是 已跟蹤 和 未跟蹤 這兩種狀態。我們所有的操作都是跟這兩種狀態有關的。
4.1 跟蹤新文件
當我們在本地倉庫中創建了一個新的文件之後,新的文件並不會自動被跟蹤,所以我們需要爲這些新的文件添加跟蹤設置。添加完跟蹤設置後,文件就將被存到文件暫存區。通過下面的命令可以讓 Git 添加新的跟蹤文件:
$ Git add [文件/目錄]
4.2 查看文件的狀態
當我們添加完文件跟蹤以後,命令行裏並不會看出有什麼變化,所以這個時候需要我們來查看文件的狀態。通過下面的命令來查看文件的狀態:
$ git status
比如說,我們添加了一個 ABC.md
文件,跟蹤完成後我們再查看文件的狀態:
$ git add ABC.md
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: ABC.md
提示我們添加了新的跟蹤文件 ABC.md。如果我們沒有進行跟蹤操作,就直接進行狀態查詢的話,就會出現下面的結果了:
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
ABC.md
4.3 暫存文件的操作
當我們進行跟蹤操作以後,添加的跟蹤文件就會出現在 Changes to be committed
分類之下。當我們對文件進行修改之後,保存退出,再運行查看文件狀態的操作,你會發現出現下面的情況:
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: ABC.md
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: ABC.md
你會發現 ABC.md
文件同時出現在了 已暫存區和未暫存區。在已暫存區中的 ABC.md
是我們使用跟蹤命令後的未修改之前的文件。而未暫存的,是我們修改之後,沒有進行跟蹤的文件。所以我們需要將最新的文件重新添加到文件暫存區。使用下面的命令來進行暫存區文件的更新:
git add [文件/目錄]
What?怎麼又是這條命令?驚喜不驚喜?意外不意外?這不就是我們爲新文件添加跟蹤的命令嗎?沒錯,就是這個命令。這個命令同樣用於將修改的文件從新添加到暫存區。
4.4 查看文件的修改
其實在查看文件狀態的命令中就已經爲我們顯示了哪些文件進行了修改,但是那只是籠統的一個顯示。只是告訴了你進行修改的文件的文件名。如果你想詳細的瞭解文件中的哪些內容進行了修改,你可以使用如下命令來進行查看:
$ git diff
執行這條命令之後,它會爲你展示出所有的修改文件,以及修改的內容。比如說我們查看剛纔的 ABC.md
文件在哪裏進行了修改:
$ git diff
diff --git a/ABC.md b/ABC.md
index e69de29..4ce303e 100644
--- a/ABC.md
+++ b/ABC.md
@@ -0,0 +1 @@
+slkdfjlaksdfjlkasjdflk
4.5 刪除文件
當我們有時候發現,有些文件不需要使用了,就需要刪除這些文件了。刪除的時候不應該只是簡單的刪除,應該從文件暫存區中也將他們刪除,通過下面的命令來刪除文件:
$ git rm [文件(夾)名]
但是這個命令只能在修改之後,並沒有添加到暫存區的文件使用,如果你在刪除文件之前,已經對文件進行了跟蹤並添加到了文件暫存區,那我們就需要添加 -f
參數來強制進行刪除:
$ git rm [文件(夾)名] -f
當然有的時候我們會出現這種情況:我們本地文件需要它,但是不需要將它上傳到遠程倉庫,所以我們需要只是從文件暫存區中將整個文件進行刪除,我們需要用到這條命令:
$ git rm --cached [文件(夾)名]
4.6 移動文件
有的時候,我們需要對文件名稱進行移動操作,這個時候我們需要用到下面的命令:
$ git mv [舊的文件路徑] [新的文件路徑]
比如我們將新建的 ABC.md
文件移動到 ABC
文件夾下,那我們進行如下操作即可:
$ git mv ABC.md ABC/ABC.md
$ cd ABC
$ ls
ABC.md
當然這是我們最簡單,最正常的使用方法,最變態的是這個命令可以用來重命名!是的,你沒有聽錯,就是重命名,非常騷的操作,舉個例子,我們將 ABC.md
改名爲 ABC.txt
:
$ git mv ABC.md ABC.txt
$ ls
ABC.txt
是不是騷得一批,重命名的方式也是厲害的狠啊。
4.7 提交文件
當我們對文件修改完成並存入文件暫存區之後,就可以進行提交操作了。注意,提交操作只會提交文件暫存區內的文件,如果你沒有將文件添加到文件暫存區,那麼你的提交是無效的。使用下面的命令進行提交:
$ git commit
這個時候你會進入到你的默認文本編輯器,裏面的內容大概是這樣的:
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
# Your branch is up to date with 'origin/master'.
#
# Changes to be committed:
# modified: .gitignore
# deleted: ABC.md
# new file: ABC.txt
#
你的只需要進行添加你要備註的內容就可以了。但是大多數人都認爲這個方式太麻煩。所以 Git 爲我們提供了另外一種方式,可以不進入編輯器就進行備註:
$ git commit -m '[你的備註]'
值得注意的是,這個備註內容不能爲空,必須要有備註內容,如果你不想進行備註的話,記得打一個空格即可。
5. 將本地文件推送至遠程倉庫
當我們進行過提交之後,就可以開始着手準備將本地倉庫的內容推送到遠程倉庫中了。
5.1 tag 標籤的操作
在我們推送之前,都會爲我們的文件添加標籤,簡單的來說就是版本號。通過版本號可以很方便的讓我們進行階段管理。首先,我們來爲我們的項目添加一個標籤:
$ git tag (-a)[標籤名]
這個 -a
參數是可有可無的,沒什麼太大的差別,和提交類似,我們也可以爲標籤添加備註信息:
$ git tag (-a) [標籤名] -m [備註]
當我們有時候手殘寫錯標籤名或者寫錯備註的情況常有,所以我們再來看看刪除標籤的方法:
$ git tag -d [標籤名]
我們添加修改完標籤之後,可以查看我們擁有哪些標籤,通過下面的命令來列出你所有的標籤:
$ git tag
如果你想詳細的查看某一個標籤,你可以通過下面的命令,來查看某個標籤的詳情:
$ git show [標籤名稱]
有些時候我們提交完成了,但是忘記了打上標籤,所以我們也可以爲過去的提交打標籤,首先我們通過 log
文件來查看文件的校驗碼,然後通過下面的命令即可:
$ git tag -a [標籤名] [(部分)校驗碼]
如果我們要把標籤推送到遠程代碼倉庫,就需要使用下面的命令:
$ git push [遠程倉庫名] [標籤名]
5.2 遠程倉庫操作
5.2.1 查看遠程倉庫
我們要將代碼推送到遠程倉庫中,就需要我們有一個遠程倉庫,我們可以通過如下命令來查看我們有哪些遠程倉庫:
$ git remote
5.2.2 查看遠程倉庫的詳細信息
當然,這隻會顯示出我們的遠程倉庫的名字,這個名字默認爲 origin
如果我們想查遠程倉庫的詳細信息,只需要添加一個參數即可 :
$ git remote -v
這樣就能顯示出遠程倉庫的詳細內容弄了,比如:
$ git remote -v
origin [email protected]:Connor_Zhang/newcrm.git (fetch)
origin [email protected]:Connor_Zhang/newcrm.git (push)
很輕鬆的展示出了遠程倉庫的信息。但是有的時候我們不能只看他的路徑,還要看更爲詳細的信息,這個時候就需要使用整條命令:
$ git remote show [倉庫名]
$ git remote show origin* remote origin
Fetch URL: [email protected]:Connor_Zhang/newcrm.git
Push URL: [email protected]:Connor_Zhang/newcrm.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
這樣就能夠查看更多關於遠程倉庫的信息了。
5.2.3 添加遠程倉庫
有時候我們在創建本地倉庫後,需要與已有的遠程倉庫進行連接,這個時候就需要我們自己手動添加遠程倉庫了。使用命令:
$ git remote add [倉庫名] [遠程倉庫的URL]
5.2.4 移除遠程倉庫
在前面說的連接到遠程倉庫的情況中,我們需要手動添加遠程倉庫,但是我們創建倉庫的時候,就已經爲我們創建好了默認的 origin
遠程倉庫,所以我們還需要移除遠程倉庫,溢出的命令爲:
$ git remote rm [倉庫名]
5.2.5 遠程倉庫的重命名
有些時候,我們就是認爲某個遠程倉庫的名稱特別難聽,我們就需要來爲遠程倉庫進行重名。通過 rename
操作可以簡單輕鬆的爲遠程倉庫重命名:
$ git remote rename [舊倉庫名] [新倉庫名]
5.2.6 將本地文件推送到遠程倉庫
當我們完成所有修改或創建任務之後,需要將我們本地的內容推送到遠程倉庫中的時候,需要使用下面的命令:
$ git push origin master
有的時候你會發現你並無法直接進行推送,是因爲當你和別人同時進行推送的時候,別人的東西已經推送上去了,但是你的本地和遠程倉庫發生了差距,這個時候你就需要先運行這條命令:
$ git pull
這個時候你需要先用這條命令將對方發佈到內容拉取到本地,然後再使用 push
命令推送到遠程倉庫即可
暫時大家用的到的 Git 命令就只有這麼多了,希望剛剛接觸 Git 小夥伴們能夠儘快掌握 Git 的使用方法,我是 Connor,一個從無到有的技術小白,我們下次再見!