目錄
- 一、創建 Github 項目庫(遠程倉庫)
- 二、配置安裝好的 Git
- 1. 設置用戶信息
- 2. 查看已配置的信息
- 3. 建立本地倉庫
- 4. Git 的常用命令
- 1)git checkout(切換)
- 2)git push(上傳)
- 3)其他
- 三、配置 SSH 公鑰
- 1. 生成 ssh key
- 出現的問題
- 2. 啟動 ssh-agent 并添加秘鑰
- 3. 在 Github 上綁定 ssh 公鑰
- 出現的問題
- 四、關聯本地倉庫與 Github 遠程倉庫
- 1. 查看 Github 項目庫地址
- 2. 對接本地倉庫與遠程倉庫
- 1)遠程倉庫向本地倉庫推送(克隆倉庫)
- 2)本地倉庫向遠程倉庫推送(上傳代碼)
- 五、其他
- 1. 注意事項
- 2. 創建 .config 或 .bashrc 后綴文件
- 3. 運行 ssh-add -l 失敗
- 4. Git Bash 啟動時 ssh-agent 多次嘗試啟動但失敗
默認已注冊了 Github 且安裝了 Git 。
一、創建 Github 項目庫(遠程倉庫)
登錄已創建好的 Github 賬戶,點擊左上角的三條橫杠,進入 Home 界面,如下圖所示。然后點擊綠色的 “New” 按鈕,以創建新的項目庫。
對創建的項目內容進行填寫,例如:項目名稱、項目描述、是否所有人均可查看等。最后點擊 “Create repository” 即可創建項目。
完成創建項目庫后,就需要讓自己的電腦克隆一個剛剛創建的庫(本地倉庫),以方面自己電腦上的代碼同步到在 GitHub 創建的庫中,這時就需要用到 Git Bash 軟件。
二、配置安裝好的 Git
1. 設置用戶信息
單擊打開 Git Bash ,如下圖所示:
輸入如下命令驗證 Git 是否安裝成功,若顯示版本號,例如 git version 2.x.x 則表示 Git 安裝成功。
git --version
輸入如下命令設置 Git 用戶信息:
git config --global user.name "[用戶名]"
git config --global user.email "[用戶郵箱]"
下面的命令可以增強輸出命令的可讀性:
git config --global color.ui auto
注:這里的用戶名最好與 GitHub 上的一致,而用戶郵箱一定要是注冊 GitHub 的那個郵箱地址。如何查看?在 Github 上登陸自己的賬戶,點擊右上角的頭像 → “Settings” ,進入設置界面,在左側列表中選擇 “Emails” ,即可查看用戶名與用戶郵箱(選擇 Primary 的那個)。
2. 查看已配置的信息
輸入如下命令查看用戶信息:
git config --global user.name
git config --global user.email
或者
git config --list
3. 建立本地倉庫
在任意位置創建一個空文件夾作為本地的 Git 倉庫,進入該文件夾并右鍵,選擇 “顯示更多選項” → “Open Git Bash here” ,如下圖所示。
執行以下命令初始化一個新的 Git 倉庫,在當前目錄下創建一個新的 .git 目錄,開始版本控制。
git init
-
初始化成功則會顯示:
Initialized empty Git repository in D:/git_warehouse/.git/
的代碼。 -
輸入
ll
指令可以查看倉庫文件數量及詳情,沒有文件即顯示:total 0
的代碼。 -
想在目錄下顯示 .git 隱藏文件,則點擊 “查看” → “顯示” → “隱藏的項目” 即可。
4. Git 的常用命令
參考文章:【Git 常用命令速查表(圖文+表格)】
以下是 Git 倉庫的基本指令速查表:
以下是 Git 倉庫的工作流程圖:
1)git checkout(切換)
git checkout
和 git checkout -b
主要區別在于是否創建新分支:
命令 | 作用 | 說明 |
---|---|---|
git checkout <branch> | 切換到已有分支 <branch> | 只能切換到已經存在的分支 |
git checkout -b <new-branch> | 新建一個分支 <new-branch> 并切換到它 | 新建并切換,等同于 git branch <new-branch> + git checkout <new-branch> |
-
git checkout master :切換到已經存在的 master 分支。
-
git checkout -b feature :新建并切換到名為 feature 的分支。
-
在較新版本 Git(≥ 2.23)中,推薦用新的命令:
-
git switch <branch>
切換分支 -
git switch -c <new-branch>
新建并切換分支
-
2)git push(上傳)
git push origin master
、 git push -u origin master
和 git push -f origin master
的區別主要在于是否設置了上游分支(upstream branch),以及是否強制推送。
-
git push origin master :
-
這是最基本推送命令,僅把本地的 master 分支推送到遠端的 origin 倉庫對應的 master 分支,但不會建立本地分支和遠端分支的 “跟蹤關系” 。
-
不設置上游分支,也就是說,以后如果直接運行 git push 或 git pull,Git 不知道默認跟蹤哪個遠端分支,可能會提示你指定分支。
-
-
git push -u origin master :推送并設置本地 master 與遠程 master 上游關系
-
除了推送 master 分支到遠端 origin 倉庫外,還會把本地 master 分支和遠端 origin/master 關聯起來(設置上游分支),設置本地 master 的上游分支為 origin/master 。
-
以后可以僅用 git push 或 git pull,Git 會自動推送或拉取相對應的遠端分支,更方便。
-
-
git push -f origin master :強制覆蓋遠程 master 分支
-
這是強制推送(-f 是 --force 的簡寫)。作用是將本地的 master 分支強制推送到遠程倉庫,即使遠程倉庫的提交歷史和本地不一致,也會覆蓋遠程的提交。
-
這可能會覆蓋或丟失遠程分支上的歷史,一般用于修正錯誤的提交或者重寫歷史。
-
注意: 強制推送會導致別人基于遠端分支的工作被破壞,使用時要非常小心,最好先確認沒人正在用該分支。
-
總結:
命令 | 作用 | 說明 |
---|---|---|
git push origin master | 將本地 master 分支推送到遠端 origin 的 master | 不會設置上游分支,普通推送 |
git push -u origin master | 推送 master 到 origin,同時設置上游分支 | 以后可直接用 git push 推送 |
git push -f origin master | 強制推送本地 master 到 origin 的 master | 不管遠端歷史,強制覆蓋(慎用) |
如果是第一次推送某個新的本地分支,建議使用 -u 參數,這樣以后操作更方便。
3)其他
-
查看工作區和暫存區狀態 git status
- git status -s :簡短格式輸出
- git status -b :顯示分支信息
-
添加文件到暫存區 git add
- git add -A :添加所有變更(新增、修改、刪除)
- git add -u :更新暫存區中已跟蹤文件的修改,不添加新文件
- git add -p :交互式添加更改
-
提交暫存區內容至本地倉庫 git commit
- git commit -m <msg> :直接提供提交信息
- git commit -a :自動把所有已跟蹤文件的修改添加到此次提交
-
查看提交歷史 git log
- git log -p :顯示每個提交的代碼差異
- git log -n <number> :限制顯示的提交數
-
查看文件變化內容 git diff
- git diff <commit1> <commit2> :對比兩個提交之間的差異
- git diff -w :忽略空格差異
-
管理分支 git branch
- git branch -a :列出所有分支(本地+遠程)
- git branch -d <branch> :刪除本地分支(已合并安全刪除)
- git branch -D <branch> :強制刪除本地分支
- git branch -m <old> <new> :重命名分支
-
臨時保存當前更改,恢復干凈工作區 git stash
- git stash save <message> :保存更改并附帶消息
- git stash pop :恢復最近一次 stash ,并刪除 stash 記錄
- git stash apply :恢復 stash 但不刪除 stash 記錄
- git stash list :列出 stash 列表
- git stash drop :刪除指定 stash
如果想更深入了解某個命令或獲得更多選項解釋,可以在 Git Bash 上運行:git <command> --help
或在 Git 官網 / 文檔中查閱詳細使用說明。其中 <command> 表示你要查看的具體 Git 命令,比如 status , commit , push 等。
三、配置 SSH 公鑰
1. 生成 ssh key
在 Git Bash 界面輸入 cd ~/.ssh
或 ls ~/.ssh/id_rsa.pub
命令,若返回 "no such file or directory"
則表明文件不存在,需要創建。輸入以下命令創建文件并生成 ssh key :
ssh-keygen -t rsa -C "[用戶郵箱]"
連續進行 3 次回車 Enter(確認)即可,然后會在 “C:/Users/[用戶名]” 下生成一個 .ssh 文件,里面存儲了兩個秘鑰,id_rsa 文件里存儲的是私鑰、 id_rsa.pub 文件里存儲的是公鑰。
用記事本打開 id_rsa.pub 文件,復制里面的內容;或者在 Git Bash 里輸入 cat ~/.ssh/id_rsa.pub
命令復制公鑰內容。
出現的問題
問題:輸入 ssh-keygen -t rsa -C "[用戶郵箱]"
出現如下錯誤:
No such file or directory:沒有這樣的文件或目錄
【問題原因】:本機用戶名是中文,由于 Git Bash 的編碼設置不支持中文,導致中文亂碼,從而生成密鑰失敗。
【解決方法 1】(失敗):修改 Git Bash 編碼為 UTF-8 。以下為修改步驟:
-
右鍵單擊 Git Bash 的頂部邊框,選擇 “Options”
-
在左側列表選擇 “Text” ,將 “Locale” 選為 “zh_CN” ,“Character set” 選為 “UTF-8” ,最后點擊 “Save” 即可,如下圖所示。
- 重新嘗試生成 ssh 密鑰。
參考文章:【解決git生成ssh密鑰失敗問題,本機用戶名中文亂碼導致密鑰生成失敗。】
【解決方法 2】(成功):方法 1 并沒有解決問題,方法 2 是:通過快捷鍵 Win+R 打開命令提示符 cmd ,在 cmd 中生成 ssh 密鑰,輸入命令后連續進行 3 次回車即可。
生成的 id_rsa 和 id_rsa.pub 文件均在 .ssh 文件夾下。
2. 啟動 ssh-agent 并添加秘鑰
在 Git Bash 里輸入如下命令:
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
3. 在 Github 上綁定 ssh 公鑰
在 Github 上登陸自己的賬戶,點擊右上角的頭像,進入 Settings 界面,在左側列表中選擇 “SSH and GPG keys” ,如下圖所示。然后點擊右上方的 “New SSH key” 綠色按鈕。
在如下所示的界面里填寫信息,將公鑰(id_rsa.pub)里的內容復制進去,最后點擊 “Add SSH key” 即可成功添加。
回到 Git Bash 上驗證是否配置成功,輸入如下命令:
ssh -T git@github.com
如果出現:You've successfully authenticated, but GitHub does not provide shell access.
則說明綁定成功。若中間出現 (yes/no/[fingerprint]) 時,輸入 yes 即可。
出現的問題
問題 1 :輸入上述命令出現如下錯誤:
kex_exchange_identification:讀取:軟件導致連接中止
橫幅交換:連接到 20.205.243.166 端口 22:軟件導致連接中止
【解決方法】:Git Bash 下使用 SSH 連接出現 “Software caused connection abort” 問題
問題 2 :報錯 "The authenticity of host ‘github.com (20.205.243.166)’ can’t be established. "
【解決方法 1】:遇到 (yes/no/[fingerprint]) 時,直接輸入 yes 即可。
【解決方法 2】:手動配置 known_hosts 文件,即在 C:/Users/[用戶名]/.ssh 文件夾下新建一個 known_hosts 文件,用記事本打開該文件并寫入 Github 的 ssh 密鑰條目。
ssh 密鑰條目如下所示:
github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=
github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=
參考文章:【The authenticity of host ‘github.com (20.205.243.166)‘ can‘t be established. 報錯解決】
四、關聯本地倉庫與 Github 遠程倉庫
1. 查看 Github 項目庫地址
登陸你的 Github 賬戶進入項目倉庫,如下圖所示查看該 Github 項目庫的地址(HTTPS or SSH 均可)。
了解兩個常用的 Git 命令:push 和 pull 。
-
如果本地倉庫的代碼有了更新,為了保持本地與遠程的代碼同步,我們就需要利用
git push origin master
命令把本地的代碼 “推給” 遠程的倉庫。 -
如果遠程倉庫的代碼有了更新,同樣為了保持本地與遠程的代碼同步,我們就需要利用
git pull origin master
命令把遠程的代碼 “拉到” 本地的倉庫。
2. 對接本地倉庫與遠程倉庫
1)遠程倉庫向本地倉庫推送(克隆倉庫)
將 Github 上的項目庫克隆到本地電腦上,在本地倉庫所在的文件夾下右鍵選擇 “Open Git Bash here” 。
進入 Git Bash 后執行克隆命令:git clone <遠程倉庫地址>
。
如下圖所示,指定目錄已經存在在本地倉庫的文件夾下。
2)本地倉庫向遠程倉庫推送(上傳代碼)
在本地倉庫所在的文件夾下右鍵選擇 “Open Git Bash here” ,進入 Git Bash 后執行綁定命令:git remote add <遠程倉庫名稱> <遠程倉庫地址>
,執行后就可以開始使用本地倉庫向遠程倉庫推送了,輸入 git remote
命令查看遠程倉庫名稱。
打開剛剛克隆下來的 TEST 文件夾,在其中創建一個任意格式、任意名稱的文件,例如:我在這里創建了一個名叫 text 的 .txt 文件。
在這個文件夾下右鍵選擇 “Open Git Bash here” ,進入 Git Bash 。
-
執行
git add text.txt
命令將該新文件上傳至暫存區。 -
執行
git commit -m “測試是否成功”
命令將所有更新過的文件提交至本地倉庫,且提交注釋為:“測試是否成功” ,引號內的內容相當于是上傳文件的備注,便于查找。
- 接著輸入 push 指令
git push -u origin main
,將本地倉庫的文件提交至遠程倉庫,如下圖所示就代表上傳成功了。
注:紅框內是什么,origin 后就跟什么。
打開 GitHub ,可以看到剛剛上傳的文件。
五、其他
1. 注意事項
-
Windows Terminal 默認使用 PowerShell 或 cmd ,也可以安裝并開啟 Git Bash 終端更方便使用 Git 。
-
如果想使用 HTTPS 而不是 SSH ,推送時會要求輸入 GitHub 賬號密碼,GitHub 目前使用 Token 代替密碼,需要額外配置。
2. 創建 .config 或 .bashrc 后綴文件
-
在想要創建文件的文件夾下右擊鼠標,新建一個 .txt 記事本,名字可以任意取。
-
打開新建的 .txt 文本,將想要輸入的內容粘貼進文本內。
-
點擊記事本左上角的 “文件” ,選擇 “另存為” ,然后進行如下圖所示的操作。
注:重命名文件時,一定要帶 .config 或 .bashrc 后綴,或者直接輸入 .config 或 .bashrc 也行。
- 此時,該文件夾下就出現了 CONFIG 文件或 Bash RC 源文件,將之前的 .txt 文本刪除即可。
3. 運行 ssh-add -l 失敗
【問題】:在 Git Bash 中輸入 ssh-add -l
但收到 Could not open a connection to your authentication agent
的錯誤。
【原因】:這通常表明 SSH 代理沒有運行或沒有正確地被初始化。
【方法】:
-
啟動 SSH 代理:在 Git Bash 上運行
eval $(ssh-agent -s)
命令啟動 SSH 代理,這將返回一個類似于 “Agent pid xxx” 的消息,表示 SSH 代理正在運行。 -
添加 SSH 密鑰:在 Git Bash 上運行
ssh-add ~/.ssh/id_rsa
命令將你的 SSH 密鑰添加到代理中。
注:需要根據你的密鑰所處路徑以及密鑰文件名對上述命令做相應調整。 -
驗證 SSH 密鑰:在添加密鑰后,可以再次使用
ssh-add -l
驗證是否成功添加,如果成功,會看到已添加的密鑰列表,類似于 “xxx SHA256:… [你的郵箱] (RSA)” 。
如果想要完成當打開 Git Bash 時就自動啟動 ssh-agent 并自動添加默認私鑰的操作,請跳轉:【Git Bash 啟動時 ssh-agent 多次嘗試啟動但失敗】,根據操作五配置 ~/.bashrc 文件即可。
4. Git Bash 啟動時 ssh-agent 多次嘗試啟動但失敗
【問題】:打開 Git Bash 出現如下報錯:
Agent pid 1289
bash: /usr/bin/ssh-agent: cannot execute: required file not found
bash: /usr/bin/ssh-agent: Bad address
bash: /usr/bin/ssh-agent: Bad address
Agent pid 1294
Agent pid 1296
… …
【方法】:Git Bash 啟動時 ssh-agent 多次嘗試啟動但失敗
參考文章:
【Github入門教程,適合新手學習(非常詳細)】
【Git的配置、本地綁定Github及基本使用】
【git與github賬號綁定】
【將Git與Github進行SSH連接】