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 [email protected]{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 [email protected]{n} n表示第幾個到工作區
    git stash drop //移除stash 移除具體哪一個
    git stash drop [email protected]{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第一個記錄([email protected]{0})就是你最新的操作記錄,如果你想返回這操作之前的一個步驟,只需將 HEAD指向[email protected]{1} ,具體操作如下:
git reset --hard [email protected]{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
  • 什麼是工廠模式 工廠模式是最常用的設計模式之一,屬於創建型模式。 有點: 解耦,可以把對象的創建和過程分開 減少代碼量,易於維護 什麼時候用? 當一個抽象類有多個實現的時候,需要多次實例化的時候,就要考慮使用工廠模式。 比如:登錄的抽象類ILoginBusiness,它有2個實現,一個用用戶名密碼登 ...
  • 這次iNeuOS升級主要升級圖形渲染引擎和增加豐富的圖元信息,可以很快的方案應用。總共增加41個通用和行業領域的圖元應用,增加2154個圖元信息,現在iNeuOS視圖建模功能模塊總共包括5894個行業圖元信息。現在完全支持製作高保真的工藝流程和大屏展示效果。 ...
  • 效果圖先附上: 首先 這是我是參考 教程:使用 SignalR 2 和 MVC 5 實時聊天 | Microsoft Docs 先附上教程: 在“添加新項 - SignalRChat”中,選擇 InstalledVisual> C#>WebSignalR>,然後選擇 SignalR Hub 類 (v ...
  • 一、前言 項目中之前涉及到胎兒心率圖曲線的繪製,最近項目中還需要添加心電曲線和血樣曲線的繪製功能。今天就來分享一下心電曲線的繪製方式; 二、正文 1、胎兒心率曲線的繪製是通過DrawingVisual來實現的,這裡的心電曲線我也是採用差不多相同的方式來實現的,只是兩者曲線的數據有所區別。心電圖的數據 ...
  • 安裝 Redis # 首先安裝依賴gcc, 後面需要使用make編譯redis yum install gcc -y # 進入 /usr/local/src 目錄, 把源碼下載到這裡 cd /usr/local/src # 下載 redis 7.0.2 的源碼,github被牆,可以使用國內的地址 ...
  • Redis 的定義? 百度百科: Redis(Remote Dictionary Server ),即遠程字典服務,是一個開源的使用ANSI C語言編寫、支持網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。 中文官網: Redis是一個開源(BSD許可),記憶體存 ...
  • 事情的起因是收到了一位網友的請求,他的java課設需要設計實現迷宮相關的程式——如標題概括。 我這邊不方便透露相關信息,就只把任務要求寫出來。 演示視頻指路👉: 基於JavaFX圖形界面的迷宮程式演示_嗶哩嗶哩_bilibili 完整代碼鏈接🔎: 網盤:https://pan.baidu.com ...
  • Python中的字典 Python中的字典是另一種可變容器模型,且可存儲任意類型對象。鍵值使用冒號分割,你可以看成是一串json。 常用方法 獲取字典中的值 dict[key] 如果key不存在會報錯,建議使用dict.get(key),不存在返回None 修改和新建字典值 dict[key]=va ...
  • 迎面走來了你的面試官,身穿格子衫,挺著啤酒肚,髮際線嚴重後移的中年男子。 手拿泡著枸杞的保溫杯,胳膊夾著MacBook,MacBook上還貼著公司標語:“加班使我快樂”。 面試官: 看你簡歷上用過MySQL,問你幾個簡單的問題吧。什麼是聚簇索引和非聚簇索引? 這個問題難不住我啊。來之前我看一下一燈M ...
  • tunm二進位協議在python上的實現 tunm是一種對標JSON的二進位協議, 支持JSON的所有類型的動態組合 支持的數據類型 基本支持的類型 "u8", "i8", "u16", "i16", "u32", "i32", "u64", "i64", "varint", "float", "s ...