2010-03-29 38 views

Trả lời

7

Giả sử chúng ta có một kho xương Subversion với trống trunk/, branches/, và tags/:

/tmp$ git svn clone -s file:///tmp/svn-repo/ git-svn-repo 
Initialized empty Git repository in /tmp/git-svn-repo/.git/ 
r1 = 80bdcfc0cf248b74b914a1b5f99ab89fb4e31b6c (refs/remotes/trunk) 
Checked out HEAD: 
    file:///tmp/svn-repo/trunk r1 

/tmp$ cd git-svn-repo/ 

/tmp/git-svn-repo$ git svn branch my-branch 
Copying file:///tmp/svn-repo/trunk at r1 to file:///tmp/svn-repo/branches/my-branch... 
Found possible branch point: file:///tmp/svn-repo/trunk => file:///tmp/svn-repo/branches/my-branch, 1 
Found branch parent: (refs/remotes/my-branch) 80bdcfc0cf248b74b914a1b5f99ab89fb4e31b6c 
Following parent with do_switch 
Successfully followed parent 
r2 = 56150bbd9d3aec94972ff46d030e30ec726595ab (refs/remotes/my-branch)

Lời giải thích dưới đây sẽ chuyển đổi qua lại-và-ra giữa hai quan điểm của kho cùng, một Subversion bản sao làm việc toàn bộ repo (không chỉ trunk) và một bản sao git-svn. Để rõ ràng, tiền tố của mỗi dấu nhắc trình bao sẽ chỉ ra thư mục hiện tại.

Về phía svn, bây giờ bạn sẽ thấy

/tmp/svn-repo-wc$ svn up 
A branches/my-branch 
Updated to revision 2.

Bạn cũng sẽ thấy các chi nhánh mới ở phía bên git:

/tmp/git-svn-repo$ git branch -r 
    my-branch 
    trunk

Để cam kết chi nhánh mới được tạo ra, đầu tiên chuyển sang nó:

/tmp/git-svn-repo$ git reset --hard remotes/my-branch 
HEAD is now at 2c9bef2 Create branch my-branch

Tiếp theo, chúng ta sẽ tạo một git giả cam kết

/tmp/git-svn-repo$ touch on-my-branch 
/tmp/git-svn-repo$ git add on-my-branch 
/tmp/git-svn-repo$ git commit -m 'First commit to my-branch' 
[master b94a0eb] First commit to my-branch 
0 files changed, 0 insertions(+), 0 deletions(-) 
create mode 100644 on-my-branch

và cuối cùng gửi cho Subversion:

/tmp/git-svn-repo$ git svn dcommit 
Committing to file:///tmp/svn-repo/branches/my-branch ... 
    A on-my-branch 
Committed r3 
    A on-my-branch 
r3 = d3c5ba3e03e5cdee96f470ff4c9898eb7c523ed8 (refs/remotes/my-branch) 
No changes between current HEAD and refs/remotes/my-branch 
Resetting to the latest refs/remotes/my-branch

Subversion lao động bản sao cho chúng ta xác nhận:

/tmp/svn-repo-wc$ svn up 
A branches/my-branch/on-my-branch 
Updated to revision 3.
+0

theo quy định trên http://stackoverflow.com/questions/266395/ git-svn-how-do-i-tạo-a-new-svn-chi nhánh-qua-git bây giờ bạn có thể chuyển sang nhánh svn thay vì thực hiện đặt lại --hard: 'git checkout -b my-local -nhập nhánh từ xa ’ ' # edit' 'git commit' 'git svn dcommit' ' git checkout master # để hoạt động lại trên thân cây' – jackbravo

Các vấn đề liên quan