1. 程式人生 > >git 中 HEAD 概念

git 中 HEAD 概念

參考資料

本文講述的 是 git 命令中的 HEAD ,適用於 github ,不適用於 gerrit


本文不對git進行介紹,只是收集一些和 HEAD 相關的連結
  • 例項
$ git branch -a
  dev
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/master
  • 解讀
1/第一個HEAD
從上面的示例可以看到有第三行有 一個 * 號.這個是一個HEAD 標識
2/第二個HEAD
第四行有一個 HEAD ,這個HEAD 是 remotes/origin/HEAD

  -----------------

在檔案中

1
/第一個HEAD $ cat .git/HEAD ref: refs/heads/dev 2/第二個HEAD $ cat .git/refs/remotes/origin/HEAD ref: refs/remotes/origin/master

HEAD的實質,請參見

else

  • 從上面可以看到 第一種HEAD 都是指向了分支,分支指向了分支上的最新提交
  • 其實HEAD除了可以指向分支,也可以指向提交
git checkout <commit>

更新工作目錄中的所有檔案,使得和某個特定提交中的檔案一致。
你可以將提交的雜湊字串,或是標籤作為 <commit> 引數。這會使你處在分離 HEAD 的狀態。

當HEAD處於分離狀態(不依附於任一分支)時,提交操作可以正常進行,但是不會更新任何已命名的分支。(你可以認為這是在更新一個匿名分支。)
$ git checkout 3e61d72da33650ecb5b6ac4b8395fde3c4fb950c       
Note: checking out '3e61d72da33650ecb5b6ac4b8395fde3c4fb950c'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new
branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new-branch-name> HEAD is now at 3e61d72... 10 $ git status HEAD detached at 3e61d72 nothing to commit, working directory clean $ cat .git/HEAD 3e61d72da33650ecb5b6ac4b8395fde3c4fb950c $ git checkout master Previous HEAD position was 3e61d72... 10 Switched to branch 'master' Your branch is up-to-date with 'origin/master'. $ git status On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working directory clean
  • 綜上: head 指向提交,也可以指向分支.
  • 分支永遠指向 分支上的最新提交

相關推薦

git HEAD 概念

參考資料 本文講述的 是 git 命令中的 HEAD ,適用於 github ,不適用於 gerrit 本文不對git進行介紹,只是收集一些和 HEAD 相關的連結 例項

GitHEAD和ORIG_HEAD指標指的是什麼

一次版本回退後,在歷史記錄裡面看到了這樣一張圖: master和dev指標指向的是本地的master分支和dev分支,origin/master和origin/dev指向的是遠端倉庫的master分支和dev分支,這個很好理解。 HEAD指標代表當前工作路徑,HEAD與m

筆記-git的幾個基本概念

jpg pre 父節點 sha 推薦一個 必須 解釋 checkout 形式 這篇筆記旨在理解幾個核心的git基本概念,如果對git了解較少,可以先看git基本教程。 這裏推薦一個:廖雪峰-Git教程 commit(提交) 與 branch(分支) 版本號 commit是

理解githead和master

2018年10月31日 21:59:19 小石頭5 閱讀數:13 標籤: git

[前端漫談] 一巴掌拍平Git的各種概念

0x000 導讀 講git的文章很多,但是大部分都是一個套路,講概念,講命令,太多的概念和命令總是讓人有一種稀裡糊塗的感覺,講的很對,但似乎沒能講透,沒有醍醐灌頂的感覺,大概是我的悟性差吧。所以這幾天一直在做各種git的實驗,並且閱讀了一些部落格、文件、資料,綜合下來整理出了這麼一篇文章。注意: 本

Git的‘HEAD’是什麽?- Git名詞解釋

wid auto tps ack set rip div gem class 問題來源 git 恢復文件到初始狀態的命令: $ git reset HEAD <file> git 展示提交日誌命令: $ git log commit c4f

Git的core.autocrlf選項

換行 fig onf 配置 成了 auto git 環境 oba 項目的開發環境為Windows,在Linux環境下編譯,使用Git進行版本控制。 在安裝好Git和TortoiseGit後,從遠端clone,遇到一個奇怪的問題,Shell腳本中的LF總是被替換成了CRLF

IOS 刪除git的submodules 以sourceTree為例

