Không có sự khác biệt nào cả!
1) git checkout -b branch origin/branch
Nếu không có --track
và không --no-track
, --track
được giả định như mặc định. Mặc định có thể được thay đổi với cài đặt branch.autosetupmerge
.
Có hiệu lực, 1) hoạt động như git checkout -b branch --track origin/branch
.
2) git checkout --track origin/branch
“Để tiện lợi”, --track
mà không -b
ngụ ý -b
và lập luận để -b
được đoán là “chi nhánh”. Việc đoán được thúc đẩy bởi biến cấu hình remote.origin.fetch
.
Có hiệu lực, 2) hoạt động như git checkout -b branch --track origin/branch
.
Như bạn có thể thấy: không có sự khác biệt.
Nhưng nó được thậm chí tốt hơn:
3) git checkout branch
cũng tương đương với git checkout -b branch --track origin/branch
nếu “chi nhánh” chưa hề tồn tại nhưng “nguồn gốc/chi nhánh” không .
Tất cả ba lệnh đặt “thượng nguồn” của “nhánh” thành “origin/branch” (hoặc không thành công).
Phía trên được sử dụng làm điểm tham chiếu của đối số ít hơn git status
, git push
, git merge
và do đó git pull
(nếu được định cấu hình như vậy (mặc định hoặc gần như mặc định)).
Ví dụ: git status
cho bạn biết cách xa phía trước hoặc phía trước bạn là thượng lưu, nếu một cấu hình được định cấu hình.
git push
được định cấu hình để đẩy nhánh nhánh hiện tại lên theo mặc định kể từ git 2.0.
... và nếu “nguồn gốc” là chỉ từ xa có “chi nhánh”
mặc định (có tên là “đơn giản”) cũng thực thi cho cả hai tên chi nhánh để được bình đẳng
@VonC Tôi đang tìm kiếm chi tiết nhỏ mà bạn đã đề cập đến là thông tin bổ sung. Trong trường hợp của tôi, tôi đã tò mò tại sao tôi có một số chi nhánh của tôi cho phép tôi để 'git pull', trong khi một số chi nhánh sẽ yêu cầu một chi nhánh từ xa để kéo từ. Nó chỉ ra rằng nếu bạn, trong lần đầu tiên của bạn, đang kiểm tra một nhánh xa mà peer của bạn tạo ra, git tiếp tục và thêm 'branch. .remote = origin' vào gitconfig cục bộ. Mà sau đó cho phép bạn phát hành 'git pull'. Tuy nhiên, nếu bạn là người tạo ra nhánh 'git checkout -b BNAME', thì git -of course- không biết. Vì vậy, bạn nên chỉ định từ xa của nó. –
batilc
@batilc "Nó chỉ ra rằng nếu bạn, trong lần đầu tiên của bạn, đang kiểm tra một chi nhánh từ xa mà đồng nghiệp của bạn tạo ra,"; có, đọc https://git-scm.com/docs/git-checkout, tôi thấy: "Nếu không tìm thấy' nhưng có tồn tại một nhánh theo dõi chính xác ở một từ xa (gọi nó là "') với một tên trùng khớp, xử lý tương đương với '$ git checkout -b --track /' " –
VonC
@VonC Tôi đã tìm thấy cấu hình tốt hơn cho việc này. việc thiết lập 'branch.autoSetupMerge' thành' always' chỉ đơn giản là thực hiện những gì chúng ta đang nói đến. Cài đặt này mặc định là 'true', nghĩa là việc theo dõi sẽ chỉ được thực hiện khi kiểm tra một nhánh từ xa. 'true' không thiết lập theo dõi cho các nhánh được tạo cục bộ. – batilc