git 圖形化工具 GitKraken 的使用 —— 分支的創建與合并

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

分支管理是Git工作流的重點

在之前的文章中通過GitKraken可以很清楚的看到,每一次commit,git把他們串成了一條線,這條線就是一個分支,目前只有一個分支master,git里面叫他主分支。

創建分支并切換的原理

之前提到的?HEAD?嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當前分支。

一開始的時候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當前分支,以及當前分支的提交點,每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長。

當我們創建新的分支,例如dev時,Git新建了一個指針叫dev,指向master相同的提交,再把HEAD指向dev,就表示當前分支在dev上。

不過,當切換到dev分支后,對工作區的修改和提交就是針對dev分支了,比如新提交一次后,dev指針往前移動一步,而master指針保持不變

假如我們在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最簡單的方法,就是直接把master指向dev的當前提交,就完成了合并。

合并完分支后,甚至可以刪除dev分支。刪除dev分支就是把dev指針給刪掉,刪掉后,我們就剩下了一條master分支,HEAD又指向了master

摘自?廖雪峰的官方網站,圖文并茂,非常清楚

實戰

創建與切換分支:

1、創建?develop?分支并切換:

git checkout -b develop
  • 這里?checkout -b?是復合命令,一個是創建,一個是切換
  • 創建分支的命令是?git branch develop
  • 切換分支的命令是?git checkout develop

2、創建完成后執行?git branch?可以查看所有本地分支:

$ git branch
* develop # 前面帶星號的表示當前所在分支master

接下來所有的操作都會在develop分支上進行,除非你又執行了?git checkout <分支名>?切換到了其他的分支。

3、在GitKraken上操作:

  • 方法一:點擊工具欄上的 Branch 按鈕來創建,完成之后會自動切換到新分支

這里寫圖片描述

  • 方法二:在當前分支上右鍵,點擊?Create branch here?選項,然后輸入分支名稱

    在創建分支并切換后,我們來創建一個文件并提交到develop分支,然后再切換回master分支,你會發現master分支上沒有個之前在develop上的那個提交,而且你從項目目錄中也看不到剛剛創建的文件:

這里寫圖片描述
這里寫圖片描述

合并分支

這里加入說都在master分支上開發,你在master分支上拉了一個feature1分支開發一個新的功能,開發完成需要合并到master分支上

ff模式

# 切換到master分支,在GitKraken直接雙擊就可以切換分支
$ git checkout master# 開始合并
$ git merge feature1
Updating c9470f5..78ba880
Fast-forwardREADME.md | 4 +++-1 file changed, 3 insertions(+), 1 deletion(-)

注意到上面的?Fast-forward?信息,Git告訴我們,這次合并是“快進模式”,也就是直接把master指向feature1的當前提交,由于當前 master 分支所指向的提交是你當前提交(有關 develop的提交)的直接上游,所以 Git 只是簡單的將指針向前移動。

換句話說,當你試圖合并兩個分支時,如果順著一個分支走下去能夠到達另一個分支,那么 Git 在合并兩者的時候,只會簡單的將指針向前推進(指針右移),因為這種情況下的合并操作沒有需要解決的分歧——這就叫做 “快進(fast-forward)”。

通過GitKraken查看合并log,可以看到master和develop已經指向了同一個提交,也就是二者已經同步了,并且是在一條軸線上,看不出合并的痕跡:

這里寫圖片描述

–no-ff 模式

當然,除了快進模式還有其他的模式,比如說?--no-ff?模式,也就是非快進模式,這種模式會在merge的時候生成一個新的commit,這樣從分支歷史就可以看到分支合并記錄即使刪除了以后:

$ git merge --no-ff -m "使用 --no-ff 模式合并分支" feature1
Merge made by the 'recursive' strategy.README.md | 4 +++-1 file changed, 3 insertions(+), 1 deletion(-)

這里寫圖片描述

可以看到分支合并的記錄

如果你的上游分支和你的分支分叉了,合并時無法使用 ff 模式,而是直接使用 –no-ff 模式

什么意思呢?就是說加入你在你的分支中進行開發,而過了一會,另一個小伙伴將自己的分支合并到了master推動到了遠端,這時候你需要拉取最新的master代碼,這時候,master 分支所在提交并不是 你的分支feature1所在提交的直接祖先,通過log來看如下圖:

這里寫圖片描述