wan .wang neapp img module 技術分享 net 子目錄 git 1、首先刪除submodule的條目 選中要刪除的子目錄 右鍵刪除,刪除之後, 該子模塊消失。 然後查看 .gitmodules 發現刪除了裏面的 [submodule "Iphon

史上最全: svn與git的對照(二):svn與git的相關概念

fill 來看 out avi head clas 相關 iss b2c 如圖1是svnserver端數據的文件夾結構 以下是gitserver端的文件夾結構 縱觀svn和git服務端的文件夾結構我們非常easy發現 1.有些目錄還是蠻像的。甚

基於win7在GIT設置VUE1.0開發環境

web vuejs 1.0 最近項目要使用VUE.JS作為前端框架,進行前後端的分離。雖然要使用2.0進行開發,但是要先基於1.0進行學習,逐步進行理解與開發。由於沒搞清楚vue2.0和vue1.0環境中部分內容的關系,所以在寫程序時碰到好多坑,下述是論述的1.0的配置。現在剛初學幾天,大概理解到

gitPlease enter a commit message to explain why this merge is necessary

eas csdn sof 退出 合並 comm 冒號 merge font 今天在使用git時,git pull和git merge時,經常出現如下錯誤信息: Please enter a commit message to explain why this merge

git誤刪提交(commit)後,怎麽恢復

pan 找到 mage 發現 bsp cnblogs reset XML spa “xml文件存儲數據”提交被我誤操作,即使用reset --hard刪除了,然後又進行了三次提交,發現刪除的提交有用,需要找回來, 於是找了好久,找到好方法: 1。進入工程下的.git文件下

計算機概念: 視圖 VS 鏡像

lec 用戶 行數據 記錄 統計 語句 一份 同時 查看 這兩個概念還是不太一樣的。下面來說說個人的理解,記錄一下。 1. 鏡像 鏡像可以理解為一份完全一樣的拷貝。也就是"深度拷貝",一個復制品。 比如 iso映像文件,ubuntu-12.04.5-desktop-amd6

Java集合概念

code 速度慢 boolean his 都是 結合 rem [] 特點 1.集合是儲存對象的,長度可變,可以封裝不同的對象 2.叠代器: 其實就是取出元素的方式(只能判斷,取出,移除,無法增加) 就是把取出方式定義在集合內部,這樣取出方式就

git工作區,緩存區,本地庫,遠程庫的簡要區別

comm 保存 gin 修改 origin git push 項目目錄 表示 遠程服務器 git中工作區,緩存區,本地庫,遠程庫的簡要區別 實際上前三個名詞對應到實體,都是你從遠程倉庫克隆下來的那個項目目錄!只不過工作區就是你實際看到的目錄和目錄裏的內容,當你修改/添加/刪

Git 設置更改 文件對比程序 的方法

lob pro 還要 fft 它的 oca git bash con 程序 假設要改成KDiff3,那就把它取名為kdiff3.另外還要找到它的執行文件的完整路徑,然後就可以在 Git Bash 中執行一下指令,完成設置了。 指令:git config --global d

操作Git出現的問題,記錄

detail pda epo 代碼 contains 出現 error: other 再次 錯誤一:error: failed to push some refs to ‘[email protected]:....." Updates were rejected because

【07】數據庫概念

個性化 管理 log class spa 數據 個性 ble body 數據庫DataBase,不同類的數據應該放到不同的數據庫中便於對各個數據類別的進行個性化管理 避免命名沖突安全性更高 Table(表)列(Column)、字段(Field):關系數據庫中的關系指的就是

LinuxInode概念

時間戳 字節數 不同 sha oss 在一起 中文譯名 term nag Linux中Inode概念Linux中的Inode 要理解Inode,就要從文件存儲說起。文件存儲在硬盤上,那麽硬盤中最小的存儲單位叫做"扇區",這裏簡單跳出一下,跟大家說簡單解釋

簡單理解SNAT回流概念:路由器怎麽知道外網返回的數據是局域網哪臺主機的

計算機 自己的 機器 sna 報文 nat com 做的 3.5 內網到外網用的是NAT技術(地址封裝)外網到內網用的是端口映射(PNAT)計算機的端口又65535(0-65534),你說的那些有名氣的端口大多都是0-1023之間的你說的這個問題很簡單,但首先你要懂得數據是