moerjielovecookie

Sawen_Blog

一个普通工科牲的博客网站
x
github
follow
email

git學習

Git 基礎概念#

Git 概念彙總#

概念描述
工作區(Workspace)在本地的代碼庫,新增和修改的文件會提交到暫存區
暫存區(stage)用於臨時存放文件的修改,實際上是一個文件(. Git/index),保存待提交的文件列表
倉庫(repository)Git 的管理倉庫,記錄文件狀態的地方,所有的代碼版本都在裡面
遠程倉庫(origin/remote)專用的 git 伺服器,為多人提供共享服務。本地的倉庫通過 ==push== 命令將代碼推送到遠程倉庫裡
本地倉庫本地電腦內直接使用的版本庫
分支(Branch)分支是從主線分離出的副本,可以獨立操作而不干擾主線,倉庫初始化後會有一個默認主分支 “master” 或 “main”
(HEAD)HEAD 類似指針,指向當前活動分支的最新版本
提交(Commit)將 stage 中的所有變更提交到當前倉庫的活動分支
推送(Push)將本地倉庫的版本推送到遠程倉庫
拉取(Pull)從遠程倉庫獲取更新到本地倉庫
獲取(Fetch)從遠程倉庫更新,作用同 pull,但是不會自動合併
衝突(Conflict)多人對同一個文件進行修改後在遠程倉庫合併時會面臨衝突,需要人工合併處理
合併(Merge)對有 conflict 的文件進行合併操作,git 可以自動合併變更內容,無法自動處理的文件需要人工處理
標籤(Tag)標籤指的是某個分支某個特定時間點的狀態,可以理解為提交記錄的別名,常用來標記版本。
main/master倉庫的默認主分支
origin/main表示遠程倉庫的 main 分支

工作區 / 暫存區 / 倉庫#

image

  • 圖中的 objects 標識的區域為 git 的對象庫,實際的位置是 “. Git/objects” 目錄中,裡面包含了創建的各種對象和內容
  • 當對工作區的修改 / 新增文件執行 git add命令後,暫存區的目錄樹被更新,同時工作區修改 / 新增文件的內容被寫入 objects 的一個新的對象中,而該對象的 ID 被記錄在 stage 的文件索引中
  • 當執行 git commit時,stage 的目錄樹寫入 objects 中,main 分支做出更新
  • 當執行 git reset HEAD 命令時,暫存區的目錄樹會被重寫,被 master 分支指向的目錄樹所替換,但是工作區不受影響。
  • 當執行 git rm --cached “file” 命令時,會直接從暫存區刪除文件,工作區則不做出改變

工作區#

本地計算機內的項目文件

暫存區(stage)#

暫存區是一個臨時存儲區域,包含即將提交到版本庫中的文件快照
常用命令

git add filename       # 將單個文件添加到暫存區
git add .              # 將工作區中的所有修改添加到暫存區
git status             # 查看哪些文件在暫存區中

版本庫(Repository)#

版本庫包含項目的所有版本歷史記錄,每次提交都會在版本庫中創建一個新的快照,這些快照不可變,確保了項目的完整歷史記錄
常用命令

git commit -m "提交信息"   # 將暫存區的更改提交到本地版本庫
git log                          # 查看提交歷史
git diff                         # 查看工作區和暫存區之間的差異
git diff --cached                # 查看暫存區和最後一次提交之間的差異

三者之間的關係#

  • 工作區 -> 暫存區
git add
  • 暫存區 -> 版本庫
git commit -m "提交信息"
  • 版本庫 -> 遠程倉庫
git push origin branch-name
  • 遠程倉庫 -> 本地版本庫
git pull origin branch-name
# 或者
git fetch origin branch-name
git merge origin/branch-name

Git 工作流程#

|420

1、克隆倉庫#

如果你要參與一個已有的項目,首先需要將遠程倉庫克隆到本地:

git clone https://github.com/username/repo.git
cd repo

2、創建新分支#

為了避免直接在 main 或 master 分支上進行開發,通常會創建一個新的分支:

git checkout -b new-feature

3、工作目錄#

在工作目錄中進行代碼編輯、添加新文件或刪除不需要的文件。

4、暫存文件#

將修改過的文件添加到暫存區,以便進行下一步的提交操作:

git add filename

或者添加所有修改的文件

git add .

5、提交更改#

將暫存區的更改提交到本地倉庫,並添加提交信息:

git commit -m "添加新功能"

連接遠程倉庫

git remote add origin [[email protected]]

6、拉取最新更改#

在推送本地更改之前,最好從遠程倉庫拉取最新的更改,以避免衝突:

git pull origin main

或者如果在新的分支上工作

git pull origin new-feature

7、推送更改#

將本地的提交推送到遠程倉庫:

git push origin new-feature

8、刪除分支#

如果不再需要新功能分支,可以將其刪除:

git branch -d new-feature

或者從遠程倉庫刪除分支:

git push origin --delete new-feature

Git 指令#

image

Git 分支#

Git 倉庫在 fork 中打開後界面如下:
|405
可以看到每一個分支相互平行,只有完成某些項目的開發時才會合併到主分支。
那麼分支有什麼用呢?當計劃開發一個新的功能時,第一天完成了百分之 50,如果直接提交到 master 分支,則可能導致別人無法開發,如果全部寫完再提交的話又可能因為意外丟失之前的進度。此時就體現出分支的優越性了。我們可能創建一個屬於自己的別人不可見的分支,在這個分支上開發提交代碼不會影響他人,可以隨意操作,等到開發結束了再一次性合併到 master 分支。

Git 分支常用命令#

git branch # 列出所有本地分支

git branch -r #列出所有遠程分支

git branch -a #列出所有本地和遠程的分支

git branch [new-branch-name] #創建一個新的分支,但停留在當前分支

git checkout -b [new-branch-name] #創建一個新的分支,並切換到該分支

git branch --track [branch] [remote-branch] #創建一個新分支,並與指定的遠程分支建立追蹤關係

git checkout [new-branch-name] #切換到指定分支,並更新工作區

git merge [branch] #合併指定分支到當前分支

git branch -d [branch] #刪除分支

git push origin --delete [branch] #刪除遠程分支
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。