GIT ghi đè lên chi nhánh với chủ


33

Tôi có một nhánh dev cũ đã hoàn toàn lỗi thời. Tôi không muốn xóa nó nhưng tôi muốn thay thế hoàn toàn nội dung của nó bằng nhánh chính. Có nghĩa là tôi muốn dev_branch = master

Tôi đã thử:

git merge -s ours dev_branch

Không hoạt động mặc dù ...

Câu trả lời:


53

Nếu bạn muốn tất cả các thay đổi từ mastertrong dev_branch, thì:

git checkout dev_branch
git reset --hard master

Điều này chỉ hoạt động nếu người khác không nhân bản kho lưu trữ.

Nếu bạn đã dev_branchđẩy đến một điều khiển từ xa, bạn phải làm:

git push --force

Buộc-đẩy vào điều khiển từ xa. Cảnh báo: Điều này sẽ phá vỡ lịch sử của chi nhánh cho những người đã nhân bản nó trước đó! Sau đó, những người khác sẽ phải làm một git pull --rebasetrên dev_branchđể có được những thay đổi này.


Bạn cũng có thể đổi tên nhánh dev thành một cái gì đó cũ và sau đó tạo một nhánh mới từ mastercùng tên:

git branch -m dev_branch old_dev_branch
git branch -m master dev_branch

Hoặc, sử dụng ourschiến lược - không chắc tại sao nó không hiệu quả với bạn:

git checkout master
git merge -s ours dev_branch
git checkout dev_branch
git merge master

Với giải pháp đổi tên, tôi nghĩ bạn sẽ thấy rằng bây giờ bạn không thể dev_branchchuyển sang nguồn gốc (nếu có) và bạn cũng sẽ không còn masterchi nhánh tại địa phương nữa.
Aidan

Cảm ơn @slhck! Vì một số lý do, nhánh sân khấu của tôi không được cập nhật sau khi thực hiện hợp nhất bình thường. Nó tiếp tục nói rằng chi nhánh sân khấu của tôi đã được cập nhật. Sử dụng chiến lược "của chúng ta" đã giải quyết điều này cho tôi.
Slick Shinobi

của chúng tôi sẽ chỉ ảnh hưởng đến các phần xung đột, nhưng anh ấy muốn làm mới hoàn toàn chi nhánh, không chỉ các xung đột!? (đây là ít nhất những gì tôi cần làm và tại sao tôi tìm thấy Q này) - Tôi sẽ đổi tên!
Martin Meeser
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.