GitKraken保姆級圖文使用指南

前言

寫這篇文章的原因是組內的產品和美術同學,開始參與到git工作流中,但是網上又沒有找到一個比較詳細的使用教程,所以干脆就自己寫了一個[doge]。文章的內容比較基礎,介紹了Git內的一些基礎概念和基本操作,適合零基礎的人作為入門指南。

Git常見的一些概念

1.倉庫(repository/repo):代碼和資源的倉庫,Git分為本地倉庫和遠程倉庫,Git在啟動和主動拉取的時候會將遠程倉庫的內容同步到本地。遠程倉庫是托管在服務器上,僅會有一份,并且時刻保持最新。本地倉庫則是可以有多份,每個人的本地倉庫是互不影響的,而且可以斷網進行修改。

2.克隆(Clone):當遠程倉庫已經建好,并且沒有本地倉庫的時候。需要將遠程倉庫Clone到本地,剛完成克隆的時候,本地倉庫與遠程是完全相同的。

3.分支(Branch):一個倉庫里在初始化提交的時候會生成一個初始的主分支。之后可以在這個主分支上創建其他新的分支。 當你需要做一些操作并且不想影響到其他人時,可以單獨創建一個分支,在分支上開發完功能,最后再合并(Merge)到主干上。

分支同樣存在本地和遠程的區別,遠程分支記錄的是遠程倉庫該分支的內容。本地分支則是保存了你本地倉庫修改的內容。如果存在遠程分支,但是沒有對應的本地分支的情況,可以檢出(Checkout)獲得一個本地分支。

在GitKraken左側可以看到所有的本地(Local)和遠程(Remote)的分支。同時在中間的主面板也可以看到遠程和本地分支的情況,遠程的分支顯示為一個圓形的圖標,本地則為一個小電腦的圖標

GitKraken界面介紹

主界面

GitKraken的主界面如下,頂部顯示為當前的工程。中間為圖形化的Git提交記錄,可以看到當前項目的提交情況,左側為本地/遠程分支和貯藏等區域。右側則為文件修改區

Git文件修改區

文件修改區,當有文件產生變化的時候,會出現如下的提示

點擊View change會切換到如下界面,處理當前的修改

右側的文件修改區可以看到幾種不同的文件狀態

黃色為該文件進行過修改(本地與遠程不同)

紅色為該文件已經被刪除(遠程存在,本地不存在)

綠色為該文件為新增文件? (本地存在,遠程不存在)

這里需要注意一點如果本地沒有任何修改的時候,修改區是不會顯示的

左鍵點擊右側修改區的文件時,進入修改預覽界面。可以看到具體文件修改情況。側邊欄有文件修改情況的縮略圖,可以拖動后找到對應的修改位置。左側則是實際的修改情況。查看完畢后可以選擇暫存該文件或者關閉預覽

GitKranken基礎操作

