2013-05-14 24 views
16

Git có bất kỳ lựa chọn hạt nhân 'pull/checkout' nào để lấy repo không? Tôi không quan tâm đến bất kỳ xung đột nào, tôi không cần bất kỳ công cụ địa phương nào của mình, chỉ muốn hàng hóa để tôi có thể làm việc.git: cho tôi repo, nuke mọi thứ cục bộ, tôi không quan tâm

[sửa] để làm rõ các vấn đề của tôi:

$ git pull 
error: Your local changes to the following files would be overwritten by merge: 

<...files I couldn't care less about...> 

Please, commit your changes or stash them before you can merge. 
error: The following untracked working tree files would be overwritten by merge: 

<...more files I couldn't care less about...> 
+1

'git clean -xdf & git reset --hard & git pull' – vcsjones

+0

liều làm sạch -xdf làm gì? –

+2

@LoganBender 'clean -xdf' xóa tất cả các tệp và thư mục không phải là phiên bản được kiểm soát bởi Git (và không quan tâm nếu chúng thường bị bỏ qua bởi Git) –

Trả lời

12

tốt hơn cho bạn để hiểu được lệnh git khác nhau sau đó chỉ cần tìm một trong những bạn cần "ngay bây giờ" như bạn sẽ đến với tình trạng này nhiều lần và chỉ học từng phần trong khi gầm gừ và đổ lỗi cho git.

EDIT: Tôi đã tiếp tục và thử tất cả các tùy chọn và điều này sẽ làm điều đó. Cảm ơn pauljz trong các ý kiến.

git clean -df # remove untracked files AND directories 
git reset HEAD --hard # revert any uncommitted changes 

Bạn cần tất cả những thứ trên.

tùy chọn khác:

git pull -f # replace local files even if you have unpushed commits. 

hoặc

git reset HEAD --hard # remove unchanged, uncommitted files 
git pull 

hoặc

git clean -f # remove untracked files (uncommitted files) 
git pull 
+0

'git clean -f -d' có lẽ đáng để thêm vào, để xóa các tập tin và thư mục không được theo dõi. – pauljz

+0

clean -f xóa lỗi đầu tiên "lỗi: Các thay đổi cục bộ của bạn đối với các tệp sau sẽ bị ghi đè bằng cách hợp nhất:" nhưng không phải lỗi tệp không được theo dõi –

+0

@LoganBender làm 'git reset --hard', rồi thử' git pull' và nếu điều đó không hoạt động 'git pull -f' –

4

Bạn luôn có thể xóa toàn bộ thư mục của repo hiện tại của bạn, và sau đó tạo ra một cái mới với git clone

+1

Điều này có vẻ đúng với ý tưởng của tôi: cd ..; rm -rf ; git clone

+1

Điều này có thể mất nhiều thời gian tùy thuộc vào kích thước của kết nối repo/internet, khá lãng phí nói chung và là khá nhiều phương pháp "tôi từ bỏ".Người ta nên tìm hiểu các lệnh để thiết lập lại mọi thứ đúng cách. Sau đó, nó được dễ dàng hơn trong thời gian tới bạn cần phải làm điều đó. –

+0

Đây là những gì hiệu quả nhất đối với tôi. Tôi đã thử vô số các lệnh khác được đề xuất ở đây và trong các chủ đề khác, và đây là điều duy nhất làm sáng tỏ những thay đổi "git", nhưng không tồn tại. – Syndog

2

Đôi khi các bước được liệt kê trong câu trả lời khác không có tác dụng, bởi vì [rant redacted]. Trong trường hợp đó, "nuke chiến thuật" tùy chọn của bạn là:

(Nếu cần) thiết lập lại những thay đổi cục bộ không bị giam vì vậy bạn có thể chuyển đổi:

git reset --hard HEAD 

Tạo và chuyển sang một chi nhánh địa phương khác nhau:

git checkout -b tempBranch 

Force xóa (bản sao cục bộ của) chi nhánh với các vấn đề:

git branch -D targetBranch 

Thanh toán và chuyển đổi để một bản sao sạch của chi nhánh mục tiêu từ xa:

git checkout -b targetBranch origin/targetBranch 

Dọn dẹp bằng cách xóa các chi nhánh địa phương tạm thời bạn đã thực hiện:

git branch -D tempBranch 

Nếu điều đó không làm việc, các "nuke chiến lược" lựa chọn là để xóa repo và sao chép lại.

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