簡體   English   中英

合並提交並推送到分叉的倉庫

[英]Combine commits and push to forked repo

我有一個回購(bitbucket.org/mine/project),我從另一個回購(client.com/theirs/project)分叉。 我做了一堆提交,現在我想把它推回他們的倉庫。 我知道我可以將它推送到上游倉庫,但它似乎包含所有提交。 我目前的解決方法是我克隆了兩個項目並將文件從我的 repo 工作目錄復制到他們的 repo 工作目錄並提交。 絕對不理想。 當我推送但保持歷史完整時,如何將我的提交壓縮為單個提交?

試圖說明問題:

Client       ---- forked ------>      Bitbucket

their/project                         mine/project

commit #A                             commit #A
commit #B                             commit #B
commit #C                             commit #C

                                  |-  commit #1
                                  |   commit #2
                                  |   commit #3
commit #D    <----- how? ------   |-  commit #4   // I want to keep my commits

參考:

https://help.github.com/articles/merging-an-upstream-repository-into-your-fork/#platform-mac

在推送 Git 之前合並多個提交

我不確定是否有任何直接的方法可以做到這一點,但我可以建議您解決:

收回您當地的分支機構。 假設您的分支是主分支,而您的后分支名稱類似於主備份。 您可以使用以下 git 命令。

git branch master-backup

如果你在同一個分支。 或者你也可以使用

git branch master-backup master

squash your commit點擊鏈接 現在分支通過組合所有提交具有單個提交。

git push origin master (通過單次提交將壓縮后的更改推送到上游)

git reset --hard master-backup (將您的舊提交返回給本地主機)

their/project Github 存儲庫的所有者總是可以通過拉取請求 UI 選擇Squash and Merge來自您的分支的提交來為您執行此操作:

在此處輸入圖像描述

對我有用的是使用git rebase

您可以使用git rebase -i HEAD~3來做到這一點,其中 '3' 是您將開始修改的 HEAD 位置...在您的示例中將是commit #1 ,因為您會將所有提交合並到第一個提交中,所以你可以這樣做:

git rebase -i HEAD~4 //Since you have 4 new commits done

然后你會看到類似的東西:

pick commit#1
pick commit#2
pick commit#3
pick commit#4

您還將看到下面的說明來進行變基。 因此,您應該將其更改為:

pick commit#1
squash commit#2
squash commit#3
squash commit#4

當你應用這個時,你還需要根據需要更改提交消息,因此你只能更改第一個提交消息,並刪除其他提交消息。 最后,您將只有 commit#1 以及其他進一步提交的所有更改。

要將您的 commit#1 推送到 fork 存儲庫,請執行以下操作:

git push origin <branch_name>

您可以在此處使用 git reset

git reset --soft HEAD~N (N 是提交次數)。

如果您執行 git status,您將看到您更改的所有文件為綠色

再次執行 git 重置。 所以你會看到所有的文件都是紅色的。 並且分支將與 master 一起更新

現在你可以做一個 git add 。 和 git commit -m ""

這將在一次提交中提供所有更改

暫無
暫無

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

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