2013-08-11 94 views
11

Khi tôi tìm thấy lỗi sai tại chi nhánh ở xa, tôi luôn xóa lỗi này, bí danh cục bộ và đẩy lại. Bởi vì tôi nghe 'git push -f' rất nguy hiểm. Tuy nhiên tôi nhận thấy kết quả đẩy hiển thị sau khi git fetch là một số điều như dưới đây.Sự khác biệt giữa 'git push -f' và 'xóa nhánh từ xa và đẩy lại'

BRANCH_NAME mới "(bắt buộc)"

Luồng công việc của tôi xóa và đẩy lại là chính xác? Điểm khác nhau giữa đường đi và 'push -f' là gì?

+2

Repo từ xa của bạn có được đóng góp bởi các nhà phát triển khác không? – bcmcfc

+2

Điều gì có nghĩa là "tìm thấy sai của tôi ở nhánh từ xa"? – gipi

+0

@bcmcfc Có và tôi đã có cùng một quy trình làm việc như vậy tại repo đóng góp và solo. –

Trả lời

10

Chức năng, xóa và đẩy lại là ít nhất là nguy hiểmgit push -f.

Tuy nhiên, xóa và đẩy một lần nữa thực sự là tồi tệ hơn git -f push vì một lý do rất cụ thể:

Ít nhất với git -f push, các thay thế là nguyên tử.

Mặc dù, đây không phải là vấn đề lớn khi bạn làm việc solo.

  1. Khi bạn sử dụng git -f push, bạn đang nói chính xác những gì thay thế mất ra trong thông điệp kết quả: X...Y branch -> branch (forced update). Từ đó, bạn có thể chắc chắn rằng X thực sự là ý nghĩa của việc thổi bay đi.
  2. Khi bạn làm git push origin :branch && git push origin branch, bạn không thể thực sự biết bạn đã xóa gì nếu bạn không hoàn toàn là người duy nhất có thể đẩy đến branch.
+0

Cảm ơn bạn đã trả lời! Câu trả lời của bạn rất dễ hiểu;) Tôi sẽ ngừng sử dụng "xóa và đẩy lại". –

4

Không, việc xóa chi nhánh từ xa trước tiên sẽ không làm cho nó an toàn hơn hoặc bất cứ điều gì.

Lý do đẩy buộc nguy hiểm là do lý do luồng công việc chứ không phải vì lý do kỹ thuật. Nếu ai đó kéo nhánh sai của bạn, thì bạn buộc đẩy thay đổi chính xác trên cành, có thể gây ra sự tàn phá về lịch sử của họ và bất kỳ thay đổi nào họ thực hiện trên nhánh vì kéo của họ sẽ không còn tiến nhanh nữa (trừ khi họ sửa chi nhánh sai lầm của họ với lực kéo hoặc nếu họ rebase thay đổi của họ), có thể có nghĩa là họ có thể giới thiệu lại những thay đổi sai lầm một lần nữa. Trong một nhóm chỉ với một người, điều này thường không phải là vấn đề, với các dự án lớn hơn, với rất nhiều người đóng góp và nhiều người theo dõi, thì khả năng vấn đề lớn hơn nhiều bởi vì nó có thể không chỉ là một hoặc hai người đã tải xuống nhánh sai.

+0

@ Sea-Mountain IOW, nếu bạn là người duy nhất sử dụng repo, thì bạn có thể đi với một trong các quy trình công việc mà bạn cảm thấy thoải mái. – TheCodeArtist

+0

Cảm ơn bạn đã trả lời tôi! Tôi rất vui khi được nghe câu trả lời rõ ràng như "Đó là do lý do luồng công việc, không phải là kỹ thuật" vì vậy tôi có thể hiểu được. Tôi cẩn thận về công việc như vậy :) –

Các vấn đề liên quan