簡體   English   中英

Git和SVN,無歷史記錄

[英]Git and SVN and no history

我有個問題。

我將Git與SVN存儲庫一起使用。 但是有些人更改了SVN存儲庫(他們創建了一個新的存儲庫,只需將項目的所有文件都放入其中)。 他們不保存舊存儲庫的SVN歷史記錄。

我不知道如何將Git與新的SVN存儲庫掛鈎以便提交修改。

謝謝你的幫助

編輯

終於我找到了解決方案。

所以我有一個本地存儲庫Git(在我的本地目錄/ home / oldSVNrepo中),它已連接到舊的SVN存儲庫。 新舊SVN存儲庫之間沒有通用提交。

我應該做什么:

我必須在新的SVN存儲庫中提交我的修改

我所做的:

1-我創建一個本地目錄(例如mkdir / tmp / myNewRepo)2-在這個新目錄中,我克隆了新的SVN存儲庫

cd /tmp/myNewRepo git svn clone [UrlOfNewSVNrepository]/myproject -T trunk -b branches -t tags --username XXX cd myproject git checkout -b dev git checkout master

我創建一個新分支,以便合並SVN信息庫的新更新,並從遠程信息庫提交中推送。 (如果分支處於活動狀態,我們將無法進行回購)

3-在OLD SVN的本地Git存儲庫中,添加一個遠程存儲庫:新的Git存儲庫

`cd / home / oldSVNrepo git remote add neworigin -t dev / tmp / myNewRepo / myproject

4-我從遠程存儲庫中獲取數據

git fetch neworigin/dev

5-我在舊的Git存儲庫中創建了一個新分支(在提交所有修改之前)

git checkout -b branchForMerge

6-我確實在遠程neworigin和branchForMerge之間合並

git merge neworigin/dev

當我進行合並時,Git給我一個警告:沒有常見的提交。 (實際上,就我而言,我在合並之前使用git-mv,因為myproject的舊目錄與新項目目錄不同)

7-我解決沖突並提交

8-我在neworigin上進行修改

git push neworigin branchForMerge:dev

9-現在在新的Git存儲庫(/ tmp / myNewRepo)的分支開發中,我可以輕松地將修改發送到新的SVN存儲庫

因此,我只是創建了一個新的本地Git存儲庫,該存儲庫連接到新的SVN存儲庫,並在舊的Git存儲庫中添加了一個遠程分支,以便傳輸我的本地提交。 我不知道這是否是一個好的解決方案,但對我有用。

謝謝吉特

謝謝Zeeker

您可以通過編輯<repository>/.git文件夾中的config文件,在git存儲庫中設置第二個svn遠程。

它可能看起來像這樣(第二個是新的存儲庫):

...
[svn-remote "svn"]
        url = https://url.to.the.first.svn.repository
        fetch = :refs/remotes/git-svn
[svn-remote "new-svn"]
        url = https://url.to.the.second.svn.repository
        fetch = :refs/remotes/new-git-svn
...

您可以獲取新的存儲庫git svn fetch new-svn ; 這將導致遠程分支new-git-svn與新存儲庫保持最新。
現在,你應該能夠輕松地rebase你自己的修改到新的new-git-svn ,所以你可以把它們提交給信息庫。

希望能有所幫助。

暫無
暫無

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

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