前言
在 Git 術語中,“checkout”是在目標物體的不同版本之間切換的行為,該命令對三個不同的物體進行操作:檔案、提交和分支,除了“checkout”的定義之外,短語“檢出”通常用于表示執行命令的行為,在撤消更改主題中,我們了解了如何使用來查看舊提交,git checkout
checkout分支類似于checkout舊的提交和檔案,因為作業目錄會更新以匹配選定的分支/修訂;但是,新更改將保存在專案歷史記錄中,也就是說,它不是只讀操作,
Checking out branches
該命令允許您在由創建的分支之間導航,檢出一個分支會更新作業目錄中的檔案,以匹配存盤在該分支中的版本,并告訴 Git 在該分支上記錄所有新提交,將其視為選擇正在進行開發的哪條線路的一種方式,
git checkoutgit branch
為每個新功能創建一個專用分支是從傳統的 SVN 作業流程中進行了巨大轉變,這使得嘗試新實驗變得非常容易,而不必擔心破壞現有功能,并且可以同時處理許多不相關的特性,此外,分支還促進了幾種協作作業流程,
git checkout git clone
該命令有時可能會與混淆,兩個命令之間的區別在于,clone 命令用于從遠程存盤庫獲取代碼,而 checkout 命令則用于在本地系統上切換已經存在的代碼版本,
Usage: Existing branches
$> git branch
main
another_branch
feature_inprogress_branch
$> git checkout feature_inprogress_branch
New Branches
從當前創建
git checkout -b <new-branch>
從特定分支創建
默認情況下將基于當前,可以傳遞一個可選的附加分支引數到,在上面的例子中,被傳遞,然后以為基礎而不是當前,
git checkout -b <new-branch> <existing-branch>
Switching Branches
git checkout <branchname>
Git Checkout a Remote Branch
與團隊合作時,通常會使用遠程存盤庫,這些存盤庫可以是托管和共享的,也可以是另一個同事的本地副本,每個遠程存盤庫都將包含其自己的一組分支,為了檢出遠程分支,您必須首先獲取該分支的內容,
git fetch --all
在現代版本的Git中,您可以像本地分支一樣檢出遠程分支,
git checkout <remotebranch>
舊版本的Git需要基于.remote創建一個新分支,
git checkout -b <remotebranch> origin/<remotebranch>
此外,您可以檢出一個新的本地分支并將其重置為遠程分支的最后一次提交,
git checkout -b <branchname>
git reset --hard origin/<branchname>
Detached HEADS(分離HEAD)
現在我們已經看到了分支的三個主要用途,重要的是討論狀態,請記住,狀態是 Git 參考當前快照的方式,在內部,該命令只需更新為指定分支或提交即可,當它指向一個分支時,Git 不會抱怨,但當您檢出一個提交時,它會切換到一種狀態,
"Detached HEAD"是Git版本控制系統中的一個術語,指的是當前所在分支不再與任何具體的分支關聯,這種情況通常發生在以下兩種情況下:
- 當您檢出(checkout)某個特定提交時,而不是檢出某個分支時,
- 當您從一個沒有命名的分支上進行操作時,
當HEAD處于“detached”狀態時,您可以對代碼庫進行修改和提交,但這些更改將無法保存到任何現有分支上,如果要保留更改并創建新的永久性分支,則需要使用git branch命令手動創建新的分支,并將其指向當前HEAD所在位置,
總之,“Detached HEAD”狀態通常被視為一種臨時狀態,在完成必要操作后應該盡快恢復到正常模式以避免潛在問題,
git checkout``“detached HEAD”``HEAD``git checkout``HEAD``“detached HEAD”
這是一個警告,告訴你所有的操作都與專案開發的其余部分“脫離”了,如果您在脫離狀態下開始開發某個功能,則沒有分支可以讓您回傳該狀態,當您不可避免地檢出另一個分支(例如合并您的功能)時,將無法參考您的功能:HEAD,
未來:switch+restore
git checkout 這個命令承擔了太多職責,既被用來切換分支,又被用來恢復作業區檔案,對用戶造成了很大的認知負擔,
Git社區發布了Git的新版本2.23,在該版本中,有一個特性非常引人矚目,就是新版本的Git引入了兩個新命令 git switch 和 git restore,用以替代現在的 git checkout,換言之,git checkout 將逐漸退出歷史舞臺,
Git社區決定這樣做,是因為目前 git checkout 命令承載了太多的功能,這讓新手們感到困惑,git checkout 的核心功能包括兩個方面,一個是分支的管理,一個是檔案的恢復,這兩個核心功能,未來將由 git switch 和 git restore 分別負責,
詳細:工具系列 | git checkout 可替換命令 git switch 和 git restore - Tinywan - 博客園 (cnblogs.com)
參考資料
英語原文:Git Checkout | Atlassian Git Tutorial
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/554284.html
標籤:其他
上一篇:為teamcity的代碼語法檢查工具pyflakes增加支持python2和python3
下一篇:返回列表