可以看到,你的feature1分支時基于c3拉取的,之后另一個小伙伴更新了master分支,這樣就出現了分叉,你的上游分支和你的分支都各自向前走了一步,這樣的話,如果用命令?git merge?不帶參數 將feature1合并到master分支,默認用的就是?--no-ff?模式:

$ git merge feature1
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

這樣的話基本上會出現沖突,需要手動解決,沖突的解決將在下一節介紹,這里直接看解決完成的log:

這里寫圖片描述

刪除分支

合并完成之后,如果你不想要develop分支了,可以刪除它:

$ git branch -d develop
Deleted branch develop (was 2923b6d).

或者在GitKraken中右鍵develop分支(前提是切換到master分支操作),然后選擇?Delete develop?選項。

$ git branch
* master

可以看到,本地只剩下master分支了。

總結

  • 查看本地分支:git branch

  • 創建分支:git branch <name>

  • 切換分支:git checkout <name>

  • 創建并切換分支:git checkout -b <name>

  • 合并某分支到當前分支:git merge <name>

  • 刪除分支:git branch -d <name>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 轉自:https://blog.csdn.net/mr_wuch/article/details/73436524

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

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

相關文章

ubuntu11.04下CUDA4.0的安裝與配置

1&#xff1a;下載CUDA 4.0 安裝官網最新的顯卡驅動&#xff1a; 安裝方法可以參考&#xff1a; 《Ubuntu11.04下安裝Nvidia顯卡驅動的方法》 然后從NVIDIA網站&#xff08;http://developer.nvidia.com/cuda-downloads&#xff09;下載 CUDA Toolkit for Ubuntu Linux 10.10&a…

GitKraken - 簡單教程

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 簡單介紹&#xff1a;外觀 GitKraken首頁預覽圖 常用快捷鍵 模糊搜索&#xff1a;(cmd p) 在進行模糊搜索的時候會在當前頁面彈出一個…

LeetCode刷題第二天——3Longest Substring Without repeating character 4 Median of Two Sorted Arrays...

混淆點&#xff1a; 子串 連續 子序列 可以不連續 知識點&#xff1a; HashMap&#xff1a; 出現問題&#xff1a; 1.使用unordered_map頭文件時報錯 #error This file requires compiler and library support for the ISO C 2011 standard. This support is currently experi…

【BZOJ 3339 / BZOJ 3585 / luogu 4137】Rmq Problem / mex

【原題題面】傳送門 【題解大意】 都說了是莫隊練習題。 考慮已知[l,r]區間的mex值時&#xff0c;如何求[l1,r]的mex值。 比較a[l1]與已知ans的大小&#xff0c;如果a[l1]>ans或者a[l1]<ans&#xff0c;均對答案沒有影響。 如果a[l1]ans&#xff0c;考慮找到一個比當前an…

postman 無法正常返回結果 Could not get any response

在瀏覽器輸入地址可以返回結果&#xff0c;但是由于返回的json沒有格式&#xff0c;看起來比較麻煩&#xff0c;用postman卻報錯Could not get any response。 可以注意到下面寫了可能的情況&#xff1a;比如服務器無響應&#xff08;由于瀏覽器可以訪問&#xff0c;所以排除…

在Windows 下使用OpenCL

目前&#xff0c;NVIDIA和AMD的Windows driver均有支援OpenCL&#xff08;NVIDIA的正式版driver是從195.62版開始&#xff0c;而AMD則是從9.11版開始&#xff09;。NVIDIA的正式版driver中包含OpenCL.dll&#xff0c;因此可以直接使用。AMD到目前為止&#xff0c;則仍需要安裝其…

Java中方法重載

方法重載&#xff1a;指在同一個類中&#xff0c;允許存在一個以上的同名方法&#xff0c;只要它們的參數列表不同即可&#xff0c;與修飾符和返回值類型無關。參數列表&#xff1a;個數不同&#xff0c;數據類型不同&#xff0c;順序不同。重載方法調用&#xff1a;JVM通過方法…

swift -自定義返回圖片,替換系統圖片backItem

隱藏系統返回按鍵 方法1&#xff1a;self.navigationItem.leftBarButtonItem nil //隱藏自定義的itemself.navigationItem.hidesBackButton true //隱藏系統的item方法2&#xff1a;let item UIBarButtonItem(image: nil, style: UIBarButtonItem.Style.plain, target: …

