Tôi mới sử dụng Git, vì vậy hãy thoải mái đối xử với tôi như một người mới.
Quy trình làm việc của chúng tôi là như vậy. Chúng tôi có một chi nhánh dev
mà tôi có thể tiếp cận origin/dev
. Khi chúng tôi thay đổi, chúng tôi tạo một nhánh tắt dev:
kiểm tra git -b FixForBug gốc / dev
Bây giờ tôi có một chi nhánh được gọi FixForBug
là theo dõi (tôi nghĩ đó là từ đúng) origin/dev
. Vì vậy, nếu tôi làm điều git pull
đó sẽ mang lại những thay đổi mới từ origin/dev
đó là tuyệt vời. Bây giờ, khi tôi đã hoàn thành việc sửa lỗi của mình, tôi đẩy đến một nhánh từ xa được gọi là điều tương tự.
Đầu tiên tôi kéo xuống bất kỳ thay đổi nào origin/dev
và thực hiện rebase:
git kéo --rebase
Sau đó, tôi đẩy các thay đổi đến một nhánh từ xa cùng tên:
nguồn gốc git FixForBug
Bây giờ, có một nhánh trên máy chủ từ xa và tôi có thể tạo một yêu cầu kéo để thay đổi đó được phê duyệt và sáp nhập trở lại vào nhánh dev. Tôi không bao giờ đẩy bất cứ điều gì cho origin/dev
bản thân mình. Tôi đoán đây là quy trình công việc khá phổ biến.
Lần đầu tiên tôi làm git push
, nó hoạt động tốt và tạo ra nhánh từ xa. Tuy nhiên, nếu tôi đẩy lần thứ hai (giả sử trong quá trình xem lại mã, ai đó sẽ chỉ ra một vấn đề), tôi gặp phải lỗi sau:
lỗi: không thể đẩy một số giới thiệu đến ' https://github.limeade.info/Limeade/product.git ': Các cập nhật đã bị từ chối vì mẹo của chi nhánh hiện tại của bạn nằm sau gợi ý: đối tác từ xa của nó. Tích hợp các thay đổi từ xa (ví dụ: gợi ý: 'git pull ...') trước khi đẩy lại. gợi ý: Xem phần 'Lưu ý về chuyển tiếp nhanh' trong 'git đẩy - trợ giúp' để biết chi tiết.
Tuy nhiên, nếu tôi thực hiện git status
thì nó nói rằng tôi đi trước origin/dev
1 cam kết (điều này có ý nghĩa) và nếu tôi làm theo gợi ý và chạy git pull
, nó nói mọi thứ đã được cập nhật. Tôi nghĩ điều này là do tôi đang đẩy sang một chi nhánh khác với chi nhánh thượng nguồn của mình. Tôi có thể khắc phục sự cố này bằng cách chạy:
git push -f origin FixForBug
Trong trường hợp đó, nó sẽ đẩy các thay đổi đến nhánh từ xa, nói (cập nhật bắt buộc) và mọi thứ dường như đều tốt trên nhánh từ xa.
Những câu hỏi của tôi:
Tại sao được -f
yêu cầu trong kịch bản này? Thông thường khi bạn đang ép buộc một cái gì đó, đó là vì bạn đã làm sai điều gì đó hoặc ít nhất là chống lại thực hành tiêu chuẩn. Tôi có ổn không khi làm điều này, hay nó sẽ làm rối tung một cái gì đó trong nhánh từ xa hoặc tạo rắc rối cho bất cứ ai cuối cùng phải hợp nhất công cụ của tôi vào dev?
git pull origin FixForBug
trước khi tôi đẩy đến đó? Được rồi, cái đó có lý. Hãy thêm vào như một câu trả lời!