【好懂】全網最通俗的Git入門教程

計算機方向搞科研、做項目,通常都需要github。

如果你想比較系統地管理自己的項目、上傳到Github,通常我們要用Git。我相信點進來的盒友們應該也是衝着這個來的。

比起網上氾濫的亂七八糟、往往只講某個部分的教程不同,這篇文章將完整介紹入門Git的所有基礎操作,而且,我相信我的介紹應該是全網最通俗的了,小刻看了都能跟着完成入門。

init

git init

初始化,創建.git目錄

add

就像複製文件之前,要先選擇要複製的文件;

這個也是這樣,把後面的參數對應的文件選擇,記到一個“暫存區”,表示要提交的內容。

git add .
或者
git add 目標文件

通常直接git add .,點是linux的一種路徑寫法,表示當前目錄下所有文件。

但是,有些時候,我們寫了好幾個文件,其中有的只寫了一半。按照規範,每一次提交的內容應該是清晰的,不要說什麼做了一半。此時我們就可以先只提交寫完了的,沒寫完的等寫完了再提交。

commit

提交。把add到暫存區裏的內容

如前面所說,每一次提交的功能應該是確定的,所以我們得給提交寫個備註,標明這次提交做了什麼。

git commit -m "說明文本內容"

通常這樣寫。

工作區、暫存區和倉庫

理解git的工作流程,包含了這三個概念:

工作區,就是指你放代碼的那個文件夾。就像一個工作臺一樣,裏面放着這會兒幹活要操作的部分(分支,這個暫時不多介紹)

暫存區,如前面所說,是一個類似購物袋的東西,用來選擇要提交的部分。

倉庫就是存儲代碼備份的地方,在.git文件夾裏面那個就叫本地倉庫。還可以有遠程倉庫,存到github等網絡位置。

設置個人信息

在提交前,要設置好自己的個人信息,這是因爲日誌中會記錄提交者和他的郵箱,方便協作和管理。

尤其是如果要提交到網絡位置這個就更加重要了。

如果是非正式的使用倒是無所謂可以隨便填。

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

通常這樣設置。這是全局設置,會應用於這臺計算機上所有的倉庫。

也可以單獨設置這個倉庫的

關聯到github

在把自己的倉庫提交到github上之前,需要先關聯。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

用這個創建自己的ssh密鑰。把裏面的郵箱改成自己的郵箱。

然後他就會問你把密鑰保存在哪裏,一般放在默認位置就可以了。,但是要記得默認位置,路徑。

打開剛剛你保存導出密鑰那個地方,裏面會有一個id_rsa和id_rsa.pub這兩個文件(默認名稱是這兩個)。.pub那個就是你的公鑰,另外一個是你的私鑰。把那個點pub文件用記事本打開,複製裏面的內容。

打開Github,登錄賬號,點右上角自己的頭像,Setting,然後點左邊的SSH and GPG keys。在第1個SSH密鑰那裏添加密鑰,把剛剛複製的公鑰內容粘貼進去。

設置好公鑰之後就可以在本地測試連接。

(下面這幾步,如果是windows系統,建議在git附帶的那個git bash裏執行,不然可能會出問題。)

ssh -T git@github.com

用這個可以測試是否可以正常連接

如果正常,會顯示

The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

這是第一次通過SSH連接到Github的正常提示,意思是目標主機指紋爲`SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU,讓你看看是不是真的、不是僞造的。

如果和這個一樣就yes就好了。

再執行一次測試連接,如果顯示

Hi 你的github用戶名! You've successfully authenticated, but GitHub does not provide shell access.

就是成功了。

如果失敗了,顯示

git@github.com: Permission denied (publickey).

先看看前面導入SSH公鑰到Github是否做對了。沒問題的話,一般是git沒帶上你剛剛生成的私鑰。

這種情況可以通過這個手動加載

ssh-add 到你私鑰的路徑

上傳到github

搞定了之後,就添加遠程倉庫。

如下所示。把裏面的連接換成你自己的github倉庫的鏈接。

git remote add origin https://github.com/Alice-Drop/Coding_Notes_Project.git

這樣我們就在git軟件裏添加了github倉庫,命名爲了origin

然後

git remote -v

應該就能看到添加的這個遠程倉庫了。

輸入

git push origin main

即可將當前分支提交到github上。

注意,git默認的分支名稱是master,而github已經改成了main。

【分支的內容後面講】

如果你需要指定提交哪個分支上去,就

git push origin 本地分支名:線上分支名

即可。

出現以下內容即提交成功

遇到下面這樣的 ssl error不要慌,多試幾次就好了。

fatal: unable to access 'https://github.com/Alice-Drop/Coding_Notes_Project.git/': OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0

可能遇到的疑難雜症

本地和遠程完全不一樣

$ git push origin master:main
To https://github.com/Alice-Drop/Coding_Notes_Project.git
! [rejected]       master -> main (fetch first)
error: failed to push some refs to 'https://github.com/Alice-Drop/Coding_Notes_Project.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

新手剛接觸git,很可能興致勃勃地就在github上創建了git倉庫並且手動在網頁上傳了一些東西。

包括本教程作爲零基礎教程,按照比較好理解的順序來的,也很可能會導致你順帶就這樣做了。

這個時候,你用git上傳的內容,會和github已經存在的內容完全沒有共同部分(因爲是分別創建的,創建時間、最初的文件都不同)

這時候,我們需要先把上面的內容pull到本地,與我們本地的文件合併,解決衝突,然後再提交。

git pull origin main --allow-unrelated-histories

後面的--allow-unrelated-histories是爲了合併兩個沒有共同部分的內容。

執行後,如果遇到衝突就會讓你解決衝突(一般沒有),沒有衝突了就會顯示

Merge branch 'main' of https://github.com/Alice-Drop/Coding_Notes_Project
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.

這是VIM編輯器,git讓你輸入這次操作的提示信息。我們可以保留默認的內容。按ESC然後輸入

:wq

按回車即可退出。

這時應該就解決了衝突,再去提交即可。


更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com