簡體   English   中英

我可以使用本地跟蹤git-svn分支恢復SVN存儲庫中丟失的提交嗎?

[英]Can I recover lost commits in a SVN repository using a local tracking git-svn branch?

我使用git-svn跟蹤的SVN repo最近被破壞並恢復了備份。 然而,在復蘇中失去了一周的承諾。 是否有可能在我的本地git repo上使用git-svn dcommit恢復那些丟失的提交? 使用SVN中最后恢復的提交的SHA1運行git-svn dcommit是否足夠? 例如。

> svn info http://tracked-svn/trunk | sed -n "s/Revision: //p"
252
> git log --grep="git-svn-id:.*@252" --format=oneline | cut -f1 -d" "
55bb5c9cbb5fe11a90ec2e9e1e0c7c502908cf9a
> git svn dcommit 55bb5c9cbb5fe11a90ec2e9e1e0c7c502908cf9a

或者git-svn-id是否需要從預期的提交中刪除?

我嘗試使用--dry-run但無法判斷它是否會嘗試提交所有提交:

> git svn dcommit --verbose --dry-run 55bb5c9cbb5fe11a90ec2e9e1e0c7c502908cf9a
Committing to http://tracked-svn/trunk ...
dcommitted on a detached HEAD because you gave a revision argument.
The rewritten commit is: 55bb5c9cbb5fe11a90ec2e9e1e0c7c502908cf9a

謝謝你的幫助。

以下是我實現我想要的方式:

  1. 在一個新的git-svn repo中重新克隆了http://tracked-svn/trunk
  2. 添加了我的舊git-svn repo作為新鮮倉庫的遙控器。 (例如git remote add -f up-to-date /path/to/repo
  3. git merge remotes/up-to-date/master
  4. git svn dcommit

重新使用我的舊回購沒有錯誤,並且dcommit按預期工作。

這可能不是恢復提交的最佳方法,但它讓我得到了我想要的東西。

不是一個完整的答案,但該線程可能會解釋一下錯誤信息:

' git svn dcommit '采用可選的修訂版本參數,但它的含義相當可怕。
它完全忽略了HEAD的當前狀態,只關注SVN和$rev之間的$rev
如果HEAD附加到$ branch,則分支在此過程中丟失所有提交$ rev .. $ branch。

考慮到' git svn dcommit HEAD^ '具有直觀含義“ dcommit除了最后一個之外我的分支上的所有更改”,我們更改了修訂參數的含義。
git-svn暫時檢查$rev的工作,這意味着:

  • 如果指定了分支,則該分支( 不是 HEAD )作為dcommit的一部分進行dcommit
  • 如果指定了其他一些修訂,如示例所示,所有工作都在分離的HEAD上進行,並且不會影響任何分支。

我不確定該補丁是否已經集成在Git版本中,但是如果你測試你的dcommit,請確保在dcommit之后git branch -b ,用一個分支引用當前的HEAD。
它會在SVN端工作嗎? 我不知道。

我發現這篇文章揭示了detached_head情況

我一直在處理或多或少相同的問題,這就是我最終做的事情:

  • 首先,始終確保您使用的是有效的分支git branch
  • 如果你看到(no branch) (帶星號表示“當前分支”),這意味着你有一個分離的頭
  • 檢查分離頭git co -b [BRANCH NAME] --track 使用--track選項, 我認為它跟蹤git-svn HEAD,因此將這個新分支重新附加到HEAD。
  • 繼續使用git svn rebase/dcommit命令。

這可能很糟糕,但這似乎也有所幫助 - 我刪除了master分支,然后在執行git svn rebase ,它似乎自動添加回master分支。

此外,我查看了一個文件的日志,似乎一旦我做了一個git svn dcommit ,所有的git git svn dcommit都是完整的,從我的分支開始變得瘋狂,我正在盡我所能讓它正確地恢復。

我不是100%肯定這是完全正確的,但我似乎對我有用。

暫無
暫無

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

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