2012-05-24 28 views
5

Tôi đang sử dụng git-svn và tôi muốn cập nhật SVN HEAD mới nhất.Làm cách nào để lấy SVN HEAD mới nhất trong git-svn?

Khi tôi gõ git pull nó nói:

fatal: No remote repository specified. Please, specify either a URL or a 
remote name from which new revisions should be fetched. 

tôi đọc here rằng tôi nên làm điều gì đó như:

git checkout -b real-trunk remotes/trunk 

Nhưng tôi không hiểu các lệnh. remote-trunk là gì? Trong mọi trường hợp, git đưa ra một lỗi:

fatal: git checkout: updating paths is incompatible with switching branches. 
Did you intend to checkout 'remotes/trunk' which can not be resolved as commit? 

Đây là tôi .git/config:

$ cat .git/config 
[core] 
     repositoryformatversion = 0 
     filemode = true 
     bare = false 
     logallrefupdates = true 
[svn-remote "svn"] 
     url = http://name.xyz.com/svn/trunk/project 
     fetch = :refs/remotes/git-svn 

Ngoài ra, bất cứ ai có thể cho tôi biết làm thế nào để phục hồi tất cả các thay đổi mà tôi thực hiện trong thanh toán git của tôi? Tôi muốn trở lại phiên bản SVN HEAD mới.

Trả lời

5

Đối với việc cập nhật thay vì "git pull":

git svn rebase 

Tôi đoán bạn đã có refs/heads/thạc sĩ tương ứng của bạn refs/điều khiển từ xa/git-svn, vì vậy làm việc với nó, bạn không cần "thực -Thân cây".

"git checkout" không thực hiện bất kỳ thay đổi nào, nó chỉ thay đổi nhánh hiện tại của bạn. Bạn có thể thay đổi nhánh hiện tại của bạn trở lại nhưng sử dụng "git checkout your_previous_commit_or_branch".

"git checkout -b branchname" tạo chi nhánh mới. Để xóa một nhánh sử dụng "git branch -D branchname".

+0

Cảm ơn! Bây giờ một vấn đề nữa: Tôi có một vài sửa đổi cục bộ mà tôi muốn hoàn nguyên trước. Bởi vì nếu tôi làm 'git svn rebase' nó nói: ' file.cpp: cần cập nhật ' 'update-index --refresh: lệnh trả về lỗi: 1' – Frank

+1

Bạn luôn luôn phải có một cây làm việc sạch trước khi" git svn rebase ", đó là do thiết kế. Thông thường, tôi cam kết các thay đổi cục bộ của mình và chỉ sau đó mới nhận được các thay đổi. Sau đó, tôi có thể sửa đổi cam kết cục bộ của mình (bằng "git commit --amend"). Một số người sử dụng "git stash" cho điều đó. –

+0

Cảm ơn! Điều đó hiệu quả. – Frank

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