git學習
簡介
git是一個開源的分布式版本控制系統
Git 不僅僅是一個簡單的版本控制系統,更是一個內容管理系統(CMS)、工作管理系統等。
實現流程
在github上創建倉庫

(添加倉庫名、倉庫描述、公開/私人、添加README.md)

(復制倉庫鏈接地址)

在VScode中克隆倉庫
- 打開想拉取倉庫的文件夾位置(在vscode中)
- 打開終端(Terminal)
- 輸入命令:
git clone +倉庫鏈接地址
git clone https://github.com/2575451471/modei.git
拉取的相關命令
- git init:該命令用于在當前目錄中初始化一個新的Git倉庫。它會創建一個名為.git的隱藏文件夾,用于存儲Git倉庫的相關信息。
- git add README.md:該命令將名為"README.md"的文件添加到Git的暫存區。暫存區是Git用來跟蹤文件更改的一個中間區域。
- git config --global user.email "you@example.com":該命令用于設置Git的全局配置,其中user.email是你的郵箱地址。這個配置將與你的提交記錄相關聯。
- git config --global user.name "Your Name":該命令用于設置Git的全局配置,其中user.name是你的用戶名。這個配置將與你的提交記錄相關聯。
- git commit -m "first commit":該命令用于將暫存區中的文件提交到Git倉庫。-m選項后面的內容是提交的描述信息,用于解釋本次提交的目的。
- git branch -M main:該命令用于重命名當前分支。這里將當前分支重命名為"main",這是GitHub默認的主分支名稱。
- git remote add origin https://github.com/Wang-Phil/test.git:該命令用于將本地倉庫與遠程GitHub倉庫關聯起來。origin是遠程倉庫的別名,https://github.com/Wang-Phil/test.git是遠程倉庫的URL。
- git push -u origin main:該命令用于將本地倉庫的內容推送到遠程GitHub倉庫。-u選項表示將本地的"main"分支與遠程倉庫的"main"分支關聯起來。這樣,在以后的推送中,你只需要運行git push命令即可。
一些vscode表示
會看到“源代碼管理”圖標上有數字顯示(表示有多少個文件發生變化)
- “M”代表已經在GitHub中添加過該文件,然后修改了文件內容;
- “U”代表在本地新建了該文件,還未提交到GitHub
- “D”代表刪除了該文件
未跟蹤(Untracked): 新創建的文件最初是未跟蹤的。它們存在于工作目錄中,但沒有被 Git 跟蹤。
touch newfile.txt # 創建一個新文件
git status # 查看狀態,顯示 newfile.txt 未跟蹤
已跟蹤(Tracked): 通過 git add 命令將未跟蹤的文件添加到暫存區后,文件變為已跟蹤狀態。
git add newfile.txt # 添加文件到暫存區
git status # 查看狀態,顯示 newfile.txt 在暫存區
已修改(Modified): 對已跟蹤的文件進行更改后,這些更改會顯示為已修改狀態,但這些更改還未添加到暫存區。
echo "Hello, World!" > newfile.txt # 修改文件
git status # 查看狀態,顯示 newfile.txt 已修改
已暫存(Staged): 使用 git add 命令將修改過的文件添加到暫存區后,文件進入已暫存狀態,等待提交。
git add newfile.txt # 添加文件到暫存區
git status # 查看狀態,顯示 newfile.txt 已暫存
已提交(Committed): 使用 git commit 命令將暫存區的更改提交到本地倉庫后,這些更改被記錄下來,文件狀態返回為已跟蹤狀態。
git commit -m "Added newfile.txt" # 提交更改
git status # 查看狀態,工作目錄干凈
git文件狀態
Git 的文件狀態分為三種:工作目錄(Working Directory)、暫存區(Staging Area)、本地倉庫(Local Repository)。了解這些概念及其交互方式是掌握 Git 的關鍵。
工作目錄
工作目錄是你在本地計算機上看到的項目文件。它是你實際操作文件的地方,包括查看、編輯、刪除和創建文件。所有對文件的更改首先發生在工作目錄中。
在工作目錄中的文件可能有以下幾種狀態:
- 未跟蹤(Untracked):新創建的文件,未被 Git 記錄。
- 已修改(Modified):已被 Git 跟蹤的文件發生了更改,但這些更改還沒有被提交到 Git 記錄中。
暫存區
暫存區,也稱為索引(Index),是一個臨時存儲區域,用于保存即將提交到本地倉庫的更改。你可以選擇性地將工作目錄中的更改添加到暫存區中,這樣你可以一次提交多個文件的更改,而不必提交所有文件的更改。
- 使用 git add
命令將文件從工作目錄添加到暫存區。 - 使用 git add . 命令將當前目錄下的所有更改添加到暫存區。
git add <filename> # 添加指定文件到暫存區
git add . # 添加所有更改到暫存區
本地倉庫
本地倉庫是一個隱藏在 .git 目錄中的數據庫,用于存儲項目的所有提交歷史記錄。每次你提交更改時,Git 會將暫存區中的內容保存到本地倉庫中。
git commit -m "commit message" # 提交暫存區的更改到本地倉庫
git基本操作命令

workspace:工作區
staging area:暫存區/緩存區
local repository:版本庫或本地倉庫
remote repository:遠程倉庫

