Git在項目中使用技巧

来源:https://www.cnblogs.com/bishang/archive/2022/05/02/16215101.html
-Advertisement-
Play Games

1.常用的命令 mkdir 文件夾名 創建文件夾 clear 清楚屏幕 ls或者ll 將當前目錄下的子文件和子目錄平鋪在控制台 find 目錄名 將對應目錄下的子孫文件或子孫目錄平鋪在控制台 rm 文件名 刪除文件 mv 源文件 重命名文件 cat ... 查看對應文件內容 2.git高級命令 gi ...


1.常用的命令

mkdir     文件夾名 創建文件夾
clear     清楚屏幕
ls或者ll   將當前目錄下的子文件和子目錄平鋪在控制台
find      目錄名 將對應目錄下的子孫文件或子孫目錄平鋪在控制台
rm 文件名  刪除文件
mv 源文件  重命名文件
cat  ...   查看對應文件內容

2.git高級命令

git 操作基本流程

  1. 創建一個文件夾(項目)
    git init 項目下出現 .git 文件
  2. git全局配置
    git config --global user.name "XXXX"
    git config --global user.email "XXXX"
  3. 在所在項目中工作 (例如你在src文件下寫完你的代碼)
    項目代碼寫完,執行 git add 路徑 (一般直接寫 git add ./ 將所有代碼提交到暫存區
    git add ./命令流程(先到版本庫再到暫存區 git hash-object -w 文件名 git update-index 不理解就去看git的底層命令)
  4. 代碼提交 git commit -m "註釋內容" (提交到本地庫)
  5. 分支上工作(項目主分支是dev,開發使需要創建新的分支,例如創建test)
    1. 創建分支 git branch test
    2. 切換分支 git checkout test (切換操作,必須保持分支的處於已提交狀態)
    註:可以直接創建並切換 git checkout -b test
    3. 分支上工作順序 (首次無需拉取遠程dev代碼)
    4. 拉取遠程dev代碼(或者合併dev代碼)
    git pull origin "dev"或git merge dev
    處理衝突,然後工作
    5. 事情處理完,將修改後內容添加至暫存區
    git add ./
    6. 添加暫存區後再添加到本地倉庫
    git commit -m "註釋"
    7. 將分支代碼提交到遠程倉庫
    如果項目是首次創建,需要和遠程倉庫連接(如果項目是直接從遠程 clone,則無需操作)
    git remote add origin 地址
    git push -u origin test
    8. 提交分支後,團隊leader會審查代碼,再合併到dev上

git操作

  1. 如何修改分支名稱?
    需要將分支br_rename_old修改為br_rename_new,執行如下步驟:
    1、執行命令git checkout br_rename_old
    2、執行命令git pull origin br_rename_old將代碼更新到和遠程倉庫一致
    3、執行命令git branch -m br_rename_old br_rename_new將本地倉庫的br_rename_old的名稱修改為br_rename_new
    4、執行命令git push --set-upstream origin br_rename_new將本地分支push到遠程倉庫
    5、執行命令git push origin --delete br_rename_old將遠程分支br_rename_old刪除

  2. 如何刪除暫存區文件?(可以使用編輯自帶)
    1、僅僅刪除暫存區文件
    git rm --cache 當前文件所在目錄 (例如git rm --cache src/vdfvsdfvosdjfvosdfvdof.txt
    2、暫存區和工作區都刪除
    git rm -f 當前文件所在目錄 (例如 git rm -f src/vdfvsdfvosdjfvosdfvdof.txt

  3. 如何刪除版本庫?(已提交)
    1.僅僅只是撤銷已提交的版本庫,不會修改暫存區和工作區
    當我們執行 --soft 命令後,可以看到控制台無任何輸出。它只是把HEAD指向了上一個版本
    git reset --soft HEAD^(指向上一個版本)
    git reset --soft 版本庫ID

    2.僅僅只是撤銷已提交的版本庫和暫存區,不會修改工作區
    git reset ----mixed HEAD^
    3.徹底將工作去/暫存區和版本庫記錄恢復到指定的版本庫
    git reset --hard HEAD^ (返回上一個)
    git reset --hard HEAD@{n}(通過reflog返回)或者
    git reset --hard 版本庫id(通過reflog返回)**

  4. git fetch作用?
    更新遠程 從遠端倉庫中下載commits, files, refs到本地倉庫中。當你想要看看其他人都在做些什麼的時候,就要使用fetch命令。
    你可以認為git fetch是這兩者中更加安全的那個,即便下載了遠端的內容,但也不會更新你本地倉庫的版本狀態,以保證你本地當前代碼完好無損。反觀git pull命令則是一個更加激進的命令,它會下載當前正在工作的分支對應的遠端內容,並且在下載成功之後馬上執行一個git merge命令,為新下載下來的遠端內容創建一次merge commit。此時如果你有正在進行中的工作還沒準備好進行合併,這些行為可能會造成代碼衝突。

  5. git stash作用?(以及git stash pop)
    在某分支上修改內容,這時候卻需要切換其他分支,但沒修改好不想提交,可以使用git stash 命令,將但前分支沒修改好的代碼,保存至堆棧區,在切換到別的分支操作。在別的分支操作完,切回到剛纔的分支,可以先將剛纔分支刪除,在重新創建,切換後,在把剛纔保存在堆棧的修改內容,pop出來,執行 git stash pop命令(可以在任意分支pop出來)

  6. 刪除分支?
    git branch -D '分支名' 刪除本地分支
    git push origin --delete 分支名 刪除遠程分支

  7. 如何更新本地分支內容?(例如主分支為dev,當前分支為test)
    如果想拉去dev分支最新代碼
    方法一:git pull origin dev (做了兩步操作,拉去dev最新代碼,並將它合併到當前分支)
    方法二:git merge dev (將dev分支合共到當前分支,dev不是最新還需要切到dev分支更新,切換之前先git stash)

  8. 常用命令
    git branch -r 查看所有遠程分支 git branch -a 列出所有本地分支
    git checkout - 切換到上一個分支 (可以方便兩個分支之間進行切換)
    git push origin --delete 分支名 刪除遠程分支
    git status 顯示有變更的文件
    git log 顯示當前分支的版本歷史
    git diff 顯示暫存區和工作區的差異 (你可以查看你改了什麼,前期你沒有添加到暫存)
    git fetch 下載遠程倉庫所有變動 (哪些分支新建了等)
    git stash (未跟蹤的文件不會被緩存,例如新創建的文件)
    git stash list 查看緩存了幾條
    git stash save "test-cmd-stash"
    git stash pop //命令恢復之前緩存的工作目錄,這個指令將緩存堆棧中的第一個stash刪 除,並將對應修改應用到當前的工作目錄下。(並將緩存拷貝刪除)
    git stash apply //命令,將緩存堆棧中的stash多次應用到工作目錄中,但並不刪除stash拷貝。
    git stash apply stash@{n} n表示第幾個到工作區
    git stash drop //移除stash 移除具體哪一個
    git stash drop stash@{n}
    git stash clear //刪除所有緩存的stash

  9. 撤回push操作?(遠程倉庫)撤回已經提交到遠程的代碼
    先head指向要回到的版本,在強行推送到遠端
    git push --force
    image

例如撤回前兩個,只需將本地head指向第三個,在強行推送到遠端
git reset --hard 1c41df20421e36343d453d64477e0594fd98b041
git push --force
10. reset回退commit,後悔咋辦?
例如執行git reset --hard HEAD^,指向了別的版本,想在回來。
執行git reflog 查看所有 HEAD的切換 找到版本id,在執行git reset --hard 版本id
image

上圖是執行git reflog後的結果
git reflog展示你歷史操作記錄,在你執行錯誤命令時,可以幫助你快速返回執行錯誤之前的狀態
reflog第一個記錄(HEAD@{0})就是你最新的操作記錄,如果你想返回這操作之前的一個步驟,只需將 HEAD指向HEAD@{1} ,具體操作如下:
git reset --hard HEAD@{1} 或者 git reset --hard baa789e (對應的版本id)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 導讀: 近年來,知識圖譜在眾多行業場景被大量應用,例如推薦、醫療。為了構造儘可能完備的圖譜,知識圖譜的推理工作也成為學術屆和工業界的一個重要研究課題。來自Mila人工智慧實驗室的瞿錳博士,給大家分享了他們在圖譜推理任務方向的一個研究:基於邏輯規則的圖譜推理(RNNLogic: Learning Lo ...
  • 數據備份 1. 備份資料庫 使用 mysqldump 命令可以將資料庫中的數據備份成一個文本文件,表的結構和數據以 SQL 的形式將存儲生成的文本文件 mysqldump -u username -p dbname>BackupName.sql 其中,dbname 代表資料庫名稱,BackupNam ...
  • Cypher數據結構 Cypher的數據結構: 屬性類型, 複合類型和結構類型 屬性類型 屬性類型 Integer Float String: 'Hello', "World" Boolean: true, false, TRUE, FALSE 結構類型 結構類型 node: 表示一個節點, 由 i ...
  • 一、概述 Spark Streaming是對核心Spark API的一個擴展,它能夠實現對實時數據流的流式處理,並具有很好的可擴展性、高吞吐量和容錯性。Spark Streaming支持從多種數據源提取數據,如:Kafka、Flume、Twitter、ZeroMQ、Kinesis以及TCP套接字,並 ...
  • 今天的內容書接上回,同樣是vue的核心基礎部分,今天偏向於理論性,特別是vue對於數據對象的監測那一塊,剛開始琢磨了半天,這股勁一過,現在好理解多了 10.watch和computed對比 計算屬性案例(watch來做) 在增加一條需求輸入姓後要反應一秒後再響應 computed 區別 : comp ...
  • 今天給大家分享如何下載jQuery和用jQuery去做簡單的石頭剪刀布小游戲,代碼給大家放在下麵了,只需要把圖片路徑改一下就好了 說到jQuery我們先講解一下如何下載和導入jQuery,首先找到jQuery的官網 點擊download jQuery 把裡面的代碼複製下來,新建文本文檔粘貼進去,把 ...
  • DOM 事件是處理 Web 頁面交互的基礎,是掌握前端開發技術的基礎。 DOM 事件模型包括 4 個級別的規範:DOM0級,DOM1級,DOM2級和 DOM3級。 DOM1標準中不涉及事件。 1.DOM0級事件 DOM0 級事件處理就是將一個函數賦值給一個事件處理屬性,如下 <button type ...
  • 一、序 工欲善其事,必先利其器。作為一名資深程式員,相信必有一款調試神器相伴左右,幫助你快速發現問題,解決問題。作為前端開發,我還很年輕,也喜歡去搗鼓一些東西,藉著文章的標題,先提一個問題:大家目前是怎麼調試前端?哈哈,我也大膽的猜測下,可能有這麼幾種: 不調試,直接看代碼找問題 console.l ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...