Git 入門指南:核心概念與常用命令全解析
- 前言
- 一、Git相關概念
- 1.1 工作目錄
- 1.2 暫存區
- 1.3 本地倉庫
- 1.3 遠程倉庫
- 1.3.1 首次提交到遠程倉庫提示輸入用戶名密碼
- 1.3.2 解決方法
- 二、Git常用命令
- 2.1 配置命令
- 2.1.1 查看當前 Git 配置的所有信息
- 2.1.2 查看系統全局配置
- 2.1.3 修改系統全局的默認分支
- 2.1.3.1 切換分支
- 2.1.3.2 切換分支操作詳細演示
- 2.1.3.2.1 本地切換分支
- 2.1.3.2.2 切換到遠程分支(并在本地創建對應的分支)
- 2.1.3.2.2 快速切換回上一個分支
- 2.1.4 查看當前用戶全局配置
- 2.1.5 查看當前倉庫配置信息
- 2.1.6 配置用戶名和郵箱
- 2.1.7 刪除用戶名或者郵箱
- 2.2 其他常用命令
- 2.2.1 創建倉庫
- 2.2.2 查看當前狀態
- 2.2.3 添加到暫存區
- 2.2.4 將暫存區的內容提交到本地倉庫
- 2.2.5 推送到遠程倉庫
- 2.2.6 查看代碼的修改部位
- 2.2.7 查看提交記錄
- 2.3 操作遠程倉庫
- 2.3.1 本地倉庫關聯遠程倉庫
- 2.3.2 推送到遠程倉庫
- 2.3.2.1 推送本地分支到遠程同名分支
- 2.3.2.2 推送本地分支到遠程不同名分支
- 2.3.2.3 省略遠程分支名(默認同名)
- 2.3.2.4 刪除遠程分支
- 2.3.2.5 強制推送(覆蓋遠程分支)
- 2.3.2.6 設置默認推送
- 2.3.2.7 推送所有分支
- 2.3.3 查看關聯的遠程倉庫
- 2.3.4 刪除已關聯的遠程倉庫
- 2.3.5 拉取遠程倉庫
- 2.3.6 實際工作流示例
- 場景:將本地開發分支推送到遠程倉庫
前言
在現代軟件開發中,版本控制工具是開發者不可或缺的“得力助手”,而 Git 作為當前最流行的分布式版本控制系統,已成為團隊協作和個人項目管理的標配。無論是跟蹤代碼變更、回溯歷史版本,還是多人協同開發、遠程同步項目,Git 都能提供高效且可靠的支持。然而,對于初學者而言,Git 的工作機制和命令體系往往顯得抽象且復雜,諸如“工作目錄、暫存區、本地倉庫”的概念區分,以及“add、commit、push”等命令的實際應用,都可能成為入門路上的阻礙。
本文專為 Git 新手打造,旨在通過清晰的概念拆解和實操案例,幫助讀者快速掌握 Git 的核心邏輯與常用技巧。文章第一部分將系統講解 Git 的四大核心區域——工作目錄、暫存區、本地倉庫和遠程倉庫,通過直觀的圖示展示它們之間的數據流關系,讓你明白“代碼從修改到提交的完整路徑”;第二部分則聚焦高頻使用的 Git 命令,從配置層級、倉庫初始化、代碼提交到遠程同步,詳細解析每個命令的功能、參數及實際場景用法,并附上操作截圖輔助理解。
無論你是剛接觸版本控制的編程初學者,還是需要梳理 Git 知識體系的開發者,本文都將為你打下堅實的基礎,讓你在項目開發中輕松駕馭 Git,告別“代碼丟失”“版本混亂”的困擾,真正發揮版本控制的價值。接下來,就讓我們一同開啟 Git 的學習之旅吧!
一、Git相關概念
1.1 工作目錄
就是我們自己寫代碼的文件夾,隨時隨地的寫、修改,不會被記錄和跟蹤。
1.2 暫存區
我們將自己寫好的代碼放進暫存區,就做了跟蹤。代碼放在暫存區之后,在工作目錄如果對其修改了,發現修改的不對,可以隨時刪除工作目錄的修改,將暫存區的恢復到工作目錄。
一旦點擊+
添加到暫存區后,就在暫存區可以看到它。之后再修改還可以再工作目錄看到修改的地方。
1.3 本地倉庫
1.3 遠程倉庫
上面有提及遠程倉庫。其實遠程倉庫就是在服務器上的一個倉庫。第一次使用需要在上面創建,之后克隆到本地。請參看上一篇文章《上傳代碼到gitee倉庫》這里我使用的是CSDN上的GitCode,不是Gitee,但大同小異。
下面簡要說一下創建倉庫吧。
登錄自己的GitCode賬號,這個可以申請。
在電腦的任何一個文件夾下都可以右鍵,點擊Git Bash,之后將剪切板的文字粘貼進去。請注意,右鍵–粘貼,不要使用Ctrl+V!
之后就將服務器的倉庫克隆到本地了。
1.3.1 首次提交到遠程倉庫提示輸入用戶名密碼
如果從GitCode克隆了工程,之后修改了代碼,想要提交到遠程倉庫,這個時候會提示:
輸入用戶名
輸入密碼
(解釋:剛才我遇到這個問題,現在已經解決了,問題沒有截圖)
1.3.2 解決方法
- 用戶名:就是gitcode的用戶名,比如我叫:smart_boy_,那么就把這個寫上去。
- 密碼:這個密碼是在gitcode上生成的令牌。下面詳細講一下過程。
-
在“訪問令牌”,新建訪問令牌。
-
最后點擊
新建訪問令牌
。
-
之后會顯示你的令牌,相當于一個密碼,一定要保存好這個令牌。上面的密碼一欄就寫這個
令牌
就可以了。
-
之后就可以git push
到遠程倉庫了。
二、Git常用命令
Git 配置有三個層級:
- 系統級 (
--system
) - 對所有用戶生效 - 全局級 (
--global
) - 對當前用戶的所有倉庫生效 - 倉庫級 (
--local
) - 只對特定倉庫生效
- 系統全局配置(–system):包含了系統內的所有?戶和所有倉庫的配置信息,系統配置存放在Git安裝?錄下C:\Program Files\Git\etc\gitconfig。
- ?戶全局配置(–global):包含了當前?戶的所有 Git 倉庫配置,它存放在?戶?錄下:C:\Users[系統?戶名].gitconfig。
- 倉庫配置(–local):倉庫級配置僅適?于某個 Git 倉庫,它存放在項??錄下:項?根?錄/.git/config
?這三個配置?件的優先級為:
系統全局配置 < ?戶全局配置 < 倉庫配置
2.1 配置命令
2.1.1 查看當前 Git 配置的所有信息
git config --list
或者
git config -l
最后一行輸入q
,就可以退出。
2.1.2 查看系統全局配置
git config --system --list
2.1.3 修改系統全局的默認分支
比如修改為main。
git config --global init.defaultBranch main
2.1.3.1 切換分支
在 Git 中切換分支可以使用 git checkout 或較新的 git switch 命令。
git switch 想要切換的分支名
git checkout 想要切換的分支名
2.1.3.2 切換分支操作詳細演示
2.1.3.2.1 本地切換分支
先查看一下當前的所有分支:
git branch # 查看本地分支
# 或查看包括遠程分支在內的所有分支
git branch -a
2.1.3.2.2 切換到遠程分支(并在本地創建對應的分支)
如果要切換到一個僅存在于遠程的分支(如 origin/release),可以直接創建并切換到本地對應分支:
# 方法 1: checkout
git checkout -b 本地分支名 origin/遠程分支名# 方法 2: switch(更推薦)
git switch -c 本地分支名 origin/遠程分支名
2.1.3.2.2 快速切換回上一個分支
git checkout -
# 或
git switch -
- 注意事項
- 切換分支前,確保當前分支的修改已提交(git commit)或暫存(git stash),否則未提交的修改可能會被帶到新分支。
- 如果分支名稱包含特殊字符(如 /),直接輸入即可,Git 會自動識別。
2.1.4 查看當前用戶全局配置
git config --global --list
2.1.5 查看當前倉庫配置信息
git config --local --list
2.1.6 配置用戶名和郵箱
git config --global user.name "你的名字"
這里,“你的名字” 可以自由修改。
git config --global user.email "你的郵箱"
同樣,郵箱可以自己修改。
2.1.7 刪除用戶名或者郵箱
刪除全局配置:
git config --global --unset user.name
git config --global --unset user.email
重新設置正確的全局配置
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
如果某些倉庫需要特殊配置,可以單獨設置:
git config user.name "Repo-specific Name"
git config user.email "repo.email@example.com"
2.2 其他常用命令
2.2.1 創建倉庫
對于沒有git倉庫的工程,可以在終端執行下面的命令創建倉庫。
git init
2.2.2 查看當前狀態
git status
可以看到當前工作目錄下是否有文件已修改,是否跟蹤。
- Changes to be committed表?已經添加到暫存區的?件。
- Changes not staged for commit表?已經修改但沒有添加到暫存區的?件。
- Untracked files表?未跟蹤的?件。就是新建的文件,還未對其進行跟蹤。
新建了文件a.h
,之后再次執行git status
命令。
執行git add .
之后再次執行git status
2.2.3 添加到暫存區
git add .
后面加.
表示全部文件都添加到暫存區,如果只添加一個文件,可以加文件名。
2.2.4 將暫存區的內容提交到本地倉庫
git commit -m "描述本次修改的內容"
也可以有如下參數:
- 參數-a, 表示直接從工作區提交到版本庫, 略過了git add步驟, 不包括新增的文件
git commit -a
- 提交暫存區的指定文件到倉庫區
git commit filename
- 使用一次新的commit, 替代上一次提交, 會修改commit的hash值( id)
git commit --amend -m "描述本次修改的內容"
比如說,我前面已經提交了一次,現使用git commit --amend -m "描述本次修改的內容"
命令,又提交了一次。
此時查看一下VScode。
兩個版本被合并了。
在git bash查看一下狀態。
查看一下修改內容:
之后測試一下git commit -a
命令。
看下提交信息:
去VScode里看下。
我們手動提交一次。
git push
最后測試一下git commit filename
這個命令。比如我們再新建兩個文件。
但只提交b.c。先將其都放進暫存區。
這個時候對b.h進行修改。看下修改的內容。
再次跳過git add b.h
,直接提交到本地倉庫。
看下VScode。
我們使用命令來操作。
上面錯別字,“推送到”。
2.2.5 推送到遠程倉庫
上面已經講過了推送的命令:
git push
2.2.6 查看代碼的修改部位
git diff
如果只看某一個文件的修改,可以加上文件名
,比如:
git diff a.c
舉例:
刪除的?:會?減號(-)標記。
新增的?:會?加號(+)標記。
2.2.7 查看提交記錄
上面已經提到了這個命令。
git log
另外,可以有其他的用法。
- 查看日志(比如,最近5條), 不帶參數-n則顯示所有日志
git log -n5
- 參數“–oneline”可以讓日志輸出更簡潔( 一行)
git log -n20 --oneline
- 參數“–graph”可視化顯示分支關系
git log -n20 --graph
- 顯示某個文件的版本歷史
git log --follow [file]
2.3 操作遠程倉庫
2.3.1 本地倉庫關聯遠程倉庫
git remote add origin <遠程倉庫URL>
以HTTPS為例,它的命令是這樣的:
git remote add origin https://gitcode.com/smart_boy__/Git_Test.git
以SSH為例,它的命令是這樣的:
git remote add origin git@gitcode.com:smart_boy__/Git_Test.git
2.3.2 推送到遠程倉庫
git push 是將你本地倉庫的更改推送到遠程倉庫的命令。通常?于在你本地完成?些修改(如提交git commit)后,將這些更改同步到遠程倉庫,使其他協作者可以看到你所做的更改。
git push <遠程倉庫名> <本地分支名>:<遠程分支名>
<遠程倉庫名>
:通常是origin
(默認遠程倉庫名稱),也可以是其他自定義的遠程倉庫別名。<本地分支名>
:要推送的本地分支名稱(如main
、dev
)。<遠程分支名>
:遠程倉庫的目標分支名稱(可與本地分支名不同)。
2.3.2.1 推送本地分支到遠程同名分支
git push origin main:main
- 將本地
main
分支推送到遠程origin
的main
分支。 - 如果遠程分支不存在,Git 會自動創建它。
2.3.2.2 推送本地分支到遠程不同名分支
git push origin feature-login:remote-feature
- 將本地
feature-login
分支推送到遠程remote-feature
分支。
2.3.2.3 省略遠程分支名(默認同名)
git push origin main
- 等價于
git push origin main:main
。
2.3.2.4 刪除遠程分支
git push origin :remote-branch
- 通過省略本地分支名(留空
:
左側),推送一個“空分支”到遠程,從而刪除遠程分支remote-branch
。
實際操作:
我在GitCode里面新建了遠程分支,名為dev。之后再本地的git bash拉取一次遠程倉庫。
此時我去查看遠程倉庫的dev分支,發現確實沒有了。
2.3.2.5 強制推送(覆蓋遠程分支)
git push --force origin main:main
- 使用
--force
(或-f
)強制覆蓋遠程分支(謹慎使用!)。
2.3.2.6 設置默認推送
git push -u origin 分支名
(綁定后可直接用 git push)
git push -u origin "main"
或者直接:
git push
2.3.2.7 推送所有分支
- 使用
--all
推送所有本地分支:
git push --all origin
2.3.3 查看關聯的遠程倉庫
git remote -v
2.3.4 刪除已關聯的遠程倉庫
git remote remove origin
執行完成再次查看一下遠程倉庫。發現沒有了,就成功了。
2.3.5 拉取遠程倉庫
git pull <遠程倉庫名> <遠程分支名>
這?的遠程倉庫名,通常是origin,表?默認的遠程倉庫。?遠程分?名,通常是main或master,表?遠程倉庫的分?。
git pull origin main
當然,很多時候我們會省略掉遠程倉庫和分?名,git pull會默認從你當前分?所關聯的遠程倉庫和分?中拉取更新。
2.3.6 實際工作流示例
場景:將本地開發分支推送到遠程倉庫
-
查看本地分支和遠程狀態:
git branch -v # 查看本地分支 git remote -v # 查看遠程倉庫
-
推送本地分支到遠程(假設遠程分支名與本地相同):
git push origin dev:dev
-
如果遠程分支不存在:
# 首次推送時需指定遠程分支名 git push --set-upstream origin dev:dev # 后續推送可簡化為 git push origin dev
本地和遠程都沒有dev分支,我先在本地創建一個分支dev,之后推送到遠程倉庫,由于遠程倉庫也沒有這個分支,所以使用這個命令
git push --set-upstream origin dev:dev
。 -
如果推送失敗(因遠程有更新):
git pull origin dev # 先拉取遠程變更 git push origin dev # 重新推送
本文結束,歡迎點贊、收藏、轉發、關注!