2013-10-11 33 views
2

所以在理想的世界裏,當我開始這個項目時,我會克隆一個來源,然後對我的回購進行所有更改。當主項目更新時,我可以將這些更改拖入我的回購。 (這是一種方式的流量,沒有推動。)Git拉進一個未追蹤的回購副本

但是,當我開始時,我沒有克隆,只是簡單地下載了一個發佈的ZIP代碼,解壓縮它,然後做了一個git init。自那之後,我對代碼的這一副本進行了所有更改。但是,主代碼庫現在已經更新,但由於我的副本不是合併,而是我自己的代碼庫,所以我無法將主代碼的更改合併到我的代碼中。

有沒有辦法從主代碼中獲取這些更改到我的回購中,而無需重新開始?

回答

2

您可以通過重新設置遠程更改頂部的私有存儲庫更改來修復存儲庫。

  • 向包含正確的遠程git URL的存儲庫添加一個新遠程。
  • 從該遠程獲取所有正確的遠程提交到您自己的存儲庫
  • 使用git rebase移植您提交的遠程提交之上。
  • 將您的分支合併到遠程分支中。

這將是這樣的:

cd $your_git_repository 
git remote add origin $URL 
git fetch origin 
git branch -m my_branch 
git rebase --onto $base_commit $your_first_commit my_branch 
git merge $remote_branch 
git log --graph --decorate --oneline 

其中$base_commit是提交與您在第一時間下載的壓縮,並且$your_first_commit被提交你COMMITED提取的ZIP文件。

+0

謝謝:)如果其他人在我的回購工作,這項工作會嗎? (當我說'我的回購'時,它實際上是在我們許多人承諾的共享服務器上。) – ACarter

+2

重新激活創建新的提交。假設您正在討論一箇中央存儲庫,並且有幾個人正在使用它的專用克隆,那麼您需要所有這些人推送其本地更改並刪除其本地存儲庫。重新綁定後,他們需要新的中央存儲庫克隆。這應該導致完全相同的內容,但具有不同的歷史。請注意,舊版本庫的提交不再有效,如果有人碰巧推舊提交到新版本庫,會發生奇怪的事情。 – michas

0

最簡單的方法 - 將最新版本的代碼克隆到folderA中。假設您正在解壓縮的源文件中工作,請參閱folderB。將folderB內容複製到folderA。提交更改。推!

+1

通過這種方式,您將保存內容,但會丟失所有您自己的提交。 – michas

+0

-1正如@michas所說的,你會放棄以前的提交歷史 –

+0

@michas - true,但這是最簡單的方法和有效的方法。 – manojlds