Git踩坑

文章目錄

  • 前言
      • ?問題分析:為什么你的提交會“覆蓋”別人的代碼?
      • ? 正確的代碼提交流程(結合你原文的說明)
        • **1. 確認自己在正確的分支上**
        • **2. 從主開發分支(如 dev)拉取最新代碼并合并**
        • **3. 解決沖突(如有)**
        • **4. 自己測試通過,確保功能正常**
        • **5. 提交到本地倉庫**
        • **6. 再次從遠程拉一次(防止別人剛好也提交了)**
        • **7. 最后,推送代碼到遠程**
      • ?一定要注意的點:
      • 🚫常見誤區
      • 📌你提到的分支說明,再理一遍(加理解):
      • ? 總結一句話:
    • 1. **為什么會覆蓋別人的代碼?**
    • 2. **詳細舉例說明**
    • 3. **標準提交流程**
      • 步驟 1:切換到你的分支
      • 步驟 2:拉取遠程最新 `dev` 代碼,合并到你的分支
      • 步驟 3:解決沖突
      • 步驟 4:確認合并后測試代碼
      • 步驟 5:提交合并后的代碼
      • 步驟 6:再次拉遠程代碼,防止別人這時又提交了代碼
      • 步驟 7:推送你的代碼到遠程分支
    • 4. **總結**
    • 5. **如果跳過這幾個步驟,結果會怎樣?**
    • 6. **分支說明**

前言

想不明白,為啥我提代碼會把別人的代碼覆蓋掉呢? 注意注意:倉庫提交代碼,必須通過測試之后,沒問題之后再提交!!!

記錄: 提交前—>git選自己的分支—>checkout —>merge拉取—>然后有沖突解決沖突,合并代碼,注意注意注意!!!要查看自己的提交和別人的代碼,不要修改別人的代碼 —>commit—>提交到local倉庫 —>再次拉取新的遠程倉庫merge,以防commit之后,還有人提交 —>push—>提交到遠程倉庫

關于自己的分支和dev,master,test,feat分支區別: 自己的分支一般是從dev分支上merge過去,merge到自己的分支 dev分支—>開發主分支,提交前慎重,開發自測完要code review之后,還有提測完才能和master合并,注意注意!!! test分支—>測試分支,一般是junit單元測試分支 master—>業務上線版本分支,一般沒事兒別在這上面提交代碼!!! feat—>未來的新功能開發分支,后面也要往dev上合并!!!
這段話的核心是想理清一個問題:為什么你提交代碼時,會把別人的代碼“覆蓋”掉?


?問題分析:為什么你的提交會“覆蓋”別人的代碼?

這是因為 你本地代碼不是最新的遠程代碼,你在提交時忽略了別人最近的提交或沒有處理好合并沖突,導致:

你提交的內容把別人后來提交的內容“沖掉了”。


? 正確的代碼提交流程(結合你原文的說明)

我幫你理一理標準操作順序,并解釋每一步原因:


1. 確認自己在正確的分支上
git checkout your-feature-branch

你的開發工作應當在你自己的分支上做,比如 feature/xxx,而不是在 devmaster 這種主分支上。


2. 從主開發分支(如 dev)拉取最新代碼并合并
git fetch origin
git merge origin/dev

?? 這一步非常重要!
目的是:拿到別人已經提交的最新代碼,本地合并后解決沖突,保證你提交的不是“舊代碼”。


3. 解決沖突(如有)

如果有沖突一定要認真處理,不能直接刪掉或忽視別人加的代碼,你可以:

  • 對比沖突內容,看哪部分需要保留
  • 用工具輔助,如 VS Code 的 Merge 工具

4. 自己測試通過,確保功能正常

不測試就提交很容易出錯!


5. 提交到本地倉庫
git add .
git commit -m "你的提交說明"

6. 再次從遠程拉一次(防止別人剛好也提交了)
git fetch origin
git merge origin/dev

7. 最后,推送代碼到遠程
git push origin your-feature-branch

?一定要注意的點:

  • 合并前一定要看一下別人改了什么,不能無腦合并、無腦覆蓋。
  • 不要直接改別人的分支、不要直接改 master/test/dev 等主分支,你只能 PR 合并到主分支。
  • merge 有沖突就要認真解決,不是刪掉沖突就完事,沖掉別人代碼后果很嚴重。
  • 每次 push 前都要再拉一次遠程,確保你本地是最新的。

