如何將 Git 分支推送到遠端倉庫?


你剛剛完成了一個編碼會話,實現了你的團隊幾個星期以來一直在計劃的令人興奮的新功能,準備將 Trello 卡移到已完成狀態。你的本地分支包含所有程式碼,但它與“在我的機器上可以執行!”的梗圖非常相似——它需要與世界(或至少你的團隊)共享。這就是將你的 Git 分支推送到遠端倉庫發揮作用的地方,本教程旨在指導你如何完成此操作。

遠端分支背後的原因

在我們深入探討之前,首先了解為什麼我們需要遠端分支。我最近指導的一位開發者 Sarah 曾經問我:“我不能只將所有內容都儲存在我的機器上嗎?”好吧,你可以,但這就像寫一部小說並且只儲存在你的筆記型電腦上一樣——非常浪費。

遠端倉庫服務於幾個關鍵目的
  • 它們充當你的程式碼備份
  • 它們支援與團隊成員的協作
  • 它們促進程式碼審查流程
  • 它們充當專案的事實來源

先決條件:為成功做好準備

在你可以推送你的分支之前,你需要
  • 在你的本地機器上安裝 Git
  • 一個遠端倉庫(如 GitHub、GitLab 或 Bitbucket)
  • 設定正確的身份驗證(SSH 金鑰或憑據)
  • 一個包含已提交更改的本地分支

讓我們使用以下命令驗證你的 Git 遠端設定

git remote -v
如果你從頭開始,可能需要新增一個遠端倉庫
git remote add origin git@github.com:username/repository.git
在本指南中,我將介紹你需要將分支推送到遠端倉庫的不同場景以及如何處理它們。因此,無論團隊或環境如何,你都可以充滿信心地貢獻你的力量。

基本推送:你的第一個遠端分支

讓我們從最簡單的場景開始。你建立了一個名為“Login”的本地分支,並希望將其推送到遠端倉庫。以下是命令結構

git push
例如,將你的“login”分支推送到“origin”遠端倉庫
git push origin feature-login

真實場景:功能開發工作流程

讓我分享一個真實場景。幾年前,我們的團隊正在開發一個電子商務平臺,我負責實施一個新的支付閘道器。這意味著我和我的同事非同步地為同一個倉庫做出貢獻,並且經常推送更改。以下是我如何管理我的分支工作流程的
1. 首先,我建立並檢出一個新分支:這是為了給我一個隔離的環境來工作,不受同事不斷推送的更改的影響。


git checkout -b feature/payment-gateway
2. 進行並提交我的更改後:這會新增我的更改並提交它們。
git add .
git commit -m "feat: Implement Stripe payment gateway integration"
3. 在推送之前,我確保從主分支拉取最新的更改:請記住我說我的分支沒有同事的更改?現在我想確保自開始處理支付整合以來提交到倉庫的每一部分新程式碼都拉取到我本地環境的主分支中。這確保了我的主分支與倉庫的主分支保持一致。這可以防止在推送時發生衝突。
git checkout main
git pull
git checkout feature/payment-gateway
git rebase main
4. 最後,我推送了我的分支

git push origin feature/payment-gateway

高階推送場景和常見挑戰

設定上游跟蹤

開發人員中常見的一個困惑是處理上游跟蹤。還記得我與之合作的另一位開發者 Alex 嗎?(不,你不知道,我之前說的是 Sarah)。他一直輸入完整的推送命令,直到我向他展示了這個簡單的技巧
git push -u origin feature-branch
-u 標誌(或--set-upstream)建立了一個跟蹤關係,以便所有程式碼推送都預設推送到功能分支。在此之後,你可以簡單地使用
git push

處理推送拒絕

有時,你會嘗試推送並收到類似這樣的錯誤
! [rejected] main -> main (non-fast-forward)
error: failed to push some refs to 'git@github.com:username/repository.git'
不要驚慌!我也遇到過這種情況。這通常意味著在你工作時,其他人已將更改推送到遠端分支。以下是如何解決此問題的方法

1. 首先,獲取最新的更改
git fetch origin
2. 然後,合併或變基

選項 1:合併

git merge origin/your-branch
選項 2:變基(我首選的方法)

git rebase origin/your-branch
3. 如果發生衝突,請解決衝突,然後再次推送。
強制推送:雙刃劍
有時你可能需要使用“-f”標誌強制推送
git push -f origin feature-branch
⚠️ 警告:強制推送可能會覆蓋遠端更改,應謹慎使用。我曾經看到一位初級開發者(是的,我見過很多開發者)不小心用強制推送刪除了一個星期團隊的更改。

如果你必須強制推送,請使用更安全的--force-with-lease選項

git push --force-with-lease origin feature-branch

最佳實踐和來自實踐的技巧

經過多年的 Git 使用經驗,以下是我遵循的一些黃金法則

1. 推送前始終拉取

git pull --rebase origin main

2. 使用描述性的分支名稱

好的 - 

git push origin feature/user-authentication
不太好 -

git push origin new-stuff

3. 驗證你的目標分支


檢查當前分支

git branch --show-current
列出所有分支及其跟蹤資訊

git branch -vv

4. 合併後清理


刪除本地分支

git branch -d feature-branch
刪除遠端分支

git push origin --delete feature-branch

故障排除常見問題


許可權被拒絕


如果你看到
ERROR: Permission to username/repo.git denied to user
檢查你的 SSH 金鑰或倉庫許可權。我建議執行

ssh -T git@github.com

推送到錯誤的分支

如果你不小心推送到錯誤的分支,別擔心。以下是如何修復它的方法

1. 推送到正確的分支

git push origin branch-name:correct-branch
2. 刪除錯誤的遠端分支

git push origin --delete wrong-branch

結論

將分支推送到遠端倉庫是 Git 的一項基本技能,隨著實踐會變得駕輕就熟。請記住,每個開發者都遇到過這些挑戰——我當然也遇到過!關鍵是理解概念,遵循最佳實踐,並從錯誤中學習。
請將本指南放在手邊,很快你就能像專業人士一樣推送分支。並且請記住我總是告訴我的學員的話:“經常提交,謹慎推送,並且始終仔細檢查你的分支名稱!”
編碼愉快!🚀

更新於: 2024年10月30日

40 次瀏覽

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告