Tôi biết cách tạo một nhánh mới theo dõi các nhánh từ xa, nhưng làm cách nào để tạo một nhánh hiện có theo dõi một nhánh từ xa?
Tôi biết tôi có thể chỉnh sửa .git/config
nhưng có vẻ như có một cách dễ dàng hơn.
Tôi biết cách tạo một nhánh mới theo dõi các nhánh từ xa, nhưng làm cách nào để tạo một nhánh hiện có theo dõi một nhánh từ xa?
Tôi biết tôi có thể chỉnh sửa .git/config
nhưng có vẻ như có một cách dễ dàng hơn.
Cho một chi nhánh foo
và điều khiển từ xa upstream
:
Kể từ Git 1.8.0:
git branch -u upstream/foo
Hoặc, nếu chi nhánh địa phương foo
không phải là nhánh hiện tại:
git branch -u upstream/foo foo
Hoặc, nếu bạn muốn nhập các lệnh dài hơn, các lệnh này tương đương với hai lệnh trên:
git branch --set-upstream-to=upstream/foo
git branch --set-upstream-to=upstream/foo foo
Kể từ Git 1.7.0:
git branch --set-upstream foo upstream/foo
Ghi chú:
Tất cả các lệnh trên sẽ gây ra chi nhánh địa phương foo
theo dõi nhánh từ xa foo
từ xa upstream
. Cú pháp cũ (1.7.x) không còn được dùng để ủng hộ cú pháp mới (1.8+). Cú pháp mới nhằm mục đích trực quan và dễ nhớ hơn.
Xem thêm: Tại sao tôi cần phải làm `--set-upstream` mọi lúc?
Bạn có thể làm như sau (giả sử bạn được kiểm tra trên master và muốn đẩy đến một master branch từ xa):
Thiết lập 'từ xa' nếu bạn chưa có
git remote add origin ssh://...
Giờ hãy định cấu hình chính để biết để theo dõi:
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
Và đẩy:
git push origin master
Tôi làm điều này như là một tác dụng phụ của việc đẩy với -u
tùy chọn như trong
$ git push -u origin branch-name
Tùy chọn dài tương đương là --set-upstream
.
Các git-branch
lệnh cũng hiểu --set-upstream
, nhưng việc sử dụng nó có thể gây nhầm lẫn. Phiên bản 1.8.0 sửa đổi giao diện.
git branch --set-upstream
không được chấp nhận và có thể bị xóa trong một tương lai tương đối xa.git branch [-u|--set-upstream-to]
đã được giới thiệu với một thứ tự san bằng các đối số.…
Thật là hấp dẫn khi nói
git branch --set-upstream origin/master
, nhưng điều đó bảo Git phải sắp xếp nhánh "origin / master" địa phương để tích hợp với nhánh hiện đã được kiểm tra, điều này rất khó xảy ra với người dùng. Tùy chọn không được chấp nhận; sử dụng mới--set-upstream-to
(với một cái ngắn và ngọt-u
) để thay thế.
Giả sử bạn có một địa phương foo
chi nhánh và muốn nó để xử lý các chi nhánh bằng tên giống như thượng nguồn của nó. Làm điều này xảy ra với
$ git branch foo
$ git branch --set-upstream-to=origin/foo
hoặc chỉ
$ git branch --set-upstream-to=origin/foo foo
Bạn có thể tìm thấy git_remote_branch
công cụ hữu ích. Nó cung cấp các lệnh đơn giản để tạo, xuất bản, xóa, theo dõi và đổi tên các nhánh từ xa. Một tính năng thú vị là bạn có thể hỏi grb
lệnh để giải thích lệnh git nào sẽ thực thi.
grb explain create my_branch github
# git_remote_branch version 0.3.0
# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch
Trên thực tế cho câu trả lời được chấp nhận để làm việc:
git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa
Tôi tin rằng vào đầu Git 1.5.x bạn có thể tạo ra một chi nhánh địa phương $BRANCH
theo dõi một nhánh từ xa origin/$BRANCH
, như thế này.
Cho rằng $BRANCH
và origin/$BRANCH
tồn tại, và bạn hiện chưa kiểm tra $BRANCH
(chuyển đi nếu bạn có), làm:
git branch -f --track $BRANCH origin/$BRANCH
Điều này tái tạo $BRANCH
như một nhánh theo dõi. Các -f
buộc tạo ra mặc dù $BRANCH
hiện đã có. --track
là tùy chọn nếu mặc định thông thường được đặt đúng chỗ (có nghĩa là tham số git-config branch.autosetupmerge
là đúng).
Lưu ý, nếu origin/$BRANCH
chưa tồn tại, bạn có thể tạo nó bằng cách đẩy địa phương của bạn $BRANCH
vào kho lưu trữ từ xa với:
git push origin $BRANCH
Tiếp theo là lệnh trước đó để quảng bá nhánh địa phương thành một nhánh theo dõi.
1- cập nhật siêu dữ liệu cục bộ của bạn bằng cách sử dụng: git fetch --all
2- hiển thị các nhánh từ xa và địa phương của bạn bằng cách sử dụng: git branch -a , xem Ảnh chụp màn hình sau
3 - chuyển sang nhánh đích, mà bạn muốn liên kết với remote: using
git checkout branchName
thí dụ :
4- Liên kết chi nhánh địa phương của bạn với một nhánh từ xa bằng cách sử dụng:
git branch --set-upstream-to nameOfRemoteBranch
N.B: nameOfRemoteBranch : để sao chép từ đầu ra của bước 2 "git branch -r"
Ví dụ sử dụng:
Đảm bảo bạn chạy:
git config push.default tracking
để có thể đẩy rắc rối miễn phí
Chỉnh sửa .git/config
có lẽ là cách dễ nhất và nhanh nhất. Đó là những gì các lệnh Git để xử lý các nhánh từ xa đang làm.
Nếu bạn không muốn muck với các tập tin bằng tay (và nó không phải là khó để làm), bạn luôn có thể sử dụng git config
để làm điều đó ... nhưng một lần nữa, đó chỉ là chỉnh sửa .git/config
tập tin, anyway.
Có, tất nhiên, cách để tự động theo dõi một chi nhánh từ xa khi sử dụng git checkout
(bằng cách vượt qua --track
cờ, ví dụ), nhưng các lệnh này hoạt động với Mới các chi nhánh, không phải chi nhánh hiện có.
Trong rất ngắn
git branch --set-upstream yourLocalBranchName origin/develop
Điều này sẽ làm cho bạn yourLocalBranchName
theo dõi nhánh từ xa được gọi là develop
.