前言
github是廣大程序員們必須要掌握的一個技能,萬事開頭難,如果成功提交了第一次代碼,那么后來就會簡單很多。網上的相關資料往往都不是從第一次開始,導致很多新手們會在過程中遇到很多權限認證相關的問題,進而被卡住。為了解決這些問題,我整理了github第一次提交的教程,希望可以幫助大家掌握github的使用。
需要的環境:
VS code編輯環境。
WMware虛擬機與ubuntu系統。
這里我通過將我們本地寫的一個項目ChatServer上傳到github倉庫來帶領大家學習github的使用。
配置環境
1、安裝git工具
對于一個新的ubuntu環境,先需要安裝git工具,運行下面的指令:
hyl@hylPC:~/Desktop/Chat$ sudo apt install git
[sudo] password for hyl:
2、創建倉庫
在github網站上創建一個倉庫,這個操作過于基礎,不做過多講解了。
3、克隆倉庫
首先需要倉庫的地址,如下圖所示進入到剛剛創建的倉庫中,復制圖中的網址。接下來切換到我們項目的目錄下,我這里是:
~/Desktop/Chat
,輸入下面的指令進行克隆倉庫:
hyl@hylPC:~/Desktop/Chat$ git clone https://github.com/MrDavid615/ChatServer.git
如上圖所示,克隆后本地目錄下會出現一個ChatServer
文件夾,這取決于你的倉庫的名字,這里文件夾就是一個github的倉庫,在該文件夾下會有一個隱藏文件.git
。在其他的文件夾下運行git類指令是無法運行的(git clone
除外),類似于git pull
;git push
等指令都要在git倉庫對應的文件夾下運行,因為這些倉庫里面有.git
這個隱藏文件。
這樣我們就成功在本地克隆了一個github倉庫。
代碼提交
1、在ChatServer內進行開發
現在我們的代碼都是在本地電腦上,不在倉庫中,因此我們需要把本地的文件移動到ChatServer
文件夾中。假設我們是在ChatServer
目錄下進行的開發。大家可以直接使用光標在VS Code左側的目錄樹下操作文件,我這里用命令行的方式都是一樣的。
hyl@hylPC:~/Desktop/Chat$ mv bin/ ChatServer/
hyl@hylPC:~/Desktop/Chat$ mv build ChatServer
hyl@hylPC:~/Desktop/Chat$ mv include/ ChatServer/
hyl@hylPC:~/Desktop/Chat$ mv src/ ChatServer/
hyl@hylPC:~/Desktop/Chat$ mv thirdparty/ ChatServer/
hyl@hylPC:~/Desktop/Chat$ mv test/ ChatServer/
hyl@hylPC:~/Desktop/Chat$ mv CMakeLists.txt ChatServer/
hyl@hylPC:~/Desktop/Chat$ ls
ChatServer
這個操作實際上就是對我們倉庫內的代碼進行了一個修改(可以認為這些代碼都是在ChatServer
下編寫的),之后我們繼續開發都在ChatServer
文件夾下,就不需要移動文件夾了。
執行完上面的操作后,我們本地的倉庫與遠程的倉庫就會出現差異。
2、跟蹤修改
我們切換到ChatServer
下,輸入git status
指令與git add .
指令(上面講過了,除git clone
外的其他指令要在在git倉庫下才能運行)
hyl@hylPC:~/Desktop/Chat/ChatServer$ git status
On branch main
Your branch is up to date with 'origin/main'.Untracked files:(use "git add <file>..." to include in what will be committed)CMakeLists.txtbuild/include/src/test/thirdparty/nothing added to commit but untracked files present (use "git add" to track)
hyl@hylPC:~/Desktop/Chat/ChatServer$ git add .
# git add .指令的輸出省略
這里顯示了我們當前的本地倉庫與遠程倉庫所有的文件上的差異,因為我們剛剛在本地修改了ChatServer
的內容(增加了一些文件),遠程沒有同步。因此我們需要使用git add .
指令將我們的修改增加到暫存區。
這里git add
后面跟的是一個路徑,后面跟一個“點”表示將當前目錄內的所有修改都加入暫存區。通過后面指定具體目錄,我們可以選擇需要加入暫存區的文件的范圍。比如我輸入git add ./build/
就表示將當前目錄下的build
子目錄下的文件加入暫存區。
3、提交修改
接下來將代碼提交,輸入git commit -m "your descrip"
,引號內為這次提交的文字描述,沒有格式要求,隨便寫一些文字來描述這次提交的改動。對與第一次提交的同學,走到這一步可能出現問題。
hyl@hylPC:~/Desktop/Chat/ChatServer$ git commit -m "ChatServer 1.0 附帶服務器端所有源代碼"
Author identity unknown*** Please tell me who you are.Rungit config --global user.email "you@example.com"git config --global user.name "Your Name"to set your account's default identity.
Omit --global to set the identity only in this repository.fatal: unable to auto-detect email address (got 'hyl@hylPC.(none)')
上面的問題主要是沒有配置當前的用戶與郵箱,因此需要進行配置,輸入git config ...
注意這里的郵箱和用戶名其實只是一個標識符,沒有實際意義
hyl@hylPC:~/Desktop/Chat/ChatServer$ git config user.email "hyl@hyl.com"
hyl@hylPC:~/Desktop/Chat/ChatServer$ git config user.name "hyl"
重新提交:
hyl@hylPC:~/Desktop/Chat/ChatServer$ git commit -m "ChatServer 1.0 附帶服務器端所有源代碼"
[main 4e741ec] ChatServer 1.0 附帶服務器端所有源代碼61 files changed, 47062 insertions(+)create mode 100644 CMakeLists.txt# 。。。省略create mode 100644 thirdparty/json.hpp
4、推送代碼
走到這一步后,我們遠程的倉庫還沒有實際的修改,想要改變遠程倉庫,我們需要輸入最后一個指令git push
。對于第一次操作的朋友,這里一定需要進行身份認證,這里有兩種方法:Token或SSH,推薦使用SSH,如何配置我在下面有詳細的講述。
hyl@hylPC:~/Desktop/Chat/ChatServer$ git push
Username for 'https://github.com':
驗證身份后再次運行git push
即可。
解決身份驗證問題
SSH
1、回到git hub網頁,點擊右上角頭像,點擊Settings,進入下圖頁面
2、點擊后進入這里,需要輸入一個密鑰(這里圖片標準不準確,應該是填入我們復制的公鑰,懶得改了)
3、我們需要生成這個密鑰。終端輸入如下指令,這里的郵箱是剛剛我們設置的那個虛假的郵箱,之后瘋狂回車,會生成一個密鑰文件存儲在路徑/home/hyl/.ssh/id_rsa
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"# 下面是指令的輸出,有省略,不一樣不要慌
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hyl/.ssh/id_rsa):
4、前往路徑下,可以看到一個.pub
后綴的文件,里面的文本對應公鑰:
hyl@hylPC:~/Desktop/Chat/ChatServer$ cd /home/hyl/.ssh/
hyl@hylPC:~/.ssh$ ls
authorized_keys id_rsa id_rsa.pub known_hosts known_hosts.old
5、使用cat
查看內容并復制.pub
文件的內容(公鑰很長,這里有省略)
hyl@hylPC:~/.ssh$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2....ZrNAK+jiEqoQ== hyl@hyl.com
6、把復制的文本填入(這里圖片標準不準確,應該是填入我們復制的公鑰,懶得改了)
7、需要切換到ssh推送模式,由于之前克隆時用的是HTTPS方式來獲取倉庫網址,這里使用SSH需要修改一下倉庫的網址,在終端輸入:
git remote set-url origin git@github.com:MrDavid615/ChatServer.git
這里的網址用下圖下圖的方式獲取:
8、檢測ssh配置狀態,輸入指令后狂按回車,最后會顯示出最下面一行文字證明配置成功
hyl@hylPC:~/.ssh$ ssh -T git@github.com
# 下面是輸出
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256....4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes(這里輸入yes)
Warning: Permanently added 'github.com,20.205.243.166' (ED25519) to the list of known hosts.
Hi hyl! You've successfully authenticated, but GitHub does not provide shell access
9、可以推送代碼了!
Token
使用令牌的方式進行驗證很不穩定,而且經常遇到令牌過期的問題,推薦大家使用SSH方法,這里就先不講Token了,有時間再更新
(未完待續)