[英]git push all branches from one remote to another remote
我有兩個遠程:上游和原點。 上游是我無法推動的。 origin 是我自己的倉庫。 如何從上游獲取所有分支,然后將它們推送到原點? 我試過:
git fetch upstream
git push --all origin
但它不起作用。
您可能想嘗試使用--mirror
選項克隆上游存儲庫,然后也使用--mirror
選項推送到新的遠程--mirror
您將擁有以下流程:
git clone <upstream-repo-url/repo.git> --mirror
cd <repo>
git remote add <your-remote-name> <your-remote-url/repo.git>
git push <your-remote-name> --mirror
⚠ 使用push --mirror
--mirror 時要非常小心,因為它會刪除您的<your-remote-name>
上的分支
我只需要將一個存儲庫從 Bitbucket 復制到 GitHub,這些步驟假設您的遠程名為 origin,所有分支和標簽都將被復制:
git remote add neworigin url-to-new-remote
git push neworigin --tags refs/remotes/origin/*:refs/heads/*
這樣做的好處是您的工作副本中的文件不會被修改。
從一個(裸)存儲庫克隆到另一個(裸)存儲庫並采用所有分支(而不僅僅是檢出的分支)的一個完整答案是克隆本地裸存儲庫作為中介。 然后將所有分支作為克隆的一部分拉出,並且 git push --all 將全部推送它們。 在 Windows 上從 github 到 gitlab 執行的示例:
結果:25 個分支推送到 gitlab
請注意,所有分支都不需要 git checkout 並且對裸倉庫毫無意義。
當您git push <REMOTE> --all
或git push <REMOTE> --tags
所有分支和標簽都將從您的本地歷史記錄推送到 REMOTE。 這樣,如果您想push
所有分支和標簽從遠程(即origin )(不僅是您的本地歷史記錄) push
送到另一個遠程(即upstream ),請執行以下過程:
git fetch --prune
git branch -r | grep -v '\\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git remote add upstream <the-url-path-of-a-remote.git>
push
所有分支和標簽push
送到新的遠程:
git push --all upstream git push --tags upstream
git fetch --prune
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git remote add upstream <the-url-path-of-a-remote.git>
git push --all upstream
git push --tags upstream
您可以將以下命令作為 bash 腳本運行,其中第一個輸入是您現有的源代碼庫,第二個輸入是您的目標代碼庫。
mkdir migrate
git clone $1 migrate
cd migrate
git fetch origin
git remote add new-origin $2
git push -u new-origin --all
git push new-origin --tags
git remote set-head origin -d
git push new-origin refs/remotes/origin/*:refs/heads/*
這假設您已經創建了目標存儲庫。
希望這有幫助:
git remote add your-new-origin url-to-repo/repo.git
git push --all your-new-origin //pushes all branches
git push --tags your-new-origin //pushes all tags
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.