簡體   English   中英

Git從一個分支移動到另一個分支

[英]Git move from one branch to another branch

我是Git的新手,沒有為我想要完成的任務提供太多幫助。

我有一個master分支https://my.company.com/appid/WebApp/tree/DEV ,我從中獲取了代碼並進行了大量修改。 不幸的是,我無法將提交提交回去,我必須提交到一個完全不同的分支https://my.company.com/13179069/WebApp/tree/DEV ,其中13179069是我在工作場所的ID。 我嘗試使用GitHub桌面工具執行此操作,但無濟於事。

我認為您無法提交到master分支意味着您沒有這樣做的權限。

(i)在這種情況下,您應該首先在https://my.comapny.com/appid/WebApp/tree/DEV上創建存儲庫的分支。 假設13179069也是您的GitHub ID,您創建的派生將具有URL https://my.comapny.com/13179069/WebApp/tree/DEV

是有關如何創建fork以及如何創建fork的本地克隆的文檔。

(ii)接下來,您可以使用git checkout -b <new_branch_name>在fork上創建一個分支,然后進行所有需要進行的更改。 也許只是復制粘貼當前未分支的倉庫中已更改的文件。

(iii)完成此操作后,執行git status檢查是否更改了所有必需的文件,然后git add <file_names>其中一些文件,或者git add . 如果所有更改的文件都屬於一個提交。

(iv)現在,使用您的消息和/或簽名進行git commit 如果您有更多提交,請通過執行(iii)再次登台

(v)現在,您應該設置上游和原點。 通過遵循此操作

完成所有這些操作后,只需將分支推送到遠程原點,並通過git push -f origin <new_branch_name> ,然后按照此命令將“ Pull Request”創建到原始存儲庫即可。

具有合並權限的人將把您的提交合並到原始存儲庫的母版中。 希望對您有所幫助,請讓我知道是否需要任何澄清。

您會混淆一些事情。 https://my.company.com/appid/WebApp/tree/DEV不是“分支”。 它是遠程存儲庫的URL。 tree/DEV看起來是多余的。 該存儲庫可以包含多個分支,並且可以通過公開。 HTTP(看起來像在這里完成的一樣)。 從url看來,完成開發的分支稱為DEV 既然你說你的東西,這是令人困惑的master 您可以使用git branch命令仔細檢查嗎? 讓我重申一下您的情況,以確保我做對了。

  1. 您已從存儲庫克隆(我們稱其為origin )。
  2. 在分支X上進行了一些更改(我認為它是DEV但您說它是master )。
  3. 無法將更新的X推回origin
  4. 想要將X推送到其他存儲庫https://my.company.com/appid/WebApp/tree/DEV (我們稱其為mine )。

如果這是您所需要的,則可以輕松解決您的問題。 所有你需要做的是增加mine作為一個新的遠程使用

  git remote add mine https://my.company.com/13179069/WebApp/tree/DEV

現在您可以像這樣將分支推到mine

  git push mine X

這會將同一個分支推到另一個遙控器上

如果是OTOH,您確實希望按照問題標題中的說明(但我對此表示懷疑)將提交從一個分支移動到另一個分支 ,則需要執行以下操作。

讓我們假設原始存儲庫看起來像從源克隆時那樣。 C4是當前為master的提交。

C1 - C2 - C3 - C4 (master)

現在您做了一些額外的提交,您的本地存儲庫如下所示

C1 - C2 - C3 - C4 - C5 - C6 - C7(master)

糟糕! 這3個額外的提交應該已經進入了另一個分支。 首先,請在此時創建一​​個分支dev

git branch dev

現在,看起來像這樣

C1 - C2 - C3 - C4 - C5 - C6 - C7(master, dev)

現在,我們將使master移回原點位置(C4)。

git reset --hard master C4

現在,看起來像這樣

C1 - C2 - C3 - C4(master) - C5 - C6 - C7(dev)

現在,您可以將自己的存儲庫添加為新的遠程存儲庫(例如mine ),然后像上面提到的那樣將dev推送到該存儲庫。

答案可能是特定的配置(github實例),具體取決於您的工作流程,但是聽起來的方式,在您的情況下,您應該將https://my.company.com/appid/WebApp/tree/DEV叉入您自己的配置中回購。 克隆該文件,執行您的工作,提交,將您的更改推送到github中的存儲庫中,然后對從您的存儲庫到“主”存儲庫的這些更改發出請求請求。

旁注。 原始問題中的術語似乎有些混亂。 git是分布式SCM。 您將提交到本地克隆(除非您已放置了額外的鈎子,否則無論您的遙控器是什么,它都很有可能起作用)。 我從遠程回購中提取提交並將其推送到遠程回購中,這很可能是您無法執行的步驟,因為您的工作流希望您經過額外的一跳。

您似乎沒有權限提交master分支。 但是正如您所寫的那樣,您已經在master分支中做了很多修改,現在您想在另一個分支中進行提交。

您不必再次編寫代碼。 請執行以下步驟,可能會對您有所幫助。

  1. 使用以下命令存儲當前更改。

    git存儲

    上面的命令會將修改后的代碼存儲在臨時內存中。

  2. 使用以下命令簽出到新分支。

    git結帳

  3. 使用以下命令將更改應用於當前分支。

    git stash適用

    上面的命令將從臨時內存中獲取修改后的代碼,並應用於當前分支。

注意 :確保您具有在分支中提交代碼的適當權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM