Git hoàn tác nỗ lực hợp nhất


90

Tôi có thư mục làm việc (# 1) có thư mục nhà cung cấp (# 2) trong đó. Có một phần phụ thuộc mà tôi muốn kéo theo cách thủ công mà không cần trình soạn nhạc (phiên bản php của npm / gem). Tôi đang làm việc ở # 1, chưa lưu / cam kết các thay đổi, khi tôi quyết định cập nhật thư viện trong # 2. Tôi đã điều hướng đến nhà cung cấp / tên tôi và đã làm git pull repository.

Thật không may, nó bắt đầu kéo và hợp nhất thành # 1, thay vì tạo thư mục mới trong thư mục của nhà cung cấp.

Bây giờ tôi có:

  • # 1 thư mục với các thay đổi của tôi
  • # 1 thư mục chứa các tệp tôi không muốn từ kho lưu trữ sai
  • # 1 xung đột hợp nhất chẳng hạn như composer.json, Readme.md ... (các tệp chung)

Tôi muốn "hoàn tác" lần kéo git cuối cùng này mà không làm mất bất kỳ thay đổi nào mà tôi đã thực hiện đối với thư mục # 1. Tôi có thể làm cái này như thế nào?


Git ngăn kéo hoặc hợp nhất nếu có những thay đổi chưa được cam kết, bạn có chắc đây là những gì đã được xử lý?
CharlesB

1
@CharlesB Nó đã hủy hợp nhất, các dự án không được hợp nhất bằng máy bay phản lực. Tôi không biết gì về git ngăn chặn trước khi kéo ...
ewooycom

Câu trả lời:


170

git merge --abort có thể là những gì bạn đang tìm kiếm.


6
Trong các phiên bản git cũ hơn: git reset --merge
razz0

Nó hoạt động, nhưng không có ích gì cho bạn biết. Đừng một git statusđể confirm.-
aliteralmind

17

Git hiện đại:

git merge --abort

Lớn hơn:

git reset --merge

Trường cũ (cảnh báo: sẽ hủy tất cả các thay đổi cục bộ của bạn):

git reset --hard

Nhưng trên thực tế, điều đáng chú ý git merge --abortlà chỉ tương đương với git reset --mergecho rằng MERGE_HEADhiện tại. Điều này có thể được đọc trong git help for merge command.

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.

Sau khi hợp nhất không thành công, khi không có MERGE_HEAD, quá trình hợp nhất không thành công có thể được hoàn tác với git reset --mergenhưng không nhất thiết với git merge --abort, vì vậy chúng không chỉ là cú pháp cũ và mới cho cùng một thứ . Cá nhân tôi thấy git reset --mergehữu ích hơn nhiều trong công việc hàng ngày.


2

Với Git 2.10 (Q3 2016), bạn sẽ biết phải làm gì, vì git statussẽ đề xuất git merge --aborttùy chọn.

Xem cam kết b0a61ab (21 tháng 7 năm 2016) bởi Matthieu Moy ( moy) .
(Hợp nhất bởi Junio ​​C Hamano - gitster- in cam kết 5a2f4d3 , 03/08/2016)

status: suggest ' git merge --abort' khi thích hợp

Chúng tôi đã đề xuất ' git rebase --abort' trong một rebase xung đột.
Tương tự, hãy đề xuất ' git merge --abort' trong khi giải quyết xung đột trên ' git merge'.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.