創建倉庫命令
| 命令 | 說明 |
|---|---|
| git init | 初始化倉庫 |
| git clone | 拷貝一份遠程倉庫,也就是下載一個項目 |
提交與修改
下表列出了有關創建與提交你的項目的快照的命令:
| 命令 | 說明 |
|---|---|
| git add | 添加文件到暫存區 |
| git status | 查看倉庫當前的狀態,顯示有變更的文件。 |
| git diff | 比較文件的不同,即暫存區和工作區的差異。 |
| git difftool | 使用外部差異工具查看和比較文件的更改。 |
| git range-diff | 比較兩個提交范圍之間的差異。 |
| git commit | 提交暫存區到本地倉庫。 |
| git reset | 回退版本。 |
| git rm | 將文件從暫存區和工作區中刪除。 |
| git mv | 移動或重命名工作區文件。 |
| git notes | 添加注釋。 |
| git checkout | 分支切換。 |
| git switch | (Git 2.23 版本引入) 更清晰地切換分支。 |
| git restore | (Git 2.23 版本引入) 恢復或撤銷文件的更改。 |
| git show | 顯示 Git 對象的詳細信息。 |
提交日志
| 命令 | 說明 |
|---|---|
| git log | 查看歷史提交記錄 |
| git blame |
以列表形式查看指定文件的歷史修改記錄 |
| git shortlog | 生成簡潔的提交日志摘要 |
| git describe | 生成一個可讀的字符串,該字符串基于 Git 的標簽系統來描述當前的提交 |
遠程操作
| 命令 | 說明 |
|---|---|
| git remote | 遠程倉庫操作 |
| git fetch | 從遠程獲取代碼庫 |
| git pull | 下載遠程代碼并合并 |
| git push | 上傳遠程代碼并合并 |
| git push --set-upstream origin test1 | 上傳并連接分支上游 |
| git submodule | 管理包含其他 Git 倉庫的項目 |
git分支管理
使用分支意味著你可以從開發主線上分離開來,然后在不影響主線的同時繼續工作。

Git 分支實際上是指向更改快照的指針。
| 頭 | 頭 |
|---|---|
| 創建新分支 | git checkout -b <branchname> |
| 創建新分支舉例 | git checkout -b feature-xyz |
| 切換分支命令 | git checkout (branchname) |
| 切換分支命令舉例 | git checkout main[1] |
| 查看所有分支 | git branch |
| 查看遠程分支 | git branch -r |
| 查看所有分支(本地和遠程) | git branch -a |
| 將其他分支合并到當前分支 | git merge <branchname> |
| 舉例:切換到 main 分支并合并 feature-xyz 分支 | git git checkout main&&git merge feature-xyz |
| 刪除本地分支 | git branch -d <branchname> |
| 刪除遠程分支 | git push origin -- delete <branchname> |
| 強制刪除未合并的分支 | git branch -D <branchname> |
| 列出分支 | git branch |
| 手動創建分支 | git branch (branchname) |
一旦某分支有了獨立內容,你終究會希望將它合并回到你的主分支。 你可以使用以下命令將任何分支合并到當前分支中去:git merge
假設主分支main里面沒有刪除text1
進入新分支branch1里面刪除了text1文件
合并branch1分支到main主分支:git merge branch1 (在main主分支處處理)
以上實例中我們將 newtest 分支合并到主分支去,test.txt 文件被刪除。
合并完后刪除分支branch1:git branch -d branch1


git查看提交歷史
ing
git標簽
ing
git flow
ing
git 進階
ing
git github
ing
git 服務器搭建
ing
git實操
demo項目
- 首先在github上創建了一個遠程庫
- 然后在本地的原項目里面初始化git
- (git remote remove origin //可以斷開關聯的遠程庫)
- git remote add origin https://github.com/2575451471/stm-.git //關聯遠程庫
>git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin master
(這里提示當前分支master沒有上游分支,要推送當前分支并設置遠程為上游用“git push --set-upstream origin master”)
(我猜測是因為github的初始化branch名是main,而本地是master,所以找不到master分支的遠程上游)
-
git push --set-upstream origin master(聽從,推送當前分支并設置遠程為上游,此時遠程會創建一個origin/master分支)
此時遠程就有了兩個分支,origin/main和origin/master -
這個時候我想刪除遠程分支 origin/main
-
首先必須在github上面修改默認分支(因為git首先創建main為默認分支,)
- 要先用命令查看遠程分支 git branch -r
一開始只顯示了
origin/master
本地和遠程沒有同步
使用git fetch origin (將遠程倉庫中所有分支的最新提交記錄下載到本地的 .git 目錄中,并更新你的遠程跟蹤分支)
然后再查看遠程分支 git branch -r
origin/main
origin/master
- 刪除遠程分支 git push origin --delete main
綜上所述:
github創建遠程庫
本地初始化git(此處分支最好和遠程分支同名) git init我這次由于沒有同名
將本地工程同步 git add . git commit -m "init"
關聯遠程庫 git remote add origin https://github.com/2575451471/stm-.git
創建并連接本地master的遠程上游origin/master: git push --set-upstream origin master
同步遠程庫分支信息 git fetch origin
在github上修改默認分支為master
刪除遠程分支 git push origin --delete main
git報錯
git push報錯:fatal: unable to access ‘https://github.com/……
git config --global http.proxy
git config --global --unset http.proxy
git config --global http.sslVerify "false"
查詢并且取消代理設置,并且關閉ssl驗證。



浙公網安備 33010602011771號