丟棄修改(Discard

如果不想要本地的修改了,可以選擇將本地修改丟棄,具體操作如下

(1)丟棄單個修改

在修改區內,如果想要某個修改,可以右鍵點擊該文件,選擇Discard changeds

之后頂部會出現一個確認彈窗,點擊Discard Unstaged changeds按鈕,即可還原到修改前的狀態

修改和刪除的文件都可以進行Discard操作。如果是新增的文件,想要還原,需要右鍵點擊Delete file。

(2)丟棄文件夾內修改

想要丟棄某個文件內的所有修改,需要先將修改區切換成Tree模式,這樣修改區的文件就會以樹狀結構出現

然后右鍵選擇需要丟棄的文件夾,點擊Discard all changes in folder

然后點擊頂部彈窗的Reset Files

(3)丟棄所有修改

如果想要忽略所有修改,則可以點擊左上角的垃圾桶

之后頂部會出現一個彈窗,點擊Reset All即可清空整個修改區

貯藏(Stash

點擊頂部的Stash會將當前修改區內所有的修改貯藏起來。

對應的修改會放在下圖中的一個小抽屜里。并且會自動按照分支對該Stash進行命名。在develop上貯藏的message就會自動命名為WIP on develop

如果想要修改Stash的名字,可以點擊這個小抽屜,點擊右側Stash Message框,修改這個Message

后續如果想要恢復這個Stash內的修改,可以右鍵點擊小抽屜所在的那一行記錄,然后選擇Pop Stash即可

提交修改(Commit

Git可以完成離線的開發工作,所有的提交內容可以先提交(Commit)到本地的分支中,此時并不影響遠程分支。

具體操作是鼠標移動到修改的文件處,點擊右側的StageFile,即可暫存(Stage)該文件

可以看到文件移動到了下方的Staged Files區域

如果想要暫存所有文件可以點擊右上角的Stage all changes

按文件夾暫存則是右鍵文件夾,然后選擇Stage folder

所有需要暫存的文件都放入暫存區后,在Commit Message填寫修改日志,點擊Commit changes就可以將修改提交到本地倉庫

提交修改之后,可以看到主界面會有一條對應日志的提交記錄。

拉取(Pull)

當有其他人提交一些更改到遠程分支時,需要通過Pull操作將其他人的修改同步到本地。Pull的操作十分簡單,只需要點擊頂部的Pull按鈕即可

在進行Pull之前,有兩類本地分支的狀態:

第一類最簡單,本地和遠程都處在同一條線上。代表本地未commit任何文件,但是其他人Push了一些修改到遠程分支

此時進行Pull操作之后,遠程和本地分支的標識都在同一個地方,說明Pull成功,本地和遠程的分支完全一致。

第二類情況是,本地進行修改并且Commit之后,沒有推送到遠端。

此時本地和遠程兩條分支在兩條線上并且本地和遠程分支沒有匯合到一起。當遠程分支的修改時間在本地Commit之后,遠程分支顯示在本地分支上方

反之遠程分支顯示在本地分支下方

直接點擊Pull即可進行拉取。Pull完成后,可以看到雖然遠程代碼和本地依然是在兩條線上,但是遠程分支匯聚到了本地分支上,代表Pull成功。

推送(Push)

當需要將本地分支的修改推送到遠程分支時,就需要進行推送(Push)操作,需要注意的時,在Push之前需要先進行Pull操作,將遠程分支的內容同步到本地才可以進行Push。

Push操作也十分簡單,點擊頂部的Push即可

Push成功之后,可以看到小圓點和小電腦此時處在同一行。說明Push 成功,本地和遠程的分支完全一致。

創建分支(Create Branch

右鍵希望創建分支的位置,選擇Create branch here

之后在左側會出現一個enter branch name的彈窗,輸入分支名后,點擊Enter即可創建分支

這里輸入的分支名為testBranch,可以看到創建后會有一個小電腦的圖標,代表本地分支

檢出分支(Checkout

當想要從一個分支切換到另外一個分支的時候,可以通過Checkout進行切換,具體操作是右鍵點擊需要切換的分支,選擇"Checkout 分支名稱"。(該操作也可以化簡為直接雙擊分支)

當切換到該分支時,可以看到分支左側有一個打鉤的圖標.

Checkout可以選擇切換到本地分支,或者遠程分支。如果不存在本地分支,可以直接雙擊遠程分支的所在的圓點。

會自動生成一個本地分支。

如果已經存在本地分支,并且本地分支和遠程和分支不在相同的位置,選擇Checkout遠程分支,會出現以下提示。如果選擇Reset Local Here,相當于將本地分支全部重置,并且同步到遠程分支所在的位置。(特別注意,該操作會將本地未PushCommit全部丟棄,不要輕易執行該操作)如果不希望重置本地分支,可以選擇Cancel取消。大多數情況下,如果存在本地分支,都是先Checkout本地分支,然后Pull更新到最新。

合并分支(Merge

不同的分支之間可以進行Merge操作,比如你在自己分支上進行了一些修改之后,希望將修改同步到主干上時,可以進行Merge操作。同時也可以把主干的修改同步到自己的分支上。

具體的操作是,先切換到目標分支,然后右鍵點擊需要合并的源分支,選擇"Merge 源分支 into 目標分支"。這樣就可以把來源分支的內容合并的目標分支上。

Merge成功后會自動產生一條合并的日志。并且源分支所代表的那根線也匯聚到目標分支上了

采用提交(Cherry Pick Commit)

有時候你在某個分支上做了多個修改,比如“添加圖片”(A),"修改圖片參數"(B),“修改代碼”(C)。這時候,你想要在另外一個目標分支上應用A修改,但是又不想其他修改也合并到目標分支,這時候就可以通過Cherry pick commit實現該操作。

具體步驟是,右鍵點擊需要采用的提交,然后選擇Cherry pick commit

操作完成之后可以看到目標分支上出現了一條跟采用提交相同的日志

恢復提交(Revert Commit)

如果一個已經提交的修改,希望將它恢復到提交之前的狀態,就可以使用Revert Commit操作。只需要右鍵點擊需要恢復的提交,選擇Revert commit即可

操作完成之后會自動生成一個Revert日志

處理沖突(Resolve Conflict)

處理沖突是git工作流中最為麻煩的。一般原因是兩個分支同時對一個文件進行了修改。下面舉一個簡單的例子,來模擬這樣一個情況。分支BranchA和分支BranchB都有個文件TestScript.cs,里面的內容就是聲明了一個變量a,一開始a的值是0。

XML
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestScript : MonoBehaviour
{
??? int a = 0;
}

然后在BranchA把a的值改成100,在BranchB的值改成50。然后嘗試將BranchB Merge到BranchA上。

可以看到左下角會彈出一個Merge Failed的提示

并且頂部同樣會有一個黃色的提示,文件修改區的Conflicted Files會顯示哪個文件出現沖突。

點擊沖突區的文件,會進入處理沖突的界面。可以看到沖突界面有三塊區域

左上角為BranchA的內容

右上角為BranchB的內容

底部為輸出區域的內容

這時候如果想要采用BranchA的提交可以點擊出現沖突那一行左側的勾選框

可以看到下方的輸出區域的內容也跟著變成跟BranchA相同的修改

這時候沖突便解決完畢了。可以點擊右上角的Save按鈕,退出處理沖突界面。

此時可以看到TestScript.cs從沖突區,移動到了下方的暫存區。并且自動填入了Commit Message。如果確定采用這次的沖突處理,可以點擊左側的Commit and Merge就完成了整個合并沖突的流程

主界面上也會出現這條Merge成功的Commit信息

實際在操作的過程中會發生單個文件會有多個沖突出現的情況。可以看到輸出區域Output,會顯示conflict n of m。n代表當前查看的是第n個沖突,m代表一共有幾個沖突。可以點擊右側的箭頭在不同的沖突之間切換。

有時候會出現單個文件的沖突特別多的情況。或者由于修改prefab或者場景導致不知道如何去一條一條地處理沖突。這時候可以直接點擊頂部兩個勾選框,選擇直接采用哪個分支的文件。比如點擊左側A的勾選框,代表直接采用BranchA上的文件,完全忽略BranchB上的修改。后續可以等待沖突處理完之后再手動將BranchB上的修改添加回來。

在處理沖突直接采用哪個文件時,建議大家按照以下的原則進行選擇

(1)、優先采用其他人修改的文件

(2)、優先采用遠程分支的文件

(3)、優先采用修改較多的文件

在處理沖突的時候還有一種簡單粗暴的處理方式,就是在Conflicted Files選擇Mark all resolved

這樣GitKranken會把所有沖突標記為已經解決。但是實際上文件的內容并不是正確的,比如前面那個修改a值的例子,選擇Mark all resolved的輸出內容是下圖這個樣子。同時把兩個分支的內容都填進去了,并且還有

Git自動輸出的提示“<<< Head? ===? >>> branchA”,最后還是需要手動地去解決。

GitKranken操作流程

1.清空修改區

在進行Pull或者切換分支的操作之前,需要先清空修改區。

清空有幾種方式:

(1)丟棄修改(Discard)

(2)貯藏(Stash)

(3)提交修改(Commit)

具體操作可以查看上一個章節中對應基本操作

2.確定分支

清空完修改區后,需要確定是在哪個分支上進行操作。之后需要切換到對應分支。可以先查看本地是否有該分支。(左側Local欄),如果存在。直接雙擊該分支即可切換到該分支上。如果該分支本地倉庫不存在,可以直接雙擊遠程分支,這樣就可以在本地Checkout了一個對應的分支,并完成切換。

3.同步遠程分支

切換到對應分支后需要進行Pull的操作,將遠程倉庫的修改同步到本地。點擊Pull按鈕,可以完成Pull操作

4.本地進行修改

在進行本地修改的時候,可以自由地創建本地分支,貯藏,或者提交到本地。

點擊完貯藏按鈕后可以看到頂部出現一個小抽屜的圖標,本地所有的修改都臨時保存在這個貯藏中

之后再次拉取最新的分支,驗證最終效果。

如果發現仍有需要修改的情況,可以直接在最新的分支上修改。也可以根據情況恢復貯藏的內容,右鍵剛剛貯藏的小抽屜,選擇Pop Stash,恢復修改。

常見問題處理

1.文件被其他程序使用

在進行文件操作的時候,(比如Stash,Discard等)可能會出現如下彈窗,導致無法進行操作。原因是,有文件被其他程序使用了,比如播放器,圖片瀏覽器等。這時候,需要把占用該文件的程序關閉,即可順利進行操作。(如果實在找不到是哪個程序,可以重啟電腦)

2.切換分支失敗Checkout Failed

在進行分支切換的時候,有時會因為修改區未清空出現如下報錯。清空修改區后再切換分支即可。

創作不易,如果覺得這篇文章對你有所幫助,可以動動小手,點個贊哈,?( ′・?・` )比心

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

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

相關文章

合并多個文本文件

使用 wxPython 模塊合并多個文本文件的博客。以下是一篇示例博客&#xff1a; C:\pythoncode\blog\txtmerge.py 在 Python 編程中&#xff0c;我們經常需要處理文本文件。有時候&#xff0c;我們可能需要將多個文本文件合并成一個文件&#xff0c;以便進行進一步的處理或分析。…

QT報表Limereport v1.5.35編譯及使用

1、編譯說明 下載后QT CREATER中打開limereport.pro然后直接編譯就可以了。編譯后結果如下圖&#xff1a; 一次編譯可以得到庫文件和DEMO執行程序。 2、使用說明 拷貝如下圖編譯后的lib目錄到自己的工程目錄中。 release版本的重新命名為librelease. PRO文件中配置 QT …

openpose姿態估計【學習筆記】

文章目錄 1、人體需要檢測的關鍵點2、Top-down方法3、Openpose3.1 姿態估計的步驟3.2 PAF&#xff08;Part Affinity Fields&#xff09;部分親和場3.3 制作PAF標簽3.4 PAF權值計算3.5 匹配方法 4、CPM&#xff08;Convolutional Pose Machines&#xff09;模型5、Openpose5.1 …

怎么修改圖片的分辨率?

怎么修改圖片的分辨率&#xff1f;很多人還不知道分辨率是什么意思&#xff0c;以為代表了圖片的清晰度&#xff0c;然而并不是這樣的&#xff0c;其實圖片的分辨率就是圖片尺寸大小的意思。修改圖片的分辨率即改變圖片的尺寸&#xff0c;通常以像素為單位表示。分辨率決定了圖…

【linux基礎(四)】對Linux權限的理解

&#x1f493;博主CSDN主頁:杭電碼農-NEO&#x1f493; ? ?專欄分類:Linux從入門到開通? ? &#x1f69a;代碼倉庫:NEO的學習日記&#x1f69a; ? &#x1f339;關注我&#x1faf5;帶你學更多操作系統知識 ? &#x1f51d;&#x1f51d; Linux權限 1. 前言2. shell命…

八、Linux下,grep/wc/管道符/echo/重定向符/tail如何使用?

1、grep命令 &#xff08;1&#xff09;主要用于文件 &#xff08;2&#xff09;主要作用是“通過關鍵字&#xff0c;過濾文件行” &#xff08;3&#xff09;示例&#xff1a; 2、wc命令 &#xff08;1&#xff09;統計文件的行數、單詞數等 &#xff08;2&#xff09;示例…

react之路由的安裝與使用

一、路由安裝 路由官網2021.11月初&#xff0c;react-router 更新到 v6 版本。使用最廣泛的 v5 版本的使用 npm i react-router-dom5.3.0二、路由使用 2.1 路由的簡單使用 第一步 在根目錄下 創建 views 文件夾 ,用于放置路由頁面 films.js示例代碼 export default functio…

一文預覽 | 8 月 16 日 NVIDIA 在 WAVE SUMMIT深度學習開發者大會 2023精彩亮點搶先看!

由深度學習技術及應用國家工程研究中心主辦&#xff0c;百度飛槳和文心大模型承辦的 WAVE SUMMIT深度學習開發者大會2023&#xff0c;將于 8 月 16 日在北京與大家見面。NVIDIA 作為技術合作伙伴&#xff0c;將攜手百度飛槳參與這場技術盛會。 在這次大會中&#xff0c;NVIDIA…

Java 項目日志實例基礎:Log4j

點擊下方關注我&#xff0c;然后右上角點擊...“設為星標”&#xff0c;就能第一時間收到更新推送啦~~~ 介紹幾個日志使用方面的基礎知識。 1 Log4j 1、Log4j 介紹 Log4j&#xff08;log for java&#xff09;是 Apache 的一個開源項目&#xff0c;通過使用 Log4j&#xff0c;我…

RabbitMq交換機類型介紹

RabbitMq交換機類型介紹 在RabbitMq中&#xff0c;生產者的消息都是通過交換器來接收&#xff0c;然后再從交換器分發到不同的隊列&#xff0c;再由消費者從隊列獲取消息。這種模式也被成為“發布/訂閱”。 分發的過程中交換器類型會影響分發的邏輯。 直連交換機&#xff1a…

【計算機視覺|生成對抗】逐步增長的生成對抗網絡(GAN)以提升質量、穩定性和變化

本系列博文為深度學習/計算機視覺論文筆記&#xff0c;轉載請注明出處 標題&#xff1a;Progressive Growing of GANs for Improved Quality, Stability, and Variation 鏈接&#xff1a;[1710.10196] Progressive Growing of GANs for Improved Quality, Stability, and Vari…

神經網絡基礎-神經網絡補充概念-51-局部最優問題

概念 局部最優問題是在優化問題中常見的一個挑戰&#xff0c;特別是在高維、非凸、非線性問題中。局部最優問題指的是算法在優化過程中陷入了一個局部最小值點&#xff0c;而不是全局最小值點。這會導致優化算法在某個局部區域停止&#xff0c;而無法找到更好的解。 解決方案…

安防監控視頻云存儲平臺EasyNVR出現內核報錯的情況該如何解決?

安防視頻監控匯聚EasyNVR視頻集中存儲平臺&#xff0c;是基于RTSP/Onvif協議的安防視頻平臺&#xff0c;可支持將接入的視頻流進行全平臺、全終端分發&#xff0c;分發的視頻流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等格式。 近期有用戶聯系到我們&#xff0c;EasyNVR…

kafka集成篇

kafka的Java客戶端 生產者 1.引入依賴 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.6.3</version></dependency>2.生產者發送消息的基本實現 /*** 消息的發送?*/ …

SAP 預留(Reservation)詳解

相信使用SAP的話&#xff0c;對SAP的SAP預留(Reservation)已經有所了解&#xff0c;而且經常使用作業的&#xff0c;并且在很多方案中都使用得到&#xff0c;下面我就簡單總結下我所了解的SAP預留(Reservation)&#xff0c;希望對一些需要幫助的人&#xff0c;有所指點。 首先…

分類預測 | MATLAB實現DRN深度殘差網絡多輸入分類預測

分類預測 | MATLAB實現DRN深度殘差網絡多輸入分類預測 目錄 分類預測 | MATLAB實現DRN深度殘差網絡多輸入分類預測預測效果基本介紹程序設計參考資料 預測效果 基本介紹 1.分類預測 | MATLAB實現DRN深度殘差網絡多輸入分類預測 2.代碼說明&#xff1a;MATLAB實現DRN深度殘差網絡…

LVS集群和nginx負載均衡

目錄 1、基于 CentOS 7 構建 LVS-DR 群集。 2、配置nginx負載均衡。 1、基于 CentOS 7 構建 LVS-DR 群集。 1.部署LVS負載調度器 1>安裝配置工具 [rootnode6 ~]# yum install -y ipvsadm 2>配置LVS虛擬IP&#xff08;VIP地址&#xff09; [rootnode6 ~]# ifconfig ens…

32.Netty源碼之服務端如何處理客戶端新建連接

highlight: arduino-light 服務端如何處理客戶端新建連接 Netty 服務端完全啟動后&#xff0c;就可以對外工作了。接下來 Netty 服務端是如何處理客戶端新建連接的呢&#xff1f; 主要分為四步&#xff1a; md Boss NioEventLoop 線程輪詢客戶端新連接 OP_ACCEPT 事件&#xff…

VB+SQL自動點歌系統設計與實現

摘 要 隨著社會的發展,人類的進步,21世紀人們的生活的水平有所提高,為了滿足人們對生活的需要,豐富業余生活,就需要有一些娛樂的設施來彌補這些空缺,所以開發了自動點歌系統。 論文詳細論述了系統總體設計思想、數據庫設計以及功能模塊設計等,給出了自動點歌系統一般流程…

算法與數據結構(七)--堆

一.堆 1.堆的定義 堆是計算機科學中一類特殊的數據結構的通常&#xff0c;堆通常可以被看做是一顆完全二叉樹的數組對象。 堆的特性 1.它是完全二叉樹&#xff0c;除了樹的最后一層結點不需要是滿的&#xff0c;其他的每一層從左到右都是滿的&#xff0c;如果最后一層結點不…