🚫常見誤區

錯誤行為后果
不拉遠程直接提交覆蓋別人最新代碼
合并時不看沖突內容刪掉別人寫的邏輯
在 dev/master 直接寫代碼很可能引起線上事故或沖突混亂
提交前不測試上線后出 Bug

📌你提到的分支說明,再理一遍(加理解):

  • your-feature-branch:你自己的開發分支
  • dev:開發主分支,最終所有人代碼都要合到這
  • master:上線分支,必須經過測試才合并
  • test:測試驗證的分支,一般運行 CI / 單元測試
  • feat:未來功能實驗分支,開發結束后合并到 dev

? 總結一句話:

提交代碼前一定要保證你本地是最新的遠程代碼,并且認真處理合并沖突、保留他人代碼邏輯,不要直接覆蓋。


好的,我給你詳細具體地解釋,為什么你“提代碼會覆蓋別人的代碼”,以及怎么避免。過程會盡量通俗易懂。


1. 為什么會覆蓋別人的代碼?

Git 是一個分布式版本控制系統,大家的代碼是并行提交的。當你提交時,實際上是用你本地的代碼去“替換”遠程倉庫里對應分支的代碼。

問題根源在于:

  • 你本地代碼和遠程倉庫的代碼不一致(你本地是舊的,遠程已經有人提交了新代碼)。
  • 你直接把本地代碼推上去(push),會把遠程的內容“替換”為你的本地代碼。
  • 但你的本地代碼沒有包含遠程最新代碼,就把別人改的代碼“覆蓋”了。

2. 詳細舉例說明

假設:

  • 遠程 dev 分支上,Alice 提交了一段代碼A
  • 你本地還是舊代碼,沒有拉取到Alice的改動

如果你直接 git push,你的舊代碼會把包含代碼A的遠程代碼覆蓋,代碼A就丟了。


3. 標準提交流程

步驟 1:切換到你的分支

git checkout your-feature-branch

你在自己分支上開發,不直接在主分支開發。


步驟 2:拉取遠程最新 dev 代碼,合并到你的分支

git fetch origin
git merge origin/dev
  • git fetch origin 會拉取遠程倉庫所有分支最新代碼,但不合并。
  • git merge origin/dev 是把遠程 dev 最新代碼合并進你的分支。

為什么要這步?
確保你的代碼和別人最新代碼合到一起,避免沖突。


步驟 3:解決沖突

如果兩邊代碼改了同一部分,Git 會告訴你有沖突:

CONFLICT (content): Merge conflict in your_file.java

你要手動打開沖突文件,Git 會標記沖突內容,比如:

<<<<<<< HEAD
你這邊的代碼
=======
遠程dev的代碼(別人改的)
>>>>>>> origin/dev

你要仔細合并,保留你和別人都需要的代碼,去掉標記。


步驟 4:確認合并后測試代碼

確保你的功能沒問題,別人代碼也沒被破壞。


步驟 5:提交合并后的代碼

git add .
git commit -m "合并dev最新代碼,解決沖突"

步驟 6:再次拉遠程代碼,防止別人這時又提交了代碼

git fetch origin
git merge origin/dev

如果沒有新提交,這步不會改東西;如果有,重復解決沖突流程。


步驟 7:推送你的代碼到遠程分支

git push origin your-feature-branch

4. 總結

操作作用
git fetch origin獲取遠程最新代碼,不修改本地
git merge origin/dev把遠程最新代碼合并到當前分支
解決沖突確保合并代碼沒有錯誤,保留雙方代碼
測試保證代碼正確
git push把本地最新代碼上傳遠程

5. 如果跳過這幾個步驟,結果會怎樣?

  • 你沒拉取遠程最新代碼,push 時就直接覆蓋遠程代碼,別人最新改動丟失。
  • 合并時沒認真解決沖突,可能刪了別人重要代碼。
  • 直接在 devmaster 分支開發,風險高,容易破壞穩定代碼。

6. 分支說明

  • 你的分支(feature 分支):自己開發用,不直接推到主分支
  • dev 分支:開發主線,功能合并匯總后,才推到這里
  • master 分支:上線分支,必須穩定,不隨意改動
  • test 分支:測試用的,做自動測試等
  • feat 分支:未來新功能開發,合并到 dev

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

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

相關文章

sqli-labs:Less-20關卡詳細解析

