Tôi đã chơi xung quanh với git (vẫn rất noob) và tôi muốn biết sự khác biệt giữa "đặt lại" và "rebase". Là một trong những mạnh hơn khác?Sự khác biệt giữa "git reset" so với "git rebase" là gì?
Giả sử tôi muốn xóa 3 cam kết in đậm từ lịch sử, cái nào sẽ tốt hơn để sử dụng, hoặc tôi nên gắn thẻ và sau đó xóa nó với git tag -d <tagname>
?
17a64df 2012-06-21 | Xin chào sử dụng style.css (HEAD, origin/style, master),
a6792e4 2012-06-21 | Đã thêm biểu định kiểu css
801e13e 2012-06-21 | Đã thêm README
5854339 2012-06-21 | Đã thêm index.html
0b1dd4c 2012-06-21 | Đã chuyển hello.html sang lib
55649c3 2012-06-21 | Thêm tác giả/nhận xét qua email
9b2f3ce 2012-06-21 | Đã thêm nhận xét của tác giả
cdb39b0 2012-06-21 | Cam kết thẻ p với văn bản (v1.1)
b7b5fce 2012-06-21 | Điều này hoàn nguyên cam kết a6faf60631b5fbc6ee79b52a1bdac4c971b69ef8.
a6faf60 2012-06-21 | Hoàn nguyên "Rất tiếc, chúng tôi không muốn cam kết này"
a006669 2012-06-21 | Rất tiếc, chúng tôi không muốn cam kết này
262d1f7 2012-06-21 | Đã thêm tiêu đề HTML (v1)
b1846e5 2012-06-21 | Đã thêm thẻ trang HTML chuẩn (v1-beta)
bf1131e 2012-06-21 | Đã thêm HI TAG
02b86d0 2012-06-21 | Cam kết đầu tiên
Cảm ơn bạn đã trả lời và giải thích sự khác biệt là gì. – Q10
đang xóa các dòng khỏi lệnh rebase giống như thay đổi từ "pick" thành "s" cho squash? – Ninjaxor
@Ninjaxor Không, xóa các đường sẽ xóa hoàn toàn các cam kết và các thay đổi mà chúng đã giới thiệu từ lịch sử. Nó là như thể cam kết không bao giờ được thực hiện. Ví dụ, nếu bạn loại bỏ một cam kết đã thêm một dòng, thì dòng đó sẽ không xuất hiện trong bất kỳ cam kết sau này sau khi rebase. Mặt khác, việc đè bẹp sẽ vẫn giữ các thay đổi được giới thiệu trong cam kết trong khi chỉ loại bỏ chính cam kết riêng biệt đó. – poke