Hãy đăng bài và bài viết ca bn s đưc lên top tìm kiếm google

Diễn đàn SEO bài viết lên Google Search tốt nhất

**Làm cách nào commit vào một commit cũ?** *git commit --amend* có lẽ đã...

Thảo luận trong 'J2TEAM Community' bắt đầu bởi Nghiệp, 14/4/22.

  1. #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
     
  2. 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ì ạ ?
     
  3. 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 :v
     
  4. amend là vừa commit vừa cầu nguyện phải ko nhỉ. A men
     
  5. Từ chối hiểu
     
  6. 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
     
  7. quá cồng kềnh, đơn giản là sửa rồi commit luôn cho lành :))
     
  8. Tôi sẽ thêm 1 commit cho đỡ nặng đầu :v