1. 思路&#x1f680; 本關的SQL語句為&#xff1a; $sql"SELECT * FROM users WHERE username$cookee LIMIT 0,1";注入類型&#xff1a;字符串型&#xff08;單引號包裹&#xff09;、GET操作提示&#xff1a;參數需以閉合關鍵參數&#xff1a;cookee php輸出語句…

基于LevitUnet的超聲圖像分割

完整項目包獲取&#xff1a;點擊文末名片本項目旨在開發一個基于深度學習的圖像分割模型&#xff0c;專門用于處理醫學或遙感領域的圖像數據&#xff08;以 TIFF 格式存儲&#xff09;。通過結合 LeViT&#xff08;基于 Vision Transformer 的輕量模型&#xff09;和 U-Net 架構…

Java 17 新特性解析與代碼示例

Java 17 新特性解析與代碼示例 文章目錄Java 17 新特性解析與代碼示例引言1. 密封類&#xff08;JEP 409&#xff09;1.1. 介紹1.2. 詳細說明1.3. 代碼示例1.4. 與之前功能的對比1.5. 使用場景1.6. 總結2. switch 模式匹配&#xff08;預覽&#xff0c;JEP 406&#xff09;2.1.…

SQL中的GROUP BY用法

GROUP BY 是 SQL 中用來“按列分組”的子句。 它把相同值的行分到同一個組&#xff0c;然后通常配合聚合函數&#xff08;COUNT, SUM, AVG, MAX, MIN 等&#xff09;對每個組做統計&#xff0c;最終每組只返回一行結果。? 1. 基本語法 SELECT 列1, 列2, 聚合函數(列3) FROM 表…

AI Agent開發學習系列 - LangGraph(10): 帶有循環的Looping Graph(練習解答)

在AI Agent開發學習系列 - LangGraph(9): 帶有循環的Looping Graph中&#xff0c;我們學習了如何創建帶有循環的Looping Graph。為了鞏固學習&#xff0c;我們來做一個練習。 用LangGraph創建如下圖的一個Agent: 要求&#xff1a; 輸入玩家姓名通過輸入的上限值和下限值之間…

【保姆級 - 大模型應用開發】DeepSeek R1 本地部署全攻略:Ollama + vLLM + PyTorch 多選方案

DeepSeek R1 本地部署全攻略&#xff1a;Ollama vLLM PyTorch 多選方案 想部署 DeepSeek-R1 模型到本地&#xff0c;開啟高性能推理體驗&#xff1f;本文匯總了 Ollama、vLLM 及原生 PyTorch 的部署方法&#xff0c;適合不同開發者需求。 &#x1f3af; 下載模型 (必做) ----…

使用 Vive Tracker 替代 T265 實現位姿獲取(基于 Ubuntu + SteamVR)

在Dexcap這篇工作列出第二版硬件清單時&#xff0c;我注意到其使用 Vive Tracker 替代 Intel T265 來獲取位姿數據&#xff0c;對這個東西的性能感到好奇&#xff0c;最近因為需要跟進相關工作&#xff0c;參與了一部分實現&#xff0c;由于這方面的中文資料相對較少&#xff0…

博物館 VR 導覽:圖形渲染算法+智能講解技術算法實現及優化

本文面向博物館數字化開發技術員、VR 系統工程師等技術同仁們&#xff0c;聚焦圖形渲染算法在博物館 VR 導覽中的核心應用&#xff0c;解決虛擬展館還原精度不足、多終端適配卡頓、智能講解觸發延遲等實際技術問題。如有項目合作及技術交流歡迎私信作者~一、VR導覽技術痛點1.3D…

zset 中特殊的操作

