Git(8)-分支

分支

  • 1. 分支名
  • 2. 創建分支-git branch
  • 3. 查看分支-git show-branch
  • 4. 檢出分支
    • 4.1 有未提交的修改時進行檢出
    • 4.2 合并變更到不同的分支git checkout -m
  • 5. 分離HEAD 分支
  • 6.刪除分支

分支操作命令概覽

git branch       # 列出版本庫中的分支
git branch -r    # 列出遠程跟蹤分支
git branch -a    # 列出版本庫中的分支和遠程跟蹤分支
git branch branchname1	  # 新建一個branchname1 分支
git branch branchname3 [starting CID]   # 基于starting CID新建 branchname3分支
git checkout branchname1  # 切換到branchname1分支(又叫檢出xxx分支)
git checkout -b newbranchname # 新建一個分支,并切換到該分支
git branch -d branchname2 [starting CID]  # 刪除分支git checkout -- file1    # 檢出索引中的文件file1
git checkout commit_x -- file1  # 檢出commit_x中的提file1

分支是軟件項目中啟動一條單獨開發線的基本方法。

**分支-**動態名字,隨著每次的提交移動,跟隨你持續開發的過程。
**標簽-**靜態名字,不隨著時間的推移而改變,一旦應用不應該對它做任何改動,可用于標識擁有關鍵差異特征的提交點位。

可以使用同一個名字來命名分支和標簽,但是不推薦。

1. 分支名

默認分支是master(正在改為main),分支名字始終指向改分支上的最近提交版本。
使用層次分支- bug/pr-1023, bug/pr-17 這種層次分支支持通配符選擇。

路徑層次分支命名具有一些通用的規則,分支命名規則由 git check-ref-format 底層命令強制檢測。

2. 創建分支-git branch

在任何時候,版本庫中只有一個分支是活動的。活動分支決定了工作目錄里的檢出文件。
當需要把本地分支發布,需要顯示指明發布分支的名稱。

git branch prs/pr-1138 [starting commit]   # 基于starting commit 新建 prs/pr-1138分支
# starting commit 缺省, 默認為當前分支上的最近提交
# git branch 創建分支后,需要顯示才會切換為

git branch 不帶分支名稱時,可用于列出版本庫中的分支名,帶星號的分支名標識當前的活動分支。

git branch       # 列出版本庫中的分支
git branch -r    # 列出遠程跟蹤分支
git branch -a    # 列出版本庫中的分支和遠程跟蹤分支

3. 查看分支-git show-branch

按時間順序\)列出對一個或多個分支有貢獻的提交。同樣可以帶-r,和-a兩種可選參數。 \

git show-branch       					# 該輸出被破折號分為兩個部分,.....
* [alternate] Initial 3 line file       # 方括號中的為分支名,后面跟著最近一次提交! [master] Another file				# * 標識當前活動分支上的提交
--                                      # + 表示提交在一個分支中【說的什么話?】+ [master] Another file                # - 表示一個合并提交
*+ [alternate] Initial 3 line filegit show-branch bug/pr-1 bug/pr-2       # 查看兩個分支的提交信息,支持通配符匹配更多的分支

4. 檢出分支

工作目錄一次只能反應一個分支。git checkout用于切換不同的分支。它改變了工作樹文件和目錄結構來匹配切換分支。git checkout branchname 實現改了通過分支名來檢出分支頭部。

4.1 有未提交的修改時進行檢出

工作目錄里未被追蹤的文件的目錄始終會被置之不理,git不會刪除或修改他們。如果一個文件在本分支上修改了,但是沒有被新分支追蹤,git 會發出錯誤信息,并拒絕檢出到目標分支。

$ git checkout dev
error: Your local changes to the following files would be overwritten by checkout:git_checkout_test
Please commit your changes or stash them before you switch branches.
Aborting$ cat git_checkout_test
git checkout test
$ git diff git_checkout_test
diff --git a/git_checkout_test b/git_checkout_test
index e69de29..9747ad6 100644
--- a/git_checkout_test
+++ b/git_checkout_test
@@ -0,0 +1 @@
+git checkout test$ git show dev:git_checkout_test            # 查看另一個分支中的文件
fatal: path 'git_checkout_test' exists on disk, but not in 'dev'

解決方法
1.提交新的更改到當前分支
2.提交新的更改到另一分支:
a). stash
b). 合并變更到不同的分支。

4.2 合并變更到不同的分支git checkout -m

-m 選項將 本地修改合并到目標分支的工作目錄中,并留下合并沖突指示[可能會沒有],我們需要進一步解決存在的沖突。

% git checkout dev
error: Your local changes to the following files would be overwritten by checkout:git_checkout_test
Please commit your changes or stash them before you switch branches.
Aborting
% git checkout -m dev
A	git_checkout_test
M	hello.txt
Switched to branch 'dev'
# dev 分支上修改文件,再想切換回master分支, 執行合并切換操作不行啊。
% git checkout -m master
fatal: cannot continue with staged changes in the following files:
git_checkout_test hello.txt

在master 分支中編輯文件,突然意識到需要將所有的修改提交到dev2分支上,那么就新建并切換到新的分支上。

%  git checkout -b dev2
Switched to a new branch 'dev2'
% git status
On branch dev2
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   git_checkout_testno changes added to commit (use "git add" and/or "git commit -a")

5. 分離HEAD 分支

git checkout branchname 實現改了通過分支名來檢出分支頭部。git checkout 可以檢出任何提交,如果檢出的提交不是該分支的頭部,Git 會創建一個分離的HEAD(detached HEAD),以下的情況,Git都會創建一個分離的HEAD:

  1. 檢出的提交不是分支的頭部
  2. 檢出一個追蹤分支
  3. 檢出一個標簽引用的提交
  4. 使用git bisect 操作
  5. 使用git submodule update命令

如果1: 想要保留在detached HEAD狀態下的開發內容,那就新建一個分支。

git checkout -b new_branch

如果2: 只是在detached HEAD狀態下驗證某些東西,不想保存相關操作,直接切換回某個一分支即可。

git checkout branchname

6.刪除分支

git branch -d branchname2

默認規則1:不能刪除當前分支。
默認規則2: 不會允許刪除一個 包含不存在當前分支提交的分支。就是說,要刪除的分支不是當前分支的祖先,那么刪除該分支將會造成某些開發不可留。但是可以通過 -D強制刪除,可以選擇在刪除之前進行一次合入操縱。

git branch -D branchname2

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/444666.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/444666.shtml
英文地址,請注明出處:http://en.pswp.cn/news/444666.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

caffe開始訓練自己的模型(轉載并驗證過)

學習caffe中踩了不少坑&#xff0c;這里我參考了此博主的文章&#xff0c;并體會到了如何訓練自己的模型&#xff1a;http://www.cnblogs.com/denny402/p/5083300.html 學習caffe的目的&#xff0c;不是簡單的做幾個練習&#xff0c;最終還是要用到自己的實際項目或科研中。因…

leetcode169. 多數元素

給定一個大小為 n 的數組&#xff0c;找到其中的多數元素。多數元素是指在數組中出現次數大于 ? n/2 ? 的元素。 你可以假設數組是非空的&#xff0c;并且給定的數組總是存在多數元素。 示例 1: 輸入: [3,2,3] 輸出: 3 示例 2: 輸入: [2,2,1,1,1,2,2] 輸出: 2 思路&…

Git(9)-diff

分支1. diff in Linux/Unix2. diff in Git3. git diff 兩點語法Linux/Unix 系統中存在diff 命令&#xff0c;可以用來顯示兩個文本/工作路徑的差異。Git diff 在此基礎上進行的擴展。 1. diff in Linux/Unix Linux 系統中的diff 命令&#xff1a;提供了一個文件如何轉化為另一…

圖像拼接(一):柱面投影+模板匹配+漸入漸出融合

這種拼接方法的假設前提是&#xff1a;待拼接的兩幅圖像之間的變換模型是平移模型&#xff0c;即兩幅圖像同名點位置之間只相差兩個未知量&#xff1a;ΔxΔx 和ΔyΔy&#xff0c;自由度為2&#xff0c;模型收得最緊。所以只有所有圖像都是用同一水平線或者同一已知傾斜角的攝…

圖像拼接(二):OpenCV同時打開兩個攝像頭捕獲視頻

使用OpenCV實現同時打開兩個USB攝像頭&#xff0c;并實時顯示視頻。如果未檢測有兩個攝像頭&#xff0c;程序會結束并發出“攝像頭未安裝好”的警告。這里推薦一個小巧的攝像頭視頻捕捉軟件&#xff1a;amcap&#xff0c;使用它可以方便的檢查每個攝像頭是否能正常工作。 捕獲…

Git(10)-merge

Merge1. 無沖突合并2. 有沖突合并-手動解決3. git diff in merge4. 廢棄合并5. 合并策略merge相關的操作的命令 git checkout master git merge alternate # 解決沖突 ..... git add file_1 git commit -m "Add slternate line 5, 6" git reset --hard HEAD # b…

elasticsearch的Linux下安裝報錯問題解決

1.啟動報錯如下: vim /etc/security/limits.conf 然后修改如下 * soft nofile 65536 * hard nofile 65536sudo vi /etc/pam.d/common-session 添加 session required pam_limits.so sudo vi /etc/pam.d/common-session-noninteractive 添加 session required pam_limits.so…

leetcode120. 三角形最小路徑和

給定一個三角形&#xff0c;找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。 例如&#xff0c;給定三角形&#xff1a; [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自頂向下的最小路徑和為 11&#xff08;即&#xff0c;2 3 5 1 11&#xff0…

Elasticsearchan相關插件和工具安裝

1、下載elasticsearch-head的源碼包 地址&#xff1a;https://github.com/mobz/elasticsearch-head/releases 2、安裝node運行環境 地址&#xff1a;https://nodejs.org/en/download/ 3、安裝完node之后編譯elasticsearch-head 執行npm install -g grunt-cli編譯源碼 執行…

Git(11)-cherry-pick、reset、rebase

更改提交&#xff0c;版本回退1.get reset 重置HEAD指針的指向2.git cherry-pick3.git revert4.git commit --amend修改提交5.git rebase 變基提交5.1 git rebase --onto5.2rebase 產生沖突&#xff0c;解決沖突/終止變基5.3git rebase -i6. rebase Vs mergegit 提供了【修改】…

Elasticsearch集群節點配置詳解

注意&#xff1a;如果是在局域網中運行elasticsearch集群也是很簡單的&#xff0c;只要cluster.name設置一致&#xff0c;并且機器在同一網段下&#xff0c;啟動的es會自動發現對方&#xff0c;組成集群。 三、配置淺涉 elasticsearch的config文件夾里面有兩個配置文件&#…

MongoDB修改器使用

歡迎關注我的新微信公眾號 ipgame,有什么問題可以提供交流的平臺,歡迎大家討論。 對于文檔的更新除替換外,針對某個或多個文檔只需要部分更新可使用原子的更新修改器,能夠高效的進行文檔更新。更新修改器是中特殊的鍵, 用來指定復雜的操作,比如增加、刪除或者調整鍵,還…

Git(12)-stash, reflog

git stash1. git stash2. reflog命令概覽git stash save "WIP:xxxxx" # save后可以跟筆記&#xff0c;WIP:work in process git stash list # 查看存儲狀態棧的條目 git stash pop # 當前工作目錄和索引還原至最近一次save操作的內容…

cmake生成Win64位工程

使用cmake編譯64的dll 一開始使用cmake --build .來生成了dll&#xff0c;在導入到java項目中使用的時候&#xff0c;才發現是32位的。導致程序不能正常運行&#xff0c;報錯如下&#xff1a; Exception in thread "main" java.lang.UnsatisfiedLinkError Cant load…

leetcode 106. 從中序與后序遍歷序列構造二叉樹

根據一棵樹的中序遍歷與后序遍歷構造二叉樹。 注意: 你可以假設樹中沒有重復的元素。 例如&#xff0c;給出 中序遍歷 inorder [9,3,15,20,7] 后序遍歷 postorder [9,15,7,20,3] 返回如下的二叉樹&#xff1a; 3 / \ 9 20 / \ 15 7 思路&#xff1a;和前…

Mat矩陣(圖像容器)的創建及CV_8UC1,CV_8UC2等參數詳解

一&#xff09;Mat矩陣(圖像容器)創建時CV_8UC1,CV_8UC2等參數詳解 1--Mat不但是一個非常有用的圖像容器類,同時也是一個通用的矩陣類 2--創建一個Mat對象的方法很多 3--使用Mat圖像容器類創建Mat類的對象 //! default constructor Mat(); //! constructs …

TensorFlow(1)-模型相關基礎概念

TensorFlow-11.Graph對象2.Session對象3.Variabels變量4. placeholders與feed_dict5. tf.train.Saver() 模型參數保存、加載Tensorflow 中文官網教程–2.0版本的官方教程 TensorFlow教程&#xff1a;TensorFlow快速入門教程&#xff08;非常詳細&#xff09; pytorch Vs tensor…

memcache的使用入門C++代碼

下載源碼編譯&#xff0c;memcached就是生成的主程序&#xff0c;啟動可指定端口&#xff0c;memcached作為server端&#xff0c;依然是我們熟悉的cs模式&#xff0c;使用兩個client一個setkey&#xff0c;一個getkey一百萬個做測試。 ./memcached -d -m 300 -p 11211 -u root…

leetcode78 子集

給定一組不含重復元素的整數數組 nums&#xff0c;返回該數組所有可能的子集&#xff08;冪集&#xff09;。 說明&#xff1a;解集不能包含重復的子集。 示例: 輸入: nums [1,2,3] 輸出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 思路&…

Fiddler抓包工具使用

先下載Fiddler 歡迎關注我的新微信公眾號 ipgame&#xff0c;有什么問題可以提供交流的平臺&#xff0c;歡迎大家討論。 電腦最好是筆記本&#xff0c;這樣能和手機保持統一局域網內&#xff1b;其他不多說&#xff0c;直接說步驟了。 一.對PC&#xff08;筆記本&#xff0…