01/10/2018, 00:33

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!

Huy Trần viết 02:41 ngày 01/10/2018

Đầ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

Tâm Ninja viết 02:34 ngày 01/10/2018

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

Nguyễn Đức Hoàng viết 02:38 ngày 01/10/2018

Đầ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

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

Cong Nguyen viết 02:47 ngày 01/10/2018

git reset --hard [id of commit]

Nguyễn Đức Hoàng viết 02:33 ngày 01/10/2018

git reset --hard [id of commit]

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

Huy Trần viết 02:37 ngày 01/10/2018

@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ỉ push đc branch thôi hả bạn. Xong lại tích hợp branch naỳ vào master

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)

Cong Nguyen viết 02:40 ngày 01/10/2018

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

Nguyễn Đức Hoàng viết 02:45 ngày 01/10/2018

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)

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

Huy Trần viết 02:42 ngày 01/10/2018

À à à :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)

Nguyễn Đức Hoàng viết 02:41 ngày 01/10/2018

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

Bài liên quan
0