Lỗi không upload code được lên github

Khi mình push code lên github thì gặp lỗi như thế này !

nho@NHO:~/Documents$ git push -u origin ubuntu-documents 
Username for 'https://github.com': trannhoduc
Password for 'https://[email protected]': 
To https://github.com/trannhoduc/nho.git
 ! [rejected]        ubuntu-documents -> ubuntu-documents (non-fast-forward)
error: failed to push some refs to 'https://github.com/trannhoduc/nho.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Có bạn nào biết phải xử lí thế nào không ạ ?
Mình cảm ơn !

3 Likes

hình như commit trên máy của bạn đã cũ do ai đó push commit lên rồi, vì vậy trước khi push code thì bạn phải pull commit trên remote về để gộp trước nha
repo trên remote hiện tại:---->commit1---->commit2----->commit3------>commit4(mới nhất)
repo máy bạn: ----->commit3----->commit5(bạn vừa add . và tạo trên local, ko push được)
repo máy ai đó:---->commit3----->commit4(mới nhất)

vậy bạn phải pull về và gộp commit4 từ remote vào repo local trước. nếu có conflict thì gỡ nha. rồi mới push lên.

4 Likes

Cảm ơn bạn rất nhiều
Nhưng mà mình chưa hiểu lắm
Bạn giúp mình chi tiết được không ?

Vấn đề này xảy ra khi source code trên github của bạn có sự khác biệt với source code của bạn trên local. Khác ở đây là những cái khác không được sinh ra từ máy bạn ấy. Tức là do ai đó làm cùng bạn đã commit lên github, hoặc do bạn sửa trực tiếp trên github.

Để giải quyết vấn đề này thì bạn phải kéo các thay đổi này về máy trước khi bạn có thể push.
Dùng lệnh này: git pull
Nếu những chỗ thay đổi trên github không bị trùng với những chỗ thay đổi của bạn đang làm thì sẽ không có vấn đề gì. Nếu chả may thay đổi này đồng thời có ở github lẫn trên máy bạn thì sẽ xảy ra conflict.

4 Likes

Đầu tiên bạn gõ git status để xem là còn gì để stash không (ý là phải commit hay stash). Sau đó gõ git pull --rebase :smiley:

--rebase sẽ “gắn” các commit bên bạn phía sau nhánh ở remote. Lệnh này tránh được các merge commit kiểu “merge branch master to master” làm xấu repo.

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