Hỏi push các commit cũ lên remote github?

Chào các bạn! cho mình hỏi một chút. Ví dụ mình tạo khoảng 5 commit 1 -> 2 -> 3 ->4 ->5 (dữ liệu pull mới nhất sau đó mình mới tạo các commit nhé). Mặc định dùng lệnh: git push origin margin nó sẽ đẩy commit cuối cùng là số 5 lên kho chứa. Nhưng mình chỉ muốn đẩy commit số 3 lên kho chứa thôi thì dùng lệnh như thế nào các bạn nhỉ. Cám ơn!

Đầu tiên bạn dùng lệnh git log để liệt kê danh sách các commit.

Ở mỗi commit sẽ có 1 commit ID, là 1 dạng hash kiểu a1b2c3 gì đó, copy cái ID của commit thứ 3, hoặc chỉ cần copy 4 kí tự đầu của cái ID là đủ.

Check out branch mới từ cái commit đó:

git checkout -b latuine <commitID>

Tại đây thì bạn có cái branch mới là latuine, head của nó dừng lại tại cái commit thứ 3.

Xong rồi push cái branch này lên remote.

Xong phim :smiley:

2 Likes

Bạn tìm hiểu về cherypick trong Git nhé.

3 Likes

Chỉ push đc branch thôi hả bạn. Xong lại tích hợp branch naỳ vào master :slight_smile:

git reset --hard [id of commit]

1 Like

Bạn ơi đây là xóa commit mà… :cry:

@Nguyen_Duc_Hoang1 sorry bác, chưa quen cái giao diện lắm, giờ mới thấy reply của bác.

Chưa hiểu câu hỏi lắm, vậy ý bác là muốn “xóa” commit 4, 5 trên master đi phải ko?

Vậy thì có thể làm cách khác như bác @Cong_Nguyen nói, đầu tiên dùng git reset để đưa cái số 3 thành phiên bản mới nhất (HEAD)

git reset --hard <commit ID số 3>

Sau đó thì force push để ghi đè master trên origin:

git push -f origin master

Làm vậy thì bác thủ tiêu luôn 2 cái commit 4, 5 rồi đấy, cái mới nhất giờ thành số 3 (ở trên “kho chứa” luôn)

1 Like

git checkout [id of commit].
nguồn: http://stackoverflow.com/questions/4114095/how-to-revert-git-repository-to-a-previous-commit

Trời ơi không xóa bác ơi! giả sử commit 4 và 5 vẫn tiếp tục làm việc. Nhưng mình chỉ đưa 3 lên thôi :slight_smile:

À à à :v hiểu zồi hiểu zồi =))))

Vậy bác có thể push kiểu:

git push <remote-name> <commit-id>:<branch-name-on-remote>

Ví dụ

git push origin <commit-id-so-3>:master

Với cách này thì bác cũng ko cần làm gì với cái working copy trong máy, cho dù nó đang ở commit thứ 8, 9 thì bác vẫn push commit số 3 vô tư (tất nhiên là với điều kiện trước đó bác chưa có push mấy cái commit sau số 3 lên)

:smiley:

2 Likes

Cám ơn bác mấy lần thử để commit id ở cuối ko đc =D

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?