云服務器主機內網 ip 和外網 ip 的區別

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 服務器公網ip   可以用于域名解析ip&#xff0c;服務器遠程登錄ip&#xff0c;是最主要的服務器ip地址。    內網ip   不能用于域…

[Swift]快速反向平方根 | Fast inverse square root

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★?微信公眾號&#xff1a;山青詠芝&#xff08;shanqingyongzhi&#xff09;?博客園地址&#xff1a;山青詠芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;?GitHub地址&a…

適用于ATI卡的GPU計算MD5的小程序源碼,基于AMD APP SDK開發

以下代碼在win7 home basic , ati hd 5450平臺測試通過&#xff0c;處理速度為每秒100萬次。 程序很簡單&#xff0c;只有一個main.cpp程序。Device端只有一個md5.cl文件。 下面我把代碼貼出來&#xff0c;因為不能上傳附件&#xff0c;我把完整工程包放到了242337476的群共享里…

【CentOS 7筆記11】,目錄權限,所有者與所有組,隱藏權限#171022

2019獨角獸企業重金招聘Python工程師標準>>> shallow丿ove 一. 文件或目錄權限change mode r4&#xff0c;w2&#xff0c;x1 selinux開啟則權限后面會有個. 更改SElinux配置文件&#xff0c;將永久關閉SElinux [rootlocalhost ~]# vi /etc/selinux/config #將默認…

python字符編碼與轉碼

詳細文章: http://www.cnblogs.com/yuanchenqi/articles/5956943.html http://www.diveintopython3.net/strings.html 需知: 1.在python2默認編碼是ASCII, python3里默認是unicode 2.unicode 分為 utf-32(占4個字節),utf-16(占兩個字節)&#xff0c;utf-8(占1-4個字節)&#xf…

IntelliJ IDEA 詳細圖解最常用的配置

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 剛剛使用IntelliJ IDEA 編輯器的時候&#xff0c;會有很多設置&#xff0c;會方便以后的開發&#xff0c;磨刀不誤砍柴工。 比如&#x…

OpenCL快速入門教程

OpenCL快速入門教程 原文地址&#xff1a;http://opencl.codeplex.com/wikipage?titleOpenCL%20Tutorials%20-%201 翻譯日期&#xff1a;2012年6月4日星期一 這是第一篇真正的OpenCL教程。這篇文章不會從GPU結構的技術概念和性能指標入手。我們將會從OpenCL的基礎API開始&…

Git使用教程-idea系列中git使用教程

一、新建項目 新建項目后記得復制git倉庫的地址。 二、上傳項目到git倉庫 在你的idea里新建git倉庫&#xff0c;這是新建本地倉庫&#xff0c;等會會同步到線上git倉庫 新建后如果代碼不是文件名不是綠色的表示沒有加入到git索引中 將需要上傳的文件按照下圖方式add 添加后&…

分布式開放 消息系統 (RocketMQ) 的原理與實踐

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 分布式消息系統作為實現分布式系統可擴展、可伸縮性的關鍵組件&#xff0c;需要具有高吞吐量、高可用等特點。而談到消息系統的設計&…

日本企業RPA導入風險分析和解決對策

日本企業RPA導入風險分析和解決對策 文/馬磊 【UiBot東京特約觀察 第三期】 RPA作為一種能將定型業務完全自動化的技術&#xff0c;在老齡化、少子化和勞動力不足的日本備受矚目。上一期我們談到了關于日本工作方式改革法案的實施以及RPA導入后帶來的積極影響。但是任何事物都會…

使用 OpenCL.Net 進行 C# GPU 并行編程

在 初探 C# GPU 通用計算技術 中&#xff0c;我使用 Accelerator 編寫了一個簡單的 GPU 計算程序。也簡單看了一些 Brahma 的代碼&#xff0c;從它的 SVN 最新代碼看&#xff0c;Brahma 要轉移到使用 OpenCL.Net 作為底層了&#xff0c;于是也去網上搜索了一下&#xff0c;發現…

模擬真實環境之內網漫游

0x00 前言 目標ip&#xff1a;192.168.31.55&#xff08;模擬外網&#xff09; 目的&#xff1a;通過一個站點滲透至內網&#xff0c;發現并控制內網全部主機 0x01 信息收集 用nmap進行端口探測 瀏覽站點時查看元素發現該站點是DotNetCMS v2.0 該版本cms存在SQL注入漏洞&#x…