文章目錄
- 前言
- ?問題分析:為什么你的提交會“覆蓋”別人的代碼?
- ? 正確的代碼提交流程(結合你原文的說明)
- **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
,而不是在 dev
、master
這種主分支上。
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 時就直接覆蓋遠程代碼,別人最新改動丟失。
- 合并時沒認真解決沖突,可能刪了別人重要代碼。
- 直接在
dev
或master
分支開發,風險高,容易破壞穩定代碼。
6. 分支說明
- 你的分支(feature 分支):自己開發用,不直接推到主分支
- dev 分支:開發主線,功能合并匯總后,才推到這里
- master 分支:上線分支,必須穩定,不隨意改動
- test 分支:測試用的,做自動測試等
- feat 分支:未來新功能開發,合并到 dev