計算機方向搞科研、做項目,通常都需要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