Một cách bạn có thể tạm thời xóa đối tượng địa lý của mình trước lịch sử repo Git của bạn là thực hiện cam kết xóa đối tượng địa lý. Sau đó, khi bạn muốn thêm lại tính năng này, chỉ cần revert the commit đã loại bỏ tính năng này. Điều này sẽ làm một bản vá đảo ngược, nghĩa là nó sẽ áp dụng những thay đổi theo hướng ngược lại, sẽ có hiệu quả lại thêm tính năng:
git revert <sha of commit that removed the feature>
Nếu bạn muốn chắc chắn rằng bạn có thể dễ dàng thêm lại các tính năng sau bởi đồng bộ hóa với các thay đổi đối với mã trong thời gian chờ đợi, bạn có thể tạo chi nhánh riêng biệt ngay lập tức sau khi xóa nó và sau đó xử lý nhánh đó giống như bất kỳ chi nhánh tính năng nào khác và giữ nó đồng bộ bằng cách thường xuyên đổi lại mã này với master
(hoặc chi nhánh develop
, nếu đó là cách bạn muốn thực hiện), giải quyết xung đột khi bạn thực hiện. Vì vậy, về cơ bản, bạn sẽ muốn làm một cái gì đó như thế này (nó sẽ không quan trọng nhiều nếu bạn đang sử dụng một chiến lược phân nhánh GitHub Flow hoặc Git Flow, cả hai đều sử dụng khái niệm về các chi nhánh tính năng mà cuối cùng được sáp nhập vào một chính- . dòng phát triển Để đơn giản, tôi sẽ sử dụng GitHub dòng chảy trong ví dụ này):
# On master branch
git commit -m "Remove feature X" # Creates commit 1234567...
# Now make feature branch
git checkout -b saved-feature
# Immediately put the feature back in the feature branch
git revert 1234567
# When you want to sync branch with master, just use rebase.
# Rebase allows you to sync frequently, since it doesn't
# leave behind a bunch of merge commits.
#
# From the feature branch:
git rebase master # Resolve any conflicts as needed.
# N commits later, you decide it's time to merge the feature
# back in. You can use fast-forward or non-fast-forward merge,
# it's up to you.
#
# Using fast-forward merge with master checked out (assuming
# feature branch was just rebased onto master):
git merge saved-feature
# Or forcing a merge commit, if that's what you want:
git merge --no-ff saved-feature
Giả sử bạn đã giữ saved-feature
đồng bộ thường xuyên với master
(hoặc develop
, nếu đó là những gì bạn sử dụng), giải quyết xung đột như bạn đi, bạn sẽ không gặp vấn đề gì khi hợp nhất lại tính năng này.
Tài liệu tham khảo:
Nguồn
2013-07-10 03:56:22
thể trùng lặp của [Làm thế nào tôi có thể di chuyển một tập hợp các cam kết từ tổng thể để một nhánh riêng biệt?] (Http://stackoverflow.com/questions/1178553/how-can-i-move-a-set-of-commits-from-master-to-a-separate-branch) – RyPeck
Không phải là câu trả lời, nhưng ... tôi đang làm việc với git trong hai năm và không thấy tình huống như vậy. Các nhánh tính năng chỉ được hợp nhất thành 'development' /' master'/bất kỳ nhánh 'main' nào khác khi 100% sẵn sàng. Không được có trường hợp nào khi bạn có mã tính năng của bạn trong bản chính, nhưng nó chưa sẵn sàng hoặc chưa được kiểm tra. – madhead
Bạn có thể theo dõi việc xóa mã. Mức độ cam kết của bạn như thế nào? Các bạn có tự tin rằng bạn có thể xóa tính năng này thông qua các cam kết không? Điều đó rất quan trọng để quyết định chiến lược. – usumoio