自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

面試官:說說Git 中 HEAD、工作樹和索引之間的區(qū)別?

開源
在git中,可以存在很多分支,其本質(zhì)上是一個(gè)指向commit對(duì)象的可變指針,而Head是一個(gè)特別的指針,是一個(gè)指向你正在工作中的本地分支的指針。

[[417066]]

本文轉(zhuǎn)載自微信公眾號(hào)「JS每日一題」,作者灰灰。轉(zhuǎn)載本文請(qǐng)聯(lián)系JS每日一題公眾號(hào)。

一、HEAD

在git中,可以存在很多分支,其本質(zhì)上是一個(gè)指向commit對(duì)象的可變指針,而Head是一個(gè)特別的指針,是一個(gè)指向你正在工作中的本地分支的指針

簡(jiǎn)單來講,就是你現(xiàn)在在哪兒,HEAD 就指向哪兒

例如當(dāng)前我們處于master分支,所以HEAD這個(gè)指針指向了master分支指針

然后通過調(diào)用git checkout test切換到test分支,那么HEAD則指向test分支,如下圖:

但我們?cè)趖est分支再一次commit信息的時(shí)候,HEAD指針仍然指向了test分支指針,而test分支指針已經(jīng)指向了最新創(chuàng)建的提交,如下圖:

這個(gè)HEAD存儲(chǔ)的位置就在.git/HEAD目錄中,查看信息可以看到HEAD指向了另一個(gè)文件

  1. $ cat .git/HEAD 
  2. ref: refs/heads/master 
  3.  
  4. $ cat .git/refs/heads/master 
  5. 7406a10efcc169bbab17827aeda189aa20376f7f 

這個(gè)文件的內(nèi)容是一串哈希碼,而這個(gè)哈希碼正是master分支上最新的提交所對(duì)應(yīng)的哈希碼

所以,當(dāng)我們切換分支的時(shí)候,HEAD指針通常指向我們所在的分支,當(dāng)我們?cè)谀硞€(gè)分支上創(chuàng)建新的提交時(shí),分支指針總是會(huì)指向當(dāng)前分支的最新提交

所以,HEAD指針 ——–> 分支指針 ——–> 最新提交

二、工作樹和索引

在Git管理下,大家實(shí)際操作的目錄被稱為工作樹,也就是工作區(qū)域

在數(shù)據(jù)庫(kù)和工作樹之間有索引,索引是為了向數(shù)據(jù)庫(kù)提交作準(zhǔn)備的區(qū)域,也被稱為暫存區(qū)域

Git在執(zhí)行提交的時(shí)候,不是直接將工作樹的狀態(tài)保存到數(shù)據(jù)庫(kù),而是將設(shè)置在中間索引區(qū)域的狀態(tài)保存到數(shù)據(jù)庫(kù)

因此,要提交文件,首先需要把文件加入到索引區(qū)域中。

所以,憑借中間的索引,可以避免工作樹中不必要的文件提交,還可以將文件修改內(nèi)容的一部分加入索引區(qū)域并提交

三、區(qū)別

從所在的位置來看:

  • HEAD 指針通常指向我們所在的分支,當(dāng)我們?cè)谀硞€(gè)分支上創(chuàng)建新的提交時(shí),分支指針總是會(huì)指向當(dāng)前分支的最新提交
  • 工作樹是查看和編輯的(源)文件的實(shí)際內(nèi)容
  • 索引是放置你想要提交給 git倉(cāng)庫(kù)文件的地方,如工作樹的代碼通過 git add 則添加到 git 索引中,通過git commit 則將索引區(qū)域的文件提交到 git 倉(cāng)庫(kù)中

參考文獻(xiàn)

https://backlog.com/git-tutorial/cn/intro/intro1_4.html

https://juejin.cn/post/6844903598522908686 

https://www.zsythink.net/archives/3412

 

責(zé)任編輯:武曉燕 來源: JS每日一題
相關(guān)推薦

2021-08-17 07:15:16

Git RebaseGit Merge面試

2021-08-19 08:36:22

Git ResetGit Revert版本

2021-08-09 07:47:40

Git面試版本

2024-03-11 18:18:58

項(xiàng)目Spring線程池

2021-08-11 08:53:23

Git命令面試

2021-04-30 08:28:15

WebpackLoaderPlugin

2021-09-30 07:57:13

排序算法面試

2021-06-29 09:47:34

ReactSetState機(jī)制

2024-03-28 10:37:44

IoC依賴注入依賴查找

2021-09-13 09:23:52

TypeScript命名空間

2024-08-22 10:39:50

@Async注解代理

2024-03-05 10:33:39

AOPSpring編程

2024-11-19 15:13:02

2023-12-27 18:16:39

MVCC隔離級(jí)別幻讀

2025-04-16 00:00:01

JWT客戶端存儲(chǔ)加密令

2025-04-08 00:00:00

@AsyncSpring異步

2021-08-10 08:34:12

Git ForkBranch

2025-03-10 11:40:00

前端開發(fā)HTML

2025-03-10 00:00:00

property?attributeHTML

2024-05-30 08:04:20

Netty核心組件架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)