Git 推送到另一個名稱不同的分支

Ankit Raj Goyal 2023年1月30日
  1. git push 命令及其豐富的選項集
  2. git push 中的簡潔快捷方式,用於設定 refspecs 引數一次並多次使用
  3. 我們何時希望將 Git 推送到另一個分支
  4. Git Refspecs
  5. 資源
Git 推送到另一個名稱不同的分支

git push 具有豐富的選項,可讓你使用 Git 的全部功能。其中之一是它的 source:destination refspecs 引數。

我們使用這些 git push 到具有我們選擇的名稱的特定分支。最後,我們將看到一些用例,如果我們 git push 一個新分支而不是進入與我們本地名稱相同的分支,我們會在工作流程中獲得巨大收益。

git push 命令及其豐富的選項集

Git 並不限制我們使用簡單的 git push 命令簡單地推送到遠端。相反,它為我們提供了幾個強大的選項來讓我們實現我們想要的結果。

其中兩個是 [remote_repe][src:dst] refspecs 引數。

讓我們看看這些引數如何幫助我們 git push 到另一個分支。

git push [remote_repo] [refspecs]

[remote_repo] 指的是我們本地系統中的遠端倉庫。大多數時候,這個名字是 origin

[refspecs]git push 到特定分支的有趣引數鍵。我們將在本文結尾處詳細檢視 refspecs

它的格式為:src:dst,其中 src 指的是我們要推送的本地分支。dst 是對我們要推入的遠端分支的引用(或名稱)。

它預設與 src 引數同名,但我們可以通過顯式提供 dst 值來選擇 git push 到特定分支。

我們首先設定一個本地倉庫並將其連結到遠端倉庫。然後,我們還在本地倉庫上建立一個新分支。

帶有未推送分支的本地倉庫

沒有功能分支的遠端

我們的遠端倉庫在本地沒有 feature_branch

我們現在將 feature_branch 推送到另一個具有新名稱的分支。

git push origin feature_branch:teamX_featureY

git 推送到特定分支

我們現在看到 feature_branch 已被推送到我們遙控器上具有不同名稱的新分支中。

git push 新分支到遠端

請注意,每次推送時都必須傳入這些引數;否則,dst 引數將預設為本地倉庫中分支的名稱。然而,Git 為我們提供了一個簡潔的快捷方式,以節省我們重複輸入這些內容的工作量。

git push 中的簡潔快捷方式,用於設定 refspecs 引數一次並多次使用

在 Git 中,分支的上游名稱是你始終將其推送到的分支。你可以使用以下命令設定此值。

git branch --set-upstream-to <remote_branch>

但是,你也可以通過簡單地傳遞 -u 標誌來使用 git push 執行此命令。

git push -u origin local:different_remote

如果你這樣做,你的本地分支會在你下次推送時被推送到 different_remote 分支中。所以你不需要每次都明確地命名它。

使用上游標誌推送

我們還在遠端倉庫中看到了這個新的上游分支。

遠端與新的上游分支

你必須使用以下命令更改 config 檔案中的 push.default 值。

git config push.default upstream

如果你現在推送 second_feature 而不提及 dst 引數,Git 會自動將其推送到 different_remote

git push origin second_feature

git config 編輯遠端推送預設

我們何時希望將 Git 推送到另一個分支

我們想要 git push 一個新分支的一些用例是:

  1. 假設你開發了一個很酷的功能或模組,並且你希望將其推送到你從事的多個專案中。你甚至會喜歡一個簡單的通用功能,例如你設計的萬聖節主題選單,並且希望在你的許多應用程式中使用它。

    你需要將其推送到具有不同名稱的每個專案中。

  2. 有時,中央(遠端)倉庫中的命名方案與你的本地設定不匹配。當你處理涉及大型團隊的多個專案時尤其如此。

    在這種情況下,帶有 refspecs 選項的 git push 命令可以為你節省一天的時間。

最後,在我們簽字之前,讓我們深入研究一下 refspecs

Git Refspecs

Git 在內部儲存對倉庫中所有物件的引用。這使得快速訪問各種 Git 物件變得容易,而無需總是使用神祕的 SHA 雜湊。

在 Git 中,我們將(雙關語)這些引用稱為 refspecs

這些 refspecs 儲存在倉庫內的特殊目錄中。

  1. refs/heads 目錄儲存對本地倉庫中物件的引用。

    本地 refs heads

  2. refs/remotes 引用了你的遠端倉庫 Git 物件。

    remote refs remotes

資源

  1. https://www.freecodecamp.org/news/git-push-to-remote-branch-how-to-push-a-local-branch-to-origin/
  2. https://github.com/jiffyclub/blog-posts/commit/4bf63cdafc9a3eb9602646ced972913ef73386bd
  3. https://davidwalsh.name/git-push-different-name
  4. https://stackoverflow.com/questions/36139275/git-pushing-to-remote-branch
  5. https://git-scm.com/docs/git-push

相關文章 - Git Push