工作總結:git篇

文章目錄

  • 前言
  • 基礎
  • Gerrit
    • 1.克隆
    • 2.新建本地分支和checkout
    • 3.添加到暫存區
      • 新增文件到暫存區
      • 修改已經添加到暫存區的文件
      • 取消添加到暫存區的文件
    • 4.提交到本地倉庫
      • 在不重復提交的情況下,修改本次提交
    • 5.提交到遠程倉庫
    • 6.評審
    • 其他輔助命令


前言

目前也算是工作一段時間了。之前寫的git基本操作一直放在草稿箱里面沒發布。這次就打算跟著這一起給寫出來做一個總結。


基礎

git操作

Gerrit

我們公司用的是Gerrit,跟我們常用的github和gitee上的一些細節還是有點差別。這里詳細說一下。

Gerrit的核心是企業級評審,而他評審的核心是changeId。所以,在使用Gerrit的時候,最重要的是保證changeId是不能變的,但是commit 那一串的Id會隨著我們的提交發生變化,這個是可以的。下面我將按照git工作流程來對我工作上常用的git操作進行總結。
在這里插入圖片描述
在這里插入圖片描述

1.克隆

工作中的克隆的時候,依然跟我們平常一樣,注意設置好ssh,以及設置user和email。在企業里面,如果你的企業比較大,需要注意的就是,你可能會沒有代碼倉庫的權限,以及,沒有代碼倉庫依賴的代碼倉庫的權限(人家的開發用的基礎框架都是自研的),找leader申請吧。

2.新建本地分支和checkout

這個沒有什么好說的,唯一需要注意的點在于,你們公司用的是什么git工作流。這影響你對代碼的管理(你當然可以在本地的master分支開發,但如果你同時要做n個需求,你再像之前那樣在master分支開發,代碼的管理就會很困難)

3.添加到暫存區

我在沒上班之前,我就喜歡直接git add .,很爽。搞了一次之后,我就老實了。如果你直接全部添加的話,我一般還會寫一些不想添加到倉庫的代碼(比如測試代碼,比如編譯之后的文件,比如日志等等,這些按照要求是不能添加到代碼倉庫的)。如果你直接git add .你的領導在review的時候,就會跟你說這個不行。讓你給刪,再評審。就比較麻煩。

正確的做法是

新增文件到暫存區

git add 文件名

修改已經添加到暫存區的文件

git add -u 文件名

取消添加到暫存區的文件

git reset 文件名


上面基本就是我最常用的命令了。

4.提交到本地倉庫

這里需要注意,我們公司每次開發一個功能或接口,都會創建一個開發卡片。沒有綁卡片都提交不到倉庫里面。
git commit -m “[卡片編號]本次代碼的描述”

在不重復提交的情況下,修改本次提交

這個命令真的是我使用頻率最高的命令了,當你的代碼被打回來,需要修改代碼,但是你的changeid還不能變,你還不能重復commit。那應該怎么辦呢?
git commit --amend --no-edit
使用這個命令,當你把你新寫好的代碼給add 之后,你就能在不改變changeid的情況,把新添加的代碼給放到當前的commit上。

如果你的代碼改了,還想修改描述。
git commit --amend
它會出來你相關的提交,使用的vim編輯器。vim怎么操作就不多說了。

5.提交到遠程倉庫

還記得我上面說的,使用的是Gerrit嘛。他在這里的命令跟github和gitee有一點不一樣。
他的流程是先評審在合并(其他的流程是先提PR,審查沒問題后再合并,PR不會卡你的commit)
git push origin 需要提交的本地分支名:refs/for/遠程分支名

這里需要注意的點
1.當你需要提交的時候,你才去從在遠程的master分支拉出你需要提交的分支。
場景舉例:
1.比如我現在開始寫了統計相關的代碼,我的本地分支叫Statistics。然后我還沒寫完我就在遠程分支創建了Statistics。
2.經過1天的時間,你寫完了代碼,在這期間,其他人向master合并他的代碼
3.你提交了你的代碼,然后不合格,被領導打回來了,完全重寫,你想reset,不小心把分支搞亂了,你把這個本地分支給刪除了。然后你對master進行了更新,又拉了一個分支叫Statistics。

這個時候提交,你的提交會帶著上一次別人更新的代碼。原因是本地的master是最新的分支,但你遠程的Statistics分支是基于上一個版本的master拉出來的,Gerrit可不管你是上一個還是最新的,它只看你兩個分支的代碼區別。

本人的親身經歷。

解決方法也很簡單,把遠程的Statistics給刪了,再基于最新的master拉Statistics,你本地的分支是一點都不用變的,評審就OK了。

6.評審

Gerrit的評審可以在網頁上寫評論和和打分。打分分為-2,-1,0,+1,+2。通過就是+2。如果只想評論就是0。不想通過就是-2。評審完了就是可以合并了。趁著你還記得你寫的代碼,該合并就合并吧。因為你后面還要QA進行測試,QA還有其他的活,所以你合并完就快點QA聯系。快的話,第二天就可以測了。如果當天測完之后,時間還早,上線時機合適,就可以上線了。(讓你早點合并的原因就是,你現在還記得你的代碼,要確保你沒有把臟代碼給合并上去,過幾天,你自己都不記得你寫的代碼了,再讓你上線你心里會發怵)

其他輔助命令

git status
git log -p
git log --oneline
git reset --soft commit-id

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

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

相關文章

< OS 有關> BaiduPCS-Go 程序的 菜單腳本 Script: BaiduPCS-Go.Menu.sh (bdgo.sh)

目標: 使用 日本阿里云的 VPM 傳輸文件。 暫時方案: 使用 主機JPN 下載 https://huggingface.co/ 上模型從 JPN 放到 度狗上在家里從狗度下載 為了減少編程,盡量使用現在軟件 ,就找到 GitHub - qjfoidnh/BaiduPCS-Go: iikira…

項目測試之MockMvc

文章目錄 基礎基礎概念Mockxxx一般實現文件位置 實戰MockMvc與Test注解不兼容RequestParams參數RequestBody參數 基礎 基礎概念 定義:是Spring框架提供的一種用于測試Spring MVC控制器的工具,它允許開發者在不啟動完整的web服務器的情況下,…

(詳細)Springboot 整合動態多數據源 這里有mysql(分為master 和 slave) 和oracle,根據不同路徑適配不同數據源

文章目錄 Springboot 整合多動態數據源 這里有mysql(分為master 和 slave) 和oracle1. 引入相關的依賴2. 創建相關配置文件3. 在相關目錄下進行編碼,不同路徑會使用不同數據源 Springboot 整合多動態數據源 這里有mysql(分為maste…

計算機網絡之計算機網絡的分類

計算機網絡可以根據不同的角度進行分類,以下是幾種常見的分類方式: 1. 按照規模和范圍: 局域網(LAN,Local Area Network):覆蓋較小范圍(例如一個建筑物或校園)&#xf…

騰訊云開發提供免費GPU服務

https://ide.cloud.tencent.com/dashboard/web 適用于推理場景,每個月10000分鐘免費時長 166 小時 40 分鐘 自帶學術加速,速度還是不錯的 白嫖 Tesla T4 16G 算力 顯存:16GB 算力:8 TFlops SP CPU:8 核 內存&#…

國內外大語言模型領域發展現狀與預期

在數字化浪潮中,大語言模型已成為人工智能領域的關鍵力量,深刻影響著各個行業的發展軌跡。下面我們將深入探討國內外大語言模型領域的發展現狀以及未來預期。 一、發展現狀 (一)國外進展 美國的引領地位:OpenAI 的 …

存儲過程優化實踐:統一返回結構、參數 JSON 化與事務原子化

存儲過程作為數據庫中執行復雜業務邏輯的重要工具,在提升性能、保障數據一致性和簡化維護方面發揮著重要作用。然而,隨著應用程序和數據的復雜度不斷增加,存儲過程也面臨著性能瓶頸、維護難度和擴展性問題。為了應對這些挑戰,優化…

Lustre Core 語法 - 布爾表達式

Lustre v6 中的 Lustre Core 部分支持的表達式種類中,支持布爾表達式。相關的表達式包括and, or, xor, not, #, nor。 相應的文法定義為 Expression :: not Expression| Expression and Expression| Expression or Expression | Expression xor Expression | # (…

DeepSeek--通向通用人工智能的深度探索者

一、詞源與全稱 “DeepSeek"由"Deep”(深度)與"Seek"(探索)組合而成,中文譯名為"深度求索"。其全稱為"深度求索人工智能基礎技術研究有限公司",英文對應"De…

模板生成引擎技術介紹

模板生成引擎技術介紹 什么是模板生成引擎? 模板生成引擎是一種用于將數據與預定義的格式相結合,以生成最終文檔或網頁的技術。它允許開發者通過定義模板和填充數據來自動化內容創建過程。這種技術廣泛應用于網站開發、報告生成、電子郵件定制等多個領…

第 5 章:聲音與音樂系統

5.1 聲音效果的應用 在游戲中,聲音效果是增強游戲沉浸感和趣味性的重要元素。Pygame 提供了強大的音頻處理功能,使得添加各種聲音效果變得相對簡單。聲音效果可以包括角色的動作音效,如跳躍、攻擊、受傷時的聲音;環境音效&#x…

matlab中,fill命令用法

在 MATLAB 中,fill 命令用于創建填充多邊形的圖形對象。使用 fill 可以在二維坐標系中繪制填充的區域,通常用于繪制圖形的背景或顯示數據分布。 基本語法 fill(X, Y, C)X 和 Y 是同樣長度的向量,定義了多邊形的頂點坐標。C 是顏色&#xff0…

ChatGPT 搜索測試整合記憶功能

據 TestingCatalog 報道,OpenAI 正在測試 ChatGPT 搜索的整合記憶功能,被命名為 “Memory in search”2。以下是關于該功能的具體情況123: 功能特點 個性化搜索:啟用該功能后,ChatGPT 能利用存儲的記憶數據&#xff0…

新站如何快速獲得搜索引擎收錄?

本文來自:百萬收錄網 原文鏈接:https://www.baiwanshoulu.com/8.html 新站想要快速獲得搜索引擎收錄,需要采取一系列有針對性的策略。以下是一些具體的建議: 一、網站內容優化 高質量原創內容: 確保網站內容原創、…

指定dpkg安裝deb包時的安裝路徑

通過install和ctonrol文件設置安裝路徑 在使用dpkg安裝.deb包時,一般不能直接指定安裝路徑,因為.deb包內部已經定義了文件的安裝位置。這些位置是在打包.deb包時通過控制文件(通常是debian/control和debian/install等文件)指定的…

開發者交流平臺項目部署到阿里云服務器教程

本文使用PuTTY軟件在本地Windows系統遠程控制Linux服務器;其中,Windows系統為Windows 10專業版,Linux系統為CentOS 7.6 64位。 1.工具軟件的準備 maven:https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-m…

汽車定速巡航

配備定速巡航功能的車型,一般在方向盤附近設有4~6個按鍵(可能共用鍵位)。 要設置定速巡航,不僅需要方向盤上的按鍵,還要油門配合。 設置的一般流程: 開關:類似步槍上的“保險”,按…

C++11中array容器的常見用法

文章目錄 一、概述二、std::array的特點三、std::array的定義與初始化三、std::array的常用成員函數四、與 C 風格數組的互操作 一、概述 在 C11 中,std::array 是一個新的容器類型,它提供了一個固定大小的數組封裝。相比傳統的 C 風格數組,…

Vue 響應式渲染 - 待辦事項簡單實現

Vue 漸進式JavaScript 框架 基于Vue2的學習筆記 - Vue 響應式渲染 - 待辦事項簡單實現 目錄 待辦事項簡單實現 頁面初始化 雙向綁定的指令 增加留言列表設置 增加刪除按鈕 最后優化 總結 待辦事項簡單實現 頁面初始化 對頁面進行vue的引入、創建輸入框和按鈕及實例化V…

中文輸入法方案

使用了三年的自然碼雙拼,毫無疑問是推薦使用雙拼輸入法。 三年積累下來的習慣是: 1 自然碼方案 2 空格出字 字母選字 直到如今,想要做出改變,是因為這樣的方案帶來的痛點: 1 使用空格出字就無法使用輔助碼&#…