2012-07-17 20 views
12

Gần đây tôi đã hợp nhất một nhánh mà tôi đang làm việc với nhánh 'master'. Tôi phải có (vẫn còn là một git n00b) đã làm một cái gì đó khi đẩy hoặc kéo mà tạo ra cả một origin/master và một chi nhánh origin/HEAD. Thật không may, tôi đã không giữ một bản ghi của những lệnh tôi chạy mà đã làm điều này. Hiện tại, nhóm của tôi có một loạt mã trong các bản sao chính mà tôi không nhận được khi tôi kiểm tra dự án (ngay cả khi tôi clone đến một vị trí mới).Chi nhánh git của tôi đang hiển thị 'origin/master' và 'origin/HEAD' trong Sourcetree và tôi không biết cách hợp nhất hai số

Dưới đây là một ảnh chụp màn hình của những gì Sourcetree đang hiển thị:

2 branches

tôi thực sự cần phải được giải quyết này để tôi có thể tiếp tục làm việc vì vậy bất kỳ trợ giúp sẽ được đánh giá cao.

+0

Đó không phải là điều bạn cần phải lo lắng. Tôi cũng có nó trong một số kho của tôi, nhưng nó giống như một con trỏ đến 'origin/master'. Nếu bạn làm 'git branch -r', bạn sẽ thấy điều này. – Shahbaz

+0

Hmmm ... bất kỳ ý tưởng nào về lý do tại sao chủ nhân của tôi không đồng bộ với những người mà đồng đội của tôi có? –

+0

Tất nhiên, vì bạn có các kho lưu trữ khác nhau, bạn cần phải đồng bộ hóa chúng. Vì vậy, câu hỏi của bạn thực sự là "làm thế nào để hợp nhất _your_ làm việc với" origin "? – Shahbaz

Trả lời

6

Các nhánh bạn thấy bắt đầu bằng origin/ được gọi là "bộ đệm theo dõi từ xa". Chúng cho bạn biết vị trí của các nhánh trong kho lưu trữ origin lần cuối cùng git được lấy từ kho lưu trữ đó.

Không có gì phải lo lắng - đây thực sự là thông tin hữu ích. Nếu bạn cho rằng các vị trí chi nhánh đó đã lỗi thời, bạn có thể chạy:

git fetch origin 

... để cập nhật chúng.

Trong kho lưu trữ bất kỳ, HEAD là loại đặc biệt của ref ("symref") đại diện cho nhánh hiện tại (hoặc cam kết hiện tại, nếu bạn không thuộc một nhánh cụ thể).


Bạn có thể nhìn thấy trong sơ đồ mà chi nhánh master của bạn thực sự là một cam kết trước origin/master, vì vậy nếu các đồng nghiệp của mình đã bị đẩy đến master trong origin và bạn chạy git fetch origin (hoặc một cái gì đó tương đương) thời gian gần đây, bạn đã có tất cả công việc của họ. Tuy nhiên, họ sẽ bỏ lỡ cam kết của bạn cho đến khi bạn đẩy điều đó.

Bạn nói:

Hiện nay, đội của tôi có một loạt các mã trong bản tổng thể của họ rằng tôi không nhận được khi tôi kiểm tra dự án (ngay cả khi tôi sao chép đến một vị trí mới).

Nếu trường hợp đó xảy ra, có lẽ họ đang chuyển sang một chi nhánh khác, một kho lưu trữ khác hoặc họ chưa thực hiện công việc của mình.

+0

Ngoài ra 'git merge origin/' để hợp nhất '' với chi nhánh hiện đã được kiểm tra của bạn. Bằng cách đó, không chỉ bạn cập nhật bản sao của các chi nhánh của 'origin', mà bạn thực sự có được những thay đổi trong các nhánh địa phương của bạn. – Shahbaz

+1

Tôi đã không đề cập rằng bởi vì trong tình huống của OP sáp nhập 'origin/master' sẽ không làm bất cứ điều gì -' master' của anh ta là * trước * của 'origin/master'. –

+0

Vâng, tôi chỉ nói nó để làm cho câu trả lời hoàn chỉnh hơn. Kể từ khi anh ấy nói "Hiện tại, nhóm của tôi có rất nhiều mã trong bản sao chính mà tôi không nhận được khi tôi kiểm tra dự án", bạn nói với anh ta "git fetch', tôi đã đề cập rằng sau đó, anh ấy nên" git hợp nhất'. – Shahbaz

7

Nó chỉ là một con trỏ để làm chủ, một liên kết tượng trưng nếu bạn muốn. Bạn có thể an toàn xóa nó bằng cách làm như sau trong một thiết bị đầu cuối (hoặc git bash/Cygwin cho các cửa sổ người dùng):

  1. điều hướng đến kho lưu trữ của bạn
  2. thực hiện: git remote set-head origin -d

bây giờ nó cần phải hết :

$ git branch -r 
origin/master 
Các vấn đề liên quan