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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...