Tắt Quảng Cáo [X] Đăng Nhập để ẩn Tất Cả Quảng Cáo #j2team_tips **Làm cách nào commit vào một commit cũ?** *git commit --amend* có lẽ đã quá quen thuộc, nhưng với *--amend* chỉ commit hay sửa được commit cuối cùng mà thôi. ## Đặt vấn đề Đây là *git log* hiện tại: > 2869a6b (HEAD->main) feat: add forgot page (7 hours ago) b6f6b90 feat: add sign up page (1 day ago) 768caf4 feat: add sign in page (2 days ago) Tôi đang làm một feature mới là trang reset page, và bỗng phát hiện *SignIn.tsx* bị sai chính tả và rất khó chịu, tôi quyết định sửa và commit nó vào chung với: > 768caf4 feat: add sign in page Khó là không thể dùng *--amend* bởi vì nó không phải là commit cuối cùng. ## GIẢI QUYẾT Cùng xem *git diff* hiện tại: > diff --git a/Reset.tsx b/Reset.tsx new file mode 100644 index 0000000..c9e7d74 --- /dev/null +++ b/Reset.tsx @@ -0,0 +1,5 @@ +const Reset = () => { + return <div>Reset page</div>; +}; + +export default Reset; diff --git a/SignIn.tsx b/SignIn.tsx index f387d14..c541661 100644 --- a/SignIn.tsx +++ b/SignIn.tsx @@ -1,5 +1,5 @@ const SignIn = () => { - return <div>Wellcome, please sign in.</div>; + return <div>Welcome, please sign in.</div>; }; export default SignIn; Nhìn qua diff ta thấy working directory hiện tại có tạo mới *Reset.tsx* và sửa đổi chính tả chữ "Wellcome" thành "Welcome" trong *SignIn.tsx* Tất nhiên chúng ta chỉ quan tâm đến *SignIn.tsx *và cố gắng commit thay đổi vào **768caf4 feat: add sign in page **là xong bài toán. B1: Chỉ thêm SignIn.tsx vào staged changes > git add SignIn.tsx B2: commit với --fixup=<SHA> mà chúng ta muốn amend vào. > git commit --fixup=768caf4 B3: Dọn dẹp với rebase -i --autosquash <SHA>~1 > git rebase -i --autosquash --autostash 768caf4~1 B4: Xem thành quả như chưa hề có một lỗi lầm nào ở SignIn.tsx ## CHÚ Ý * Bước cuối cùng* --autostash *có ỹ nghĩa quan trọng nó giúp việc rebase diễn ra suông sẽ hơn, nó đưa các changes hiện tại vào stash và trả lại như cũ sau khi hoàn thành, cụ thể ở đây là `Reset.tsx` * Sửa commit cũ chỉ khuyến khích khi chưa **push to remote**, mọi hành động *push --force* đều không được khuyến khích
Mấy bác cho em hỏi, em hay làm nhóm, thường là code chung 1 thời gian, thì làm sao để tất cả đều push lên git mà không bị xung đột hay gì ạ ?
Toi quên luôn git pages toi build ở tk git nào,toi có 2 tk,1 tk build source dùng git pages và 1 tk đi hóng dạo nhưng không rõ sao tìm trong cả 2 accounts không thấy git pages toi đã buid gắn luôn cả domain
Hoặc đơn giản hơn là dùng interative rebase: git rebase -i @~3, sửa file action để edit commit muốn fix. Sau khi lưu file và thoát thì giống như xài git commit --amend