Khi tôi chạy:
git push origin branchname
Chính xác là gì origin
và tại sao tôi phải gõ nó trước tên chi nhánh?
Khi tôi chạy:
git push origin branchname
Chính xác là gì origin
và tại sao tôi phải gõ nó trước tên chi nhánh?
Câu trả lời:
origin
là một bí danh trên hệ thống của bạn cho một kho lưu trữ từ xa cụ thể. Nó không thực sự là một tài sản của kho lưu trữ đó.
Bằng cách làm
git push origin branchname
bạn đang nói để đẩy vào origin
kho lưu trữ. Không có yêu cầu đặt tên cho kho lưu trữ từ xa origin
: trên thực tế, cùng một kho lưu trữ có thể có bí danh khác cho nhà phát triển khác.
Điều khiển từ xa chỉ đơn giản là một bí danh lưu trữ URL của kho lưu trữ. Bạn có thể xem URL nào thuộc về mỗi điều khiển từ xa bằng cách sử dụng
git remote -v
Trong push
lệnh, bạn có thể sử dụng điều khiển từ xa hoặc đơn giản là bạn có thể sử dụng URL trực tiếp. Một ví dụ sử dụng URL:
git push git@github.com:git/git.git master
git push
bạn có thể thấy rằng trước tiên nó sẽ kiểm tra cấu hình cho kho lưu trữ đó (mà bạn có thể kiểm tra git config --list
) cho một khóa được gọi branch.<branchname>.remote
. Nếu điều đó không được đặt, "nó mặc định là nguồn gốc" - git-scm.com/docs/git-push
origin
là không tên kho từ xa. Nó là một bí danh địa phương bộ được đặt làm khóa thay cho URL kho lưu trữ từ xa.
Nó tránh người dùng phải gõ toàn bộ URL từ xa khi nhắc đẩy.
Tên này được đặt theo mặc định và theo quy ước của Git khi nhân bản từ xa lần đầu tiên.
Tên bí danh này không được mã hóa cứng và có thể được thay đổi bằng dấu nhắc lệnh sau:
git remote rename origin mynewalias
Hãy xem http://git-scm.com/docs/git-remote để biết thêm chi tiết.
Git có khái niệm "điều khiển từ xa", đơn giản là các URL tới các bản sao khác của kho lưu trữ của bạn. Khi bạn sao chép một kho lưu trữ khác, Git sẽ tự động tạo một điều khiển từ xa có tên "origin" và trỏ đến nó.
Bạn có thể xem thêm thông tin về điều khiển từ xa bằng cách gõ git remote show origin
.
git remote show origin
, tại sao không đơn giản git show origin
? Phải có một lý do, nó là gì? Cảm ơn.
origin
là bí danh mặc định cho URL của kho lưu trữ từ xa của bạn.
Đơn giản! "Origin" chỉ là những gì bạn đặt biệt danh cho kho lưu trữ từ xa của bạn khi bạn chạy một lệnh như thế này:
git remote add origin git@github.com:USERNAME/REPOSITORY-NAME.git
Từ đó trở đi, Git biết rằng "nguồn gốc" trỏ đến kho lưu trữ cụ thể đó (trong trường hợp này là kho lưu trữ GitHub). Bạn có thể đặt tên nó là "github" hoặc "repo" hoặc bất cứ thứ gì bạn muốn.
Tôi cũng bối rối vì điều này, và dưới đây là những gì tôi đã học được.
Khi bạn sao chép một kho lưu trữ, ví dụ từ GitHub:
origin
là bí danh cho URL mà bạn đã sao chép kho lưu trữ. Lưu ý rằng bạn có thể thay đổi bí danh này.
Có một master
nhánh trong kho lưu trữ từ xa (bí danh bởi origin
). Ngoài ra còn có một master
chi nhánh khác được tạo ra tại địa phương.
Thông tin thêm có thể được tìm thấy từ câu hỏi SO này: Phân nhánh Git: master so với origin / master so với điều khiển từ xa / origin / master
Khi bạn sao chép một kho lưu trữ git clone
, nó sẽ tự động tạo một kết nối từ xa được gọi là origin
trỏ trở lại kho lưu trữ nhân bản. Điều này hữu ích cho các nhà phát triển tạo một bản sao cục bộ của kho lưu trữ trung tâm vì nó cung cấp một cách dễ dàng để kéo các thay đổi ngược dòng hoặc xuất bản các cam kết cục bộ. Hành vi này cũng là lý do tại sao hầu hết các dự án dựa trên Git gọi nguồn gốc kho lưu trữ trung tâm của họ.
Câu trả lời tốt nhất ở đây:
https://www.git-tower.com/learn/git/glossary/origin
Trong Git, "origin" là tên viết tắt của kho lưu trữ từ xa mà dự án ban đầu được sao chép từ đó. Chính xác hơn, nó được sử dụng thay cho URL của kho lưu trữ ban đầu - và do đó làm cho việc tham chiếu dễ dàng hơn nhiều.
Từ https://www.git-tower.com/learn/git/glossary/origin :
Trong Git, "origin" là tên viết tắt của kho lưu trữ từ xa mà dự án ban đầu được sao chép từ đó. Chính xác hơn, nó được sử dụng thay cho URL của kho lưu trữ ban đầu - và do đó làm cho việc tham chiếu dễ dàng hơn nhiều.
Lưu ý rằng nguồn gốc không có nghĩa là một tên "ma thuật", mà chỉ là một quy ước tiêu chuẩn. Mặc dù thật hợp lý khi để nguyên tắc này không bị ảnh hưởng, bạn hoàn toàn có thể đổi tên nó mà không mất bất kỳ chức năng nào.
Trong ví dụ sau, tham số URL cho lệnh "clone" trở thành "nguồn gốc" cho kho lưu trữ cục bộ nhân bản:
git clone https://github.com/gittower/git-crash-course.git
Các câu trả lời khác nói rằng đó origin
là bí danh cho URL của kho lưu trữ từ xa không hoàn toàn chính xác. Cần lưu ý rằng một địa chỉ bắt đầu bằng http
một URL trong khi một địa chỉ bắt đầu bằng git@
một URI hoặc Mã định danh tài nguyên chung.
Tất cả các URL là URI, nhưng không phải tất cả các URI đều là URL.
Nói tóm lại, khi bạn gõ git remote add origin <URI>
bạn đang nói với git cục bộ của bạn rằng bất cứ khi nào bạn sử dụng từ origin
bạn thực sự có nghĩa là URI mà bạn đã chỉ định. Hãy nghĩ về nó giống như một biến giữ một giá trị.
Và cũng giống như một biến, bạn có thể đặt tên cho nó bất cứ điều gì bạn muốn (ví dụ. github
, heroku
, destination
, Vv).