2010-04-26 63 views

Trả lời

8

Chỉ:

git clone $url 

Nghiêm túc! Đó là cách tốt nhất.

Bạn có thể thực hiện tất cả các loại git resetgit branch lệnh để di chuyển, nhưng mục đích duy nhất là giữ cam kết của bạn ở đâu đó trong kho lưu trữ cục bộ để tham khảo trong tương lai. Nếu đó là mục tiêu, chỉ cần giữ nguyên toàn bộ kho lưu trữ và tái sao chép nguồn gốc.

Để chấp nhận tất cả những thay đổi trên chỉ là một chi nhánh, foo:

git checkout foo 
    git fetch origin +refs/heads/foo:refs/remotes/origin/foo 
    git reset refs/remotes/origin/foo 

foo bây giờ sẽ chỉ đồng cam kết như foo trên origin. Nếu bạn muốn xóa các tệp trong thư mục làm việc của mình, hãy thêm --hard vào git reset. Nếu bạn muốn hợp nhất trước, hãy thay thế fetch bằng pull.

Bạn có thể có một loạt các cam kết lơ lửng trong repo địa phương của bạn, mà git có thể dọn dẹp một ngày nào đó, nhưng trong một thời gian bạn vẫn có thể truy cập chúng thông qua reflog.

+0

Điều cần biết :-) –

+1

Có một vấn đề lớn với điều này: Tôi có rất nhiều và nhiều * bổ sung * cho cây làm việc. Tôi chỉ muốn chấp nhận/áp dụng tất cả các thay đổi đã được thực hiện trong điều khiển từ xa. Tôi không muốn vứt bỏ tất cả các trạng thái của công việc hiện tại của tôi. Vì vậy, điều này không hoạt động như một câu trả lời cho tôi. – rfay

+0

@Randy, Đó là một câu hỏi khác, nhưng là một câu hỏi hay. – cdunn2001

0

Đây là cách tiếp cận tôi đã sử dụng, điều này có vẻ ổn. Tôi có một chi nhánh được gọi là "của họ" trong đó có phiên bản mới của tất cả mọi thứ trong điều khiển từ xa. Một phiên bản có tên "của chúng tôi" là tác phẩm của tôi dựa trên phiên bản dài của họ, có quá nhiều thay đổi không liên quan nhưng nhiều bổ sung (thư mục con mới của trang/tất cả) mà tôi muốn giữ lại.

git checkout ours 
git checkout theirs -- *.php *.txt *.config modules themes includes scripts 
git commit -m "New version with all new key files from 'theirs'" 

Miễn là tôi có danh sách tệp và thư mục trong lần thanh toán thứ hai chính xác, điều này sẽ ổn.

Nếu tôi muốn lịch sử dựa trên nhánh "của họ", tôi có thể muốn làm điều này theo cách khác.

+0

Randy, Bạn có thể chỉnh sửa nhận xét đó, sau đó thụt lề từng dòng mã bằng 8 dấu cách (có thể là 4?) Để hiển thị ý nghĩa của bạn tốt hơn. '--ours' và '--theirs' là các cờ hợp lệ, vì vậy bạn nên sử dụng các từ khác nhau cho các tên chi nhánh minh họa. Nhưng có, chỉ định đường dẫn sẽ cho phép anh ta để có được chỉ những tập tin. – cdunn2001

5

Hoặc:

git status | grep "both " | cut -f2 | cut -f11 -d" " | xargs git checkout --theirs 
git status | grep "both " | cut -f2 | cut -f11 -d" " | xargs git add 

mà lực lượng chấp nhận tất cả các file từ xa xung đột.

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