2011-09-15 35 views
7

Tôi tạo ra một kho git địa phương, và tôi đẩy những thay đổi từ nó vào một từ xa gitosis mà tôi tạo ra vớiLàm thế nào để tôi đồng bộ hóa master và origin/master bằng cách sử dụng egit trong eclipse?

git init my_git 
git remote add origin [email protected]:my_git 
... various adds and commits 
git push origin master:refs/heads/master 

Bây giờ, tôi chỉnh sửa và cam kết thay đổi cục bộ trong nhật thực, và khi tôi cam kết, tôi thấy (sử dụng qgit) nó di chuyển chi nhánh master của tôi sang phiên bản đó.

Tuy nhiên, nó cũng cho tôi thấy rằng origin/master là ở phiên bản trước.

git status trên dòng lệnh cho tôi tất cả mọi thứ được cập nhật:

$ git status 
# On branch master 
nothing to commit (working directory clean) 

tôi có thể thấy sự khác biệt trong các phiên bản với

git diff origin/master 

Nếu tôi làm git push trên dòng lệnh của tôi, sau đó qgit show tôi chi nhánh origin/master hiện đang ở cùng một nơi với số master của tôi.

Tôi không thể tìm cách cấu hình hộp thoại "từ xa/đẩy" hoặc "từ xa/cấu hình đẩy lên thượng nguồn" trong nhật thực để thực hiện tương tự như dòng lệnh git push để di chuyển origin/master đến cùng mức với số master.

Tôi luôn phải thực hiện lệnh đẩy để làm cho số origin/master xuất hiện ở cùng một vị trí với master.

Q1. Bất cứ ai có thể cho tôi biết làm thế nào để làm điều này trong nhật thực?

Q2. Phiên bản dòng lệnh của git push làm cho phiên bản nhật thực không làm gì?

Q3. Giả định của tôi là master là con trỏ HEAD cục bộ và origin/master là chế độ xem của máy chủ từ xa của HEAD hiện tại có đúng không?

+0

Chi nhánh 'master' trong kho chứa gitolite có được cập nhật khi bạn đẩy từ Eclipse không? –

+0

có, có vẻ như nó đã được cập nhật. tôi đã thực hiện một cú đẩy từ nhật thực, và sau đó nhân bản kho lưu trữ gitolite ở nơi khác và những thay đổi tôi tạo ra là trong bản sao mới của tôi. 'origin/master' vẫn được thiết lập ở phiên bản trước, vì vậy nó cho tôi biết push đang hoạt động và' origin/master' không phải là HEAD của máy chủ từ xa. Bản sao mới có "master", "origin/master" trên verison mới nhất, nhưng cũng là "origin/origin/master" ở phiên bản trước –

+1

Bạn đã có một 'origin/origin/master' trong bản sao mới gợi ý với tôi rằng bạn bằng cách nào đó đã vô tình đẩy 'origin/master' (chứ không phải chỉ là 'master') vào một tên phù hợp trong kho gitolite. –

Trả lời

2

Going by the phần liên quan của egit's documentation bạn có thể:

  • nhấp vào "Thêm tất cả các chi nhánh spec" nút, để đẩy tất cả các chi nhánh địa phương của bạn cho những người có cùng tên trong kho từ xa, hoặc
  • (tùy chọn an toàn hơn nhiều) chỉ cần chọn master theo cả "Nguồn ref" và "ref Destination" để chỉ đẩy master chi nhánh của bạn

Điều khiển từ xa theo dõi chi nhánh origin/master thường được cập nhật bởi git fetch (là một phần của những gì git pull hiện), nhưng với dòng lệnh git, chi nhánh theo dõi từ xa là cũng được cập nhật khi đẩy thành công đến nhánh trong kho từ xa đang được theo dõi. Có thể là Egit, đang dựa trên một trong những triển khai Java tinh khiết của git, JGit, thay vì các công cụ dòng lệnh, không cập nhật origin/master khi đẩy thành công theo cùng một cách. Nếu đúng như vậy, bạn chỉ có thể do a fetch để cập nhật origin/master.


Cập nhật: Có vẻ như rằng đây là một lỗi được biết đến trong EGit (không phải là JGit cơ bản) - báo cáo lỗi là ở đây:

+0

Tuyệt vời, tìm nạp đã làm các trick. Tôi nghĩ rằng tôi hiểu tại sao tôi phải lấy cục bộ di chuyển 'origin/master' ngay bây giờ, đây có phải là một tính năng hay một lỗi không? Tôi đã dự kiến ​​sẽ biết tại địa phương nơi chủ từ xa là nếu tôi là người chỉ đẩy một thay đổi vào nó, thực tế tôi phải yêu cầu nó trong một bước thứ hai có vẻ kỳ quặc, và dòng lệnh đang làm những gì tôi ' d tự nhiên hơn mong đợi xảy ra. –

+0

Có, tôi mong đợi như vậy, và tôi sẽ gọi nó là một lỗi. Trong thực tế, tôi đã tìm thấy điều này trong trình theo dõi lỗi: https://bugs.eclipse.org/bugs/show_bug.cgi?id=317411 –

1

Bản cập nhật điều này, tôi đã sử dụng Helios eclipse, và tôi đã nâng cấp lên Indigo, với phiên bản mới nhất của egit, và sửa chữa xuất hiện để được hoạt động, vì tôi không còn phải kéo sau khi đẩy.

+0

Hmm, tôi sử dụng Kepler và có repo địa phương "L1" và cũng từ xa trần repo "R1" trên phân vùng đĩa khác. Bên cạnh đó tôi đã tạo ra một bản sao "P" của R trên một pendrive. Trên một máy tính khác, tôi đã tạo một bản sao "R2" của P và sau đó thanh toán biểu mẫu dự án R2 vào Eclipse bằng cách sử dụng repo "L2". Về cơ bản nó là máy chủ để trao đổi những thay đổi giữa hai máy tính với sự giúp đỡ của pendrive và có bản sao lưu trần trên cả hai máy tính. Nó trông như thế này: – Cromax

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