Nếu repo GitHub đã thấy các cam kết mới được đẩy vào nó, trong khi bạn đang làm việc tại địa phương, tôi sẽ khuyên bạn nên sử dụng:
git pull --rebase
git push
Cú pháp đầy đủ là:
git pull --rebase origin master
git push origin master
Với Git 2.6+ (tháng 9 năm 2015), sau khi thực hiện (một lần)
git config --global pull.rebase true
git config --global rebase.autoStash true
Một đơn giản git pull
sẽ là đủ.
(Lưu ý: với Git 2.27 quý 2 năm 2020 , a merge.autostash
cũng có sẵn cho lần kéo thông thường của bạn mà không cần rebase)
Bằng cách đó, bạn sẽ phát lại (các --rebase
phần) địa phương cam kết của bạn trên đầu trang của các mới được cập nhật origin/master
(hoặc origin/yourBranch
: git pull origin yourBranch
).
Xem một ví dụ đầy đủ hơn trong chương 6 Kéo với rebase của Git Pocket Book .
Tôi muốn giới thiệu một:
# add and commit first
git push -u origin master
Điều đó sẽ thiết lập mối quan hệ theo dõi giữa nhánh chính địa phương của bạn và nhánh ngược dòng của nó.
Sau đó, bất kỳ sự thúc đẩy nào trong tương lai cho chi nhánh đó đều có thể được thực hiện với một cách đơn giản:
git push
Xem " Tại sao tôi cần phải đẩy một chi nhánh mới một cách rõ ràng? ".
Vì OP đã thiết lập lại và thực hiện lại cam kết của mình trên đầu trang origin/master
:
git reset --mixed origin/master
git add .
git commit -m "This is a new commit for what I originally planned to be amended"
git push origin master
Không cần thiết pull --rebase
.
Lưu ý: git reset --mixed origin/master
cũng có thể được viết git reset origin/master
, vì --mixed
tùy chọn là mặc định khi sử dụng git reset
.