Nếu tôi đã thực hiện nhiều tập hợp thay đổi cho một tệp lớn, bạn có thể chia các tập hợp đó thành các cam kết riêng biệt bằng git không?Chia nhỏ nhiều thay đổi thành các cam kết riêng biệt với git?
Trả lời
Bạn muốn git add --patch
, điều này sẽ cho phép bạn chọn những thay đổi nào đối với sân khấu.
Tại sao lại là downvote? git add -i là overkill nếu tất cả những gì bạn muốn là chọn hunks, vì tùy chọn đầu tiên bạn sẽ chọn từ menu -i là 'p' (hoặc 5), vì vậy bạn có thể cũng đã nhảy thẳng vào nó với - vá. –
Thực sự, một downvote khác không có lời giải thích? Nếu bạn tin rằng có điều gì đó sai trái với 'git add --patch', vui lòng có lịch sự để cung cấp giải thích tại sao. –
Tôi nghĩ rằng các downvotes (không phải từ tôi!) Là từ dân gian đã cam kết, nơi mà câu trả lời này sẽ không hoạt động. Câu hỏi không cho biết liệu các thay đổi có được thực hiện hay không. – mikemaccana
Có, bạn có thể - sử dụng git add -i
để chọn những khối bạn muốn hiển thị cho mỗi lần commit. Bạn có thể nhận tài liệu bằng cách chạy git help add
và cuộn đến "Chế độ tương tác".
Williams answer hoàn toàn hợp lệ. Nhưng đôi khi nó dễ dàng hơn để làm việc bằng tay. Ví dụ: nếu bạn vô tình cập nhật một số thư viện của bên thứ ba với nhiều tệp trước khi thực hiện các thay đổi bạn đã thực hiện trước đó. Với git add -p
(giống như --patch
), bạn sẽ cần phải đi qua tất cả các tệp này. Vì vậy, trong trường hợp này, việc thuận tiện hơn cho giai đoạn mà bạn muốn cam kết và thực hiện cam kết thứ hai với tất cả các thay đổi khác:
> git add /path/to/your/file.txt
> git commit -m "my commit message"
[master a0c5ea6] my commit message
1 file changed, 2 insertions(+), 1 deletion(-)
> git add --all
> git commit -m "updated library xyz"
Thực ra,' git add -p' cho phép bạn chọn tệp cụ thể tại dòng lệnh và trong phiên tương tác, bạn có thể nhảy đến một hunk cụ thể bằng cách sử dụng 'g', hoặc tìm kiếm một hunk phù hợp với một regex bằng cách sử dụng'/'. Điểm của 'add -p' là chọn các khối từ một tệp, nhưng giải pháp được đề xuất này yêu cầu thêm toàn bộ tệp, đó không phải là những gì mà OP muốn. –
- 1. Hiệu suất của Git với các cam kết lớn so với các cam kết nhỏ
- 2. Cam kết thay đổi cho nhiều chi nhánh trong Git
- 3. C: làm cách nào để chia nhỏ số nhiều chữ số thành các biến riêng biệt?
- 4. Gerrit: kết hợp nhiều cam kết thành một "thay đổi"
- 5. Chia nhỏ git repo
- 6. git subtree đẩy và chia nhỏ thêm "-n <newline>" để cam kết thông báo
- 7. So sánh các thay đổi trong cam kết với tệp hiện tại theo Git
- 8. Git, thêm thay đổi để cam kết, sự khác biệt giữa cờ thêm và cờ cam kết
- 9. Tách kho Git lớn thành nhiều cái nhỏ hơn
- 10. thay đổi nhận xét git về cam kết được đẩy
- 11. Thay đổi thông báo cam kết cũ trên Git
- 12. Lưu trữ Git của kho lưu trữ với các thay đổi không được cam kết
- 13. Trạng thái git svn - hiển thị các thay đổi không được cam kết với svn
- 14. Git cam kết không thành công với Vim và GVim
- 15. Sửa đổi Git cam kết với một repo được chia sẻ
- 16. Git hợp nhất và giữ riêng biệt?
- 17. Chuyển đổi không gian thành các tab trong dòng tôi đã thay đổi trong cam kết
- 18. git Revert cam/đẩy nhưng giữ các thay đổi
- 19. Git - Tạm thời bỏ qua những thay đổi nhỏ nhặt đối với các tệp
- 20. git svn rebase luôn xung đột với các cam kết của riêng tôi
- 21. Git: đẩy các cam kết đã sửa đổi
- 22. Git pre-cam kết nối: nhận danh sách các tập tin thay đổi
- 23. Associate một git trống cam kết với các tập tin
- 24. Kết hợp một thay đổi thành nhiều chi nhánh
- 25. Buộc WPF cam kết các thay đổi đối với thành phần tập trung
- 26. git dàn dựng và cam kết giữa nhiều chi nhánh
- 27. Cách cam kết và đẩy các thay đổi bằng cách sử dụng Git
- 28. Thu gọn nhóm cam kết thành một trên Git
- 29. Khôi phục cam kết git trước đó?
- 30. Xấu cam kết Git
Có thể trùng lặp [Làm cách nào để chia nhỏ cam kết nhỏ hơn với Git ?] (http://stackoverflow.com/questions/2118042/how-to-split-a-commit-into-smaller-commits-with-git). –
Ngoài ra, nó không rõ ràng nếu những thay đổi đã được cam kết hay không. Nếu họ đã cam kết trong một số cam kết, 'rebase --interactive' là con đường để đi. Nếu không, 'git add --patch' là một trong các tùy chọn bạn nên xem xét. –