首先 zset 與我們常規的 redis 操作有所不同, 這里的時間復雜度基本都是 O(log N) 起步的 目錄 1. zcount 2. zpopmax 1. zcount zcount key min max : 這里求的是 key 中下標在 min 和 max 之間的 元素的數量, 這里是比區間 我們要是想排除端點, 就需要加上 ( , 無論是…

KSP與ASM深度對比:原理、性能與使用場景

一、核心目的差異1. KSP&#xff08;Kotlin Symbol Processing&#xff09;核心目的&#xff1a;在編譯時生成新代碼&#xff0c;解決樣板代碼問題(操作對象:.kt源文件編譯過程中的中間表示)主要場景&#xff1a;自動生成DI&#xff08;依賴注入&#xff09;配置代碼創建路由映…

【LLM】如何在Cursor中調用Dify工作流

這篇文章將通過一個接口文檔知識庫示例&#xff0c;帶你了解如何在 Cursor 中通過 Mcp Server 調用 Dify 平臺配置的工作流。 1. 準備工作 需要準備文本生成模型、向量模型、Rerank 模型&#xff08;可選&#xff09;&#xff0c;這些都可以在 阿里云百煉平臺 申請免費使用額度…

L1、L2正則化的幾何解釋

L2正則化: 圖中用幾何方式形象地解釋了 Ridge 回歸&#xff08;L2正則化&#xff09;的原理。 ① 陰影圓&#xff1a;可以理解為&#xff08;w1^2 w2^2&#xff09;?≤R^2&#xff0c;圓周表示目標函數的約束線&#xff0c;這個圓表示了我們的參數 (w1,w2)可以活動的范圍。 …

【學習筆記】Java并發編程的藝術——第1章 并發編程的挑戰

第1章 并發編程的挑戰 1.1 上下文切換 即使是單核處理器也支持多線程執行代碼&#xff0c;CPU給每個線程分配CPU時間片實現多線程&#xff0c;而每個時間片一般是幾十毫秒&#xff0c;所以多個線程感覺是同時執行的 但同一個核切換線程執行時會保存運行狀態&#xff0c;以便下次…

leecode3 無重復元素的最長子串

我的思路 原始代碼 我發現我雖然解決問題了&#xff0c;但是我的思路不簡潔&#xff0c;不明白。 這個題本質上還是滑動窗口的問題。 具體思路為先定義兩個指針&#xff0c;對應滑動窗口的兩個邊界關鍵是&#xff1a;定義一個集合&#xff0c;來判斷這個窗口中的元素是否存在重…

【嵌入式匯編基礎】-ARM架構基礎(三)

ARM架構基礎(三) 文章目錄 ARM架構基礎(三) 7、AArch64 執行狀態 7.3 程序計數器 7.4 堆棧指針 7.5 零寄存器 7.6 鏈接寄存器 7.7 幀指針 7.8 平臺寄存器 (x18) 7.9 過程內調用寄存器 7.10 SIMD 和浮點寄存器 7.11 系統寄存器 7.13 PSTATE 7、AArch64 執行狀態 7.3 程序計…

[buuctf-misc]喵喵喵

m題目在線評測BUUCTF 是一個 CTF 競賽和訓練平臺&#xff0c;為各位 CTF 選手提供真實賽題在線復現等服務。https://buuoj.cn/challenges#%E5%96%B5%E5%96%B5%E5%96%B5BUUCTF 是一個 CTF 競賽和訓練平臺&#xff0c;為各位 CTF 選手提供真實賽題在線復現等服務。https://buuoj.…

Vue 詳情模塊 2

Vue 漸進式JavaScript 框架 基于Vue2的移動端項目&#xff1a;詳情基礎內容&#xff0c;日期及電影描述 目錄 詳情 詳情基礎內容 初始化與賦值 渲染基礎內容 詳情樣式 日期處理 安裝moment 定義過濾器 使用過濾器 電影描述 總結 詳情 詳情基礎內容 初始化與賦值 …

【MODIS數據】MYD03

&#x1f30d; 遙感數據的“導航儀”&#xff1a;深入解析MYD03地理定位產品 在衛星遙感領域&#xff0c;精確的地理定位是數據應用的基礎。作為Aqua衛星中分辨率成像光譜儀&#xff08;MODIS&#xff09;的核心支撐產品&#xff0c;MYD03雖不如地表溫度或植被指數產品知名&am…

如何填寫PDF表格的例子

實際應用場景中&#xff0c;我們會遇到需要根據會話內容自動填寫表格的情況&#xff0c;比如&#xff1a;pdf 表格。假設根據會話內容已經獲得相關信息&#xff0c;下面以填寫個人信息為例來說明。個人信息表格.pdf填寫后的效果&#xff1a;填寫代碼如下&#xff1a;from pdfrw…

2023年影響重大的網絡安全典型案例

以下是2023年影響重大的網絡安全典型案例&#xff0c;按時間順序梳理事件經過及技術細節&#xff1a;---一、DeFi協議攻擊&#xff1a;dForce借貸協議遭入侵&#xff08;2023年4月&#xff09;** - 時間線&#xff1a; - 4月19日08:58&#xff1a;黑客開始攻擊Lendf.Me合約&…