最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Git版本控制從入門到精通的完全指南

 更新時(shí)間:2026年03月21日 13:52:59   作者:用戶918686128687  
作為當(dāng)今最流行的分布式版本控制系統(tǒng),Git 已經(jīng)成為開發(fā)者必備的技能之一,本文將帶你從零開始,逐步掌握 Git 的核心概念和常用操作,需要的朋友可以參考下

作為當(dāng)今最流行的分布式版本控制系統(tǒng),Git 已經(jīng)成為開發(fā)者必備的技能之一。無論你是獨(dú)立開發(fā)者還是團(tuán)隊(duì)協(xié)作,Git 都能幫助你高效管理代碼版本。本文將帶你從零開始,逐步掌握 Git 的核心概念和常用操作。

Git 初始化與配置

git init

這個(gè)簡單的命令會(huì)在當(dāng)前目錄創(chuàng)建一個(gè)新的 Git 倉庫。Git 倉庫是 Git 用來跟蹤和管理項(xiàng)目變更的核心機(jī)制。執(zhí)行后,你會(huì)看到一個(gè)隱藏的 .git 文件夾,它包含了 Git 所需的所有倉庫數(shù)據(jù)。

git config user.name "sin"
git config user.email "123456@qq.com"

這些配置命令非常重要,因?yàn)樗鼈冊O(shè)置了提交代碼時(shí)的作者信息。Git 會(huì)將這些信息附加到你的每一次提交上,這樣其他人就能知道是誰做了哪些修改。

查看配置項(xiàng):

git config -l

這個(gè)命令會(huì)列出所有 Git 配置,包括用戶信息、別名設(shè)置等。當(dāng)需要檢查或調(diào)試配置問題時(shí)非常有用。

刪除配置

git config -unset user.email

如果你需要?jiǎng)h除某個(gè)特定的配置項(xiàng),可以使用這個(gè)命令。注意,如果該配置是在全局設(shè)置的,你需要使用相同的范圍來刪除它。

一臺服務(wù)器可以創(chuàng)建多個(gè)本地倉庫,加了global相當(dāng)于配置在全局都生效。

git config --global user,name "sin"

全局配置(--global)會(huì)將設(shè)置應(yīng)用于當(dāng)前用戶的所有倉庫,而本地配置(不加--global)只影響當(dāng)前倉庫。這在多項(xiàng)目開發(fā)中特別有用。

是用global創(chuàng)建的想要重置需要同樣是用global關(guān)鍵字。

我們可以進(jìn)入.get文件:

[sin@VM-4-8-centos gitcode]$ cd .git
[sin@VM-4-8-centos .git]$ tree ./
./
|-- branches
|-- config
|-- description
|-- HEAD
|-- hooks
|   |-- applypatch-msg.sample
|   |-- commit-msg.sample
|   |-- post-update.sample
|   |-- pre-applypatch.sample
|   |-- pre-commit.sample
|   |-- prepare-commit-msg.sample
|   |-- pre-push.sample
|   |-- pre-rebase.sample
|   -- update.sample
|-- info
|   -- exclude
|-- objects
|   |-- info
|   -- pack
-- refs
    |-- heads
    -- tags

.git 目錄是 Git 倉庫的核心,包含了所有版本控制所需的數(shù)據(jù)。其中:

  • objects 目錄存儲所有數(shù)據(jù)內(nèi)容
  • refs 目錄存儲指向分支和標(biāo)簽的指針
  • HEAD 文件指向當(dāng)前所在的分支
  • config 文件包含倉庫特定的配置選項(xiàng)

不能再.git文件中手動(dòng)修改任何內(nèi)容。手動(dòng)修改可能會(huì)導(dǎo)致倉庫損壞,應(yīng)該始終使用 Git 命令來操作。

Git 基本工作流程

這張圖清晰地展示了 Git 的三個(gè)主要區(qū)域:工作區(qū)、暫存區(qū)(Stage/Index)和版本庫(Repository)。理解這三個(gè)區(qū)域的關(guān)系對掌握 Git 至關(guān)重要。

git add file.txt

git add 命令將工作區(qū)的修改添加到暫存區(qū)。暫存區(qū)就像一個(gè)準(zhǔn)備區(qū),讓你可以精心挑選哪些修改要包含在下一次提交中。

git commit file.txt -m"本次提交的細(xì)節(jié)"

git commit 命令將暫存區(qū)的修改永久保存到版本庫中。提交信息(-m參數(shù))應(yīng)該清晰描述這次提交的目的,這對日后回溯歷史非常有幫助。

git log

git log 顯示項(xiàng)目的提交歷史,包括每次提交的作者、日期和提交信息。這是了解項(xiàng)目演變過程的主要方式。

Git 對象模型

[root@VM-4-8-centos gitstudy]# tree .git
.git
|-- branches
|-- COMMIT\_EDITMSG
|-- config
|-- description
|-- HEAD
|-- hooks
|   |-- applypatch-msg.sample
|   |-- commit-msg.sample
|   |-- post-update.sample
|   |-- pre-applypatch.sample
|   |-- pre-commit.sample
|   |-- prepare-commit-msg.sample
|   |-- pre-push.sample
|   |-- pre-rebase.sample
|   -- update.sample
|-- index
|-- info
|   -- exclude
|-- logs
|   |-- HEAD
|   -- refs
|       -- heads
|           -- master
|-- objects
|   |-- 2f
|   |   -- 96a52bce7a059aab3577e7e9b8499df7aa46dc
|   |-- 9c
|   |   -- 7b41e1c03f5499d21419108d6ef57d0bec1da4
|   |-- ec
|   |   -- 8c05d08dbd2166e7550d64239cd997a35e396c
|   |-- info
|   -- pack
-- refs
    |-- heads
    |   -- master
    -- tags

Git 的核心是一個(gè)內(nèi)容尋址文件系統(tǒng),這意味著它存儲的是文件內(nèi)容的哈希值而非文件名。每次提交都會(huì)創(chuàng)建一個(gè)新的對象存儲在 objects 目錄中。

[root@VM-4-8-centos gitstudy]# cat .git/refs/heads/master
ec8c05d08dbd2166e7550d64239cd997a35e396c

master 分支實(shí)際上只是一個(gè)指向特定提交對象的指針。這種設(shè)計(jì)使得分支創(chuàng)建和切換非常高效。

git cat-file -p ec8c05d08dbd2166e7550d64239cd997a35e396c

git cat-file 命令可以查看 Git 對象的內(nèi)容。這是深入了解 Git 內(nèi)部工作原理的強(qiáng)大工具。

[root@VM-4-8-centos gitstudy]# git cat-file -p ec8c05d08dbd2166e7550d64239cd997a35e396c
tree 9c7b41e1c03f5499d21419108d6ef57d0bec1da4
author sin <123456@sin.com> 1747633828 +0800
committer sin <123456@sin.com> 1747633828 +0800

Init and test

這個(gè)提交對象包含了指向樹對象(tree)的指針、作者信息、提交者信息和提交消息。樹對象則包含了項(xiàng)目目錄結(jié)構(gòu)和文件指針。

git追蹤管理的不是文件,是修改。這意味著 Git 關(guān)注的是內(nèi)容的變化,而不是文件本身。這種設(shè)計(jì)使得 Git 能夠高效地處理文件重命名、移動(dòng)等操作。

查看狀態(tài)與差異

git status

git status 是日常使用最頻繁的命令之一。它會(huì)告訴你:

  • 哪些文件被修改但未暫存
  • 哪些文件已暫存準(zhǔn)備提交
  • 當(dāng)前所在的分支
  • 與遠(yuǎn)程分支的關(guān)系
[root@VM-4-8-centos gitstudy]# touch file1
[root@VM-4-8-centos gitstudy]# ls
file1  readme
[root@VM-4-8-centos gitstudy]# git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#        file1
nothing added to commit but untracked files present (use "git add" to track)

這個(gè)輸出顯示我們創(chuàng)建了一個(gè)新文件 file1,但它目前處于"未跟蹤"狀態(tài),意味著 Git 還沒有開始跟蹤它的變化。

使用git diff,可以查看文件的修改:

[root@VM-4-8-centos gitstudy]# git diff readme
diff --git a/readme b/readme
index 2f96a52..f633a22 100644
--- a/readme
+++ b/readme
@@ -1 +1,2 @@
 sdsadsad
+nihao

git diff 顯示工作區(qū)與暫存區(qū)之間的差異。這個(gè)輸出顯示我們在 readme 文件中添加了一行"nihao"。

版本回退

git reset [--soft | --mixed | --hard] [HEAD]

版本回退是 Git 的強(qiáng)大功能之一,但需要謹(jǐn)慎使用。三種模式的區(qū)別:

  • --soft: 只移動(dòng) HEAD 指針,不改變暫存區(qū)和工作區(qū)
  • --mixed(默認(rèn)): 移動(dòng) HEAD 指針并重置暫存區(qū),但不改變工作區(qū)
  • --hard: 徹底回退,移動(dòng) HEAD 指針、重置暫存區(qū)和工作區(qū)

要慎用hard,防止一次回退導(dǎo)致代碼消失。使用 --hard 前,確保你已經(jīng)保存或提交了所有重要更改。

回退一次之后,如何ID沒有被清楚,還是有后悔藥可以吃的(撤回 回退)

使用git reflog可以查看回退操作。git reflog 記錄了 HEAD 的所有變化,即使是被"丟失"的提交也能在這里找到。

撤銷修改

如果在工作區(qū)中,可以使用下面的代碼進(jìn)行撤銷修改:

  1. 手動(dòng)修改
  2. Git checkout -- [filename]

git checkout -- <file> 會(huì)丟棄工作區(qū)中指定文件的所有修改,將其恢復(fù)到最近一次提交或暫存的狀態(tài)。

如果代碼同時(shí)在工作區(qū)與暫存區(qū),需要使用git reset進(jìn)行版本回退。這種情況下,你需要先取消暫存(git reset HEAD <file>),然后再撤銷工作區(qū)的修改。

刪除文件

Git提供刪除命令,可以同時(shí)刪除工作區(qū)與暫存區(qū)。

git rm

git rm 不僅會(huì)從工作目錄中刪除文件,還會(huì)將這次刪除操作記錄到暫存區(qū)。這與直接刪除文件后運(yùn)行 git add 效果相同。

分支管理

分支是 Git 最強(qiáng)大的功能之一。Head可以指向其他分支,被指向的分支是當(dāng)前工作的分支。

創(chuàng)建分支:

git branch dev

分支在 Git 中非常輕量級 - 它們只是指向特定提交的指針。創(chuàng)建新分支不會(huì)復(fù)制任何文件,只是創(chuàng)建一個(gè)新的指針。

切換分支:

git checkout dev

切換分支會(huì)更新工作目錄中的文件以匹配該分支指向的提交。如果工作區(qū)有未提交的修改,Git 會(huì)阻止切換以避免數(shù)據(jù)丟失。

查看當(dāng)前分支:

git branch

不帶參數(shù)的 git branch 會(huì)列出所有本地分支,并在當(dāng)前分支前標(biāo)記星號。

合并操作: 在轉(zhuǎn)到master分支上后運(yùn)行下面的代碼,即可將dev分支合并到master分支上。

git merge dev

合并將另一個(gè)分支的修改整合到當(dāng)前分支。Git 會(huì)嘗試自動(dòng)合并,如果遇到?jīng)_突,需要手動(dòng)解決。

刪除本地分支:

git branch -d dev

刪除分支前,確保它的所有修改都已經(jīng)合并到其他分支。如果分支未合并,Git 會(huì)拒絕刪除,除非使用 -D 強(qiáng)制刪除。

git中如果兩個(gè)分支產(chǎn)生沖突,會(huì)在生成的項(xiàng)目中顯示出來,之后由開發(fā)人員手動(dòng)修復(fù)沖突。沖突標(biāo)記格式為:

<<<<<<< HEAD
當(dāng)前分支的內(nèi)容
=======
要合并的分支的內(nèi)容
>>>>>>> branch-name

在手動(dòng)合并之后,需要進(jìn)行一次提交操作。這個(gè)提交就是合并提交,記錄了沖突解決的結(jié)果。

在git中,可以將提交過程展示為可視的圖:

git log --graph --abbrev-commit

--graph 選項(xiàng)會(huì)繪制 ASCII 圖形展示分支和合并歷史,--abbrev-commit 顯示縮寫的提交哈希,使輸出更簡潔。

分支管理策略

FastForward模式下面,并不能看出來這次的提交是正常提交還是通過merge的提交。當(dāng)合并的分支是當(dāng)前分支的直接祖先時(shí),Git 默認(rèn)會(huì)使用"快進(jìn)"(fast-forward)合并,即簡單移動(dòng)分支指針而不創(chuàng)建合并提交。要強(qiáng)制創(chuàng)建合并提交,可以使用 --no-ff 選項(xiàng)。

遠(yuǎn)程倉庫操作

從本地將代碼上傳到遠(yuǎn)程倉庫:

git push

git push 將本地分支的提交上傳到遠(yuǎn)程倉庫。第一次推送時(shí)需要使用 -u 選項(xiàng)設(shè)置上游分支。

將遠(yuǎn)程倉庫拉去到本地:

git fetch

git fetch 從遠(yuǎn)程倉庫下載所有數(shù)據(jù),但不會(huì)自動(dòng)合并到工作分支。這讓你可以在合并前先檢查變化。

git pull origin master:master

git pull 實(shí)際上是 git fetchgit merge 的組合操作。它會(huì)從遠(yuǎn)程倉庫獲取最新更改并嘗試合并到當(dāng)前分支。

如果遠(yuǎn)端和本地的名稱一樣的話也可以使用下面的縮寫版:

git pull origin master

Git 別名

git除了可以配置name和email,也可以為命令起別名:

git config --global alias.lpa 'log --pretty=oneline --abbrev-commit'

別名可以顯著提高工作效率。例如,上面的命令創(chuàng)建了一個(gè) lpa 別名,可以顯示簡潔的提交歷史。

標(biāo)簽管理

可以對一次commit進(jìn)行標(biāo)簽的標(biāo)識。標(biāo)簽通常用于標(biāo)記發(fā)布版本(v1.0, v2.0等)。

使用下面的命令,可以默認(rèn)為最新的提交打一個(gè)標(biāo)簽:

git tag v1.0

標(biāo)簽分為輕量標(biāo)簽(只是一個(gè)指向特定提交的指針)和附注標(biāo)簽(包含打標(biāo)簽者信息、日期和消息)。要?jiǎng)?chuàng)建附注標(biāo)簽,使用 -a 選項(xiàng)。

使用下面的命令可以查看現(xiàn)在有哪些標(biāo)簽存在:

git tag

在標(biāo)簽命令之后也可以進(jìn)行評論。使用 -m 選項(xiàng)可以為標(biāo)簽添加注釋,這對發(fā)布說明特別有用。

可以用下面的代碼刪除標(biāo)簽:

git tag -d v1.0

標(biāo)簽?zāi)J(rèn)只在本地創(chuàng)建,要共享標(biāo)簽到遠(yuǎn)程倉庫,需要顯式推送(git push origin v1.0)。

總結(jié)

Git 是一個(gè)功能強(qiáng)大且靈活的工具,掌握它可以顯著提高你的開發(fā)效率。建議從基礎(chǔ)命令開始練習(xí),逐步熟悉更高級的功能。記?。?/p>

  • 頻繁提交,保持提交的原子性
  • 編寫有意義的提交信息
  • 合理使用分支進(jìn)行功能開發(fā)
  • 定期與遠(yuǎn)程倉庫同步

隨著經(jīng)驗(yàn)的積累,你會(huì)越來越欣賞 Git 的設(shè)計(jì)哲學(xué)和強(qiáng)大能力。

以上就是Git版本控制從入門到精通的完全指南的詳細(xì)內(nèi)容,更多關(guān)于Git版本控制指南的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • yum的基本用法和實(shí)例(推薦)

    yum的基本用法和實(shí)例(推薦)

    這篇文章主要介紹了Linux(centos8)下的yum的基本用法和實(shí)例,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • github 生成token的方法圖解

    github 生成token的方法圖解

    這篇文章主要介紹了github 生成token的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-09-09
  • 超全整理visual?studio快捷鍵使用技巧

    超全整理visual?studio快捷鍵使用技巧

    這篇文章主要為大家介紹了整理超全的visual?studio快捷鍵使用技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-02-02
  • vscode使用remote-ssh免密連接服務(wù)器

    vscode使用remote-ssh免密連接服務(wù)器

    本文主要介紹了vscode使用remote-ssh免密連接服務(wù)器
    2024-03-03
  • Git上有更新而本地?zé)o更新時(shí)的解決過程

    Git上有更新而本地?zé)o更新時(shí)的解決過程

    文章解決分支名不匹配導(dǎo)致的推送沖突問題,建議先拉取遠(yuǎn)程更新,手動(dòng)解決沖突并提交,若需強(qiáng)制推送需謹(jǐn)慎,可能覆蓋遠(yuǎn)程內(nèi)容
    2025-09-09
  • 修改git commit的author信息實(shí)現(xiàn)方式

    修改git commit的author信息實(shí)現(xiàn)方式

    當(dāng)多賬號Git提交出現(xiàn)用戶錯(cuò)誤時(shí),可通過rebase修改歷史提交的作者信息,使用amend調(diào)整最后一次提交,再用continue恢復(fù)流程,確保提交記錄顯示正確的賬號信息
    2025-07-07
  • Git標(biāo)簽管理

    Git標(biāo)簽管理

    本篇文章主要介紹了Git標(biāo)簽管理的相關(guān)知識。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-04-04
  • Spark處理trick總結(jié)分析

    Spark處理trick總結(jié)分析

    這篇文章主要為大家介紹了Spark處理trick總結(jié)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • TCP關(guān)閉問題詳細(xì)介紹

    TCP關(guān)閉問題詳細(xì)介紹

    這篇文章主要介紹了TCP關(guān)閉問題詳細(xì)介紹的相關(guān)資料, TCP的三次握手,四次揮手,需要的朋友可以參考下
    2017-04-04
  • Git沖突處理指南之如何高效解決代碼沖突問題

    Git沖突處理指南之如何高效解決代碼沖突問題

    我們在日常使用Git的過程中經(jīng)常會(huì)發(fā)生一些意外情況,如果處理不當(dāng),則可能會(huì)出現(xiàn)代碼丟失的假象,這篇文章主要給大家介紹了關(guān)于Git沖突處理指南之如何高效解決代碼沖突問題的相關(guān)資料,需要的朋友可以參考下
    2024-08-08

最新評論

镇原县| 漳州市| 祁阳县| 历史| 太仆寺旗| 荥阳市| 原平市| 甘谷县| 利辛县| 德化县| 同仁县| 察雅县| 新干县| 秦安县| 毕节市| 开鲁县| 合山市| 沙洋县| 宣化县| 禹州市| 大埔区| 榕江县| 页游| 蓬安县| 凉山| 崇义县| 简阳市| 曲阳县| 泉州市| 冷水江市| 兴和县| 松阳县| 宁南县| 中西区| 虹口区| 宜州市| 静安区| 宜春市| 建宁县| 桃江县| 墨竹工卡县|