Có cách nào để thiết lập kho git, để git pull
mặc định thành một từ xa và git push
mặc định khác không? Tôi biết tôi có thể đặt cả hai bằng cách thay đổi giá trị của biến số remote
trong phần chi nhánh của .git/config
, nhưng cách thực hiện cho từng hướng riêng biệt?Từ xa mặc định khác nhau (chi nhánh theo dõi) cho git pull và git push
Trả lời
Đối với Git 1.6.4 trở lên, hãy đặt remote.<name>.pushurl
với cấu hình git.
Bạn có thể sử dụng tính năng này để kéo bằng giao thức chỉ đọc https:
và đẩy bằng giao thức dựa trên ssh.
Say origin
's url (remote.origin.url
) là https://git.example.com/some/repo.git
. Đây là chỉ đọc, nhưng bạn có quyền truy cập ghi thông qua ‘URL’ dựa trên ssh [email protected]:some/repo.git
. Chạy lệnh sau để có hiệu lực đẩy qua giao thức ssh-based:
git config remote.origin.pushurl [email protected]:some/repo.git
Từ những gì tôi có thể thu thập từ git config man page, repo ngược dòng là:
- bởi nguồn gốc mặc định
- do
branch.remote
- luôn cho cả
git pull/fetch
vàgit pull
Đối với một cho nhánh, tôi không thấy bất kỳ cách nào để có hai từ xa riêng biệt theo mặc định.
Điều này có vẻ đúng trong thực tế cho git v1.8.3.2, sau khi thử cả cụm từ 'git config remote ...' và git remote set-url ... ', cho một nhánh hoặc toàn bộ bản sao của một repo. –
để đặt lại từ xa mặc định trở lại thành 'origin' cho nhánh hiện tại và đẩy/kéo đến/từ tên chi nhánh phù hợp:' git push - origin-upstream origin
Kể từ Git phiên bản 1.7.0, bạn có thể thiết lập này với:
git remote set-url --push origin https://your.push.com/blah/
3 năm sau câu hỏi, nhưng đây phải là câu trả lời được chấp nhận mới! – Kevlar
@Kevlar Tại sao? Việc chấp nhận được sử dụng để đánh dấu không phải lúc nào cũng là câu trả lời "tốt nhất", mà là câu trả lời cho OP (đọc FAQ để biết thêm thông tin). Tại một thời điểm đặt câu hỏi ở trên, câu trả lời sẽ không hoạt động (thậm chí không tồn tại), như git là cách sớm hơn 1.8. Tuy nhiên, câu trả lời được chấp nhận đã làm việc cho OP. Lý do gì để bạn tìm cách thay đổi quyết định của OP sau ba năm? – trejder
@trejder Stack Overflow cũng là một nơi để phục vụ câu trả lời hữu ích cho khách truy cập trong tương lai, những người tìm thấy một câu hỏi thông qua một công cụ tìm kiếm hoặc bất cứ điều gì. Có giá trị để có câu trả lời hiện tốt nhất xuất hiện đầu tiên. Tôi không nói rằng OP * phải * thay đổi câu trả lời được chấp nhận, nhưng nó sẽ là hoàn toàn hợp lý (và theo ý kiến của tôi là một tích cực net) để làm như vậy. – amalloy
này hoạt động trong 1.7.1 trở lên -
git remote set-url --push origin [email protected]:username/somerepo.git
Điều này khác với câu trả lời của [user392887] (http://stackoverflow.com/a/17930364/41071) như thế nào? – svick
Tôi không có khả năng nhận xét hoặc trả lời câu trả lời đó. Hai điều quan trọng cần lưu ý trong câu trả lời của tôi: 1) Tôi sử dụng ssh. Theo GitHub, "Chúng tôi khuyên bạn nên sử dụng kết nối SSH khi tương tác với GitHub. Khóa SSH là cách để nhận dạng các máy tính đáng tin cậy mà không cần có mật khẩu." 2) Bất cứ ai sử dụng RHEL/CentOS 6 sẽ sử dụng git 1.7.1 theo mặc định - 1.7.1 hỗ trợ set-url, tôi chỉ sử dụng nó. – potto
Kể từ Git 1.8.3, bạn có thể sử dụng tùy chọn remote.pushDefault
để thực hiện chính xác những gì bạn muốn (tức là có điều khiển từ xa mặc định khác nhau cho pull
và push
). Bạn có thể đặt tùy chọn giống như bất kỳ tùy chọn nào khác; ví dụ, để đặt nó vào pushTarget
từ xa, sử dụng
git config remote.pushDefault pushTarget
Tùy chọn này sẽ có tác dụng sau:
git pull
sẽ kéo từ quy định từ xa bằng cácremote
tùy chọn trong phần chi nhánh liên quan.git/config
, trong khigit push
sẽ đẩy tới điều khiển từ xa được chỉ định bởiremote.pushDefault
.
Lưu ý rằng bạn cần chỉ định tên của điều khiển từ xa, không phải URL. Điều này làm cho giải pháp này linh hoạt hơn giải pháp liên quan đến remote.<name>.pushurl
, bởi vì (ví dụ) bạn sẽ vẫn có các nhánh theo dõi cho cả hai điều khiển từ xa. Cho dù bạn cần hay muốn sự linh hoạt này tùy thuộc vào bạn.
The release notes nói tùy chọn này được thêm cụ thể để hỗ trợ quy trình làm việc tam giác.
Lạ lùng: Tôi nghĩ bạn đang đẩy lên thượng lưu, và bạn không biết có bao nhiêu repo ở hạ lưu đang kéo ra khỏi bạn: xem http://stackoverflow.com/a/2749166/6309 – VonC
@VonC Ah, vâng, tôi thấy tại sao nó khó hiểu. Tôi thường gọi điều khiển từ xa mà tôi muốn * kéo * từ mặc định 'upstream' vì ... well ... nó là thượng nguồn của kho lưu trữ của tôi trong suốt quá trình kéo. Nhưng tùy chọn là 'pushDefault', không phải' pullDefault', vì vậy tôi đã sử dụng 'downstream' làm tên trong ví dụ. Nó có thể là một ý tưởng tốt hơn để gọi nó là 'defaultPushTarget';) – MvanGeest
@MvanGeest Tôi đồng ý. Nhưng tôi xác nhận bạn thường đẩy lên "thượng lưu". Có một (hoặc rất ít và được biết đến) thượng nguồn. Nhưng có thể có nhiều (và chưa biết) hạ lưu. Đó là vũ trụ DVCS (như trong "phân tán"). – VonC
- 1. chi nhánh Git: theo dõi ngược dòng
- 2. Bắt chi nhánh git hiện để theo dõi các chi nhánh từ xa
- 3. Git - theo dõi nhiều nhánh từ xa?
- 4. Git: Chi nhánh theo dõi là gì?
- 5. Git thiết lập chi nhánh theo dõi từ xa
- 6. từ xa mặc định cho git fetch
- 7. git: làm cách nào để chỉ định một nhánh push-to từ xa mặc định?
- 8. Git theo dõi nhánh từ xa bằng netbeans
- 9. Sự khác biệt giữa chi nhánh theo dõi từ xa và chi nhánh trên điều khiển từ xa là gì?
- 10. Git push: đặt mục tiêu cho chi nhánh
- 11. chi nhánh địa phương và từ xa cần khớp tên cho git push?
- 12. Git - đẩy đến một nhánh theo dõi từ xa trong kho từ xa
- 13. Git: Không thể nhìn thấy mới chi nhánh từ xa
- 14. Cách thanh toán chi nhánh từ xa trong Git?
- 15. giải thích lệnh cho git xóa chi nhánh từ xa
- 16. Đổi tên chi nhánh git từ xa
- 17. git thêm chi nhánh từ xa
- 18. Sự khác biệt giữa 'git push -f' và 'xóa nhánh từ xa và đẩy lại'
- 19. "git pull" hoặc "git merge" giữa các nhánh chính và chi nhánh phát triển
- 20. git pull và git push in one go
- 21. Sự khác nhau giữa nguồn gốc git push và master gốc git push
- 22. Giữ hai chi nhánh Git khác nhau theo một tệp
- 23. "git rebase <branch>" trên git svn repo thay đổi đích theo dõi từ xa?
- 24. Git lưu trữ các chi nhánh theo dõi từ xa ở đâu
- 25. git đẩy tệp đơn lẻ vào một chi nhánh theo dõi từ xa
- 26. Cập nhật chi nhánh địa phương với các thay đổi từ một chi nhánh được theo dõi từ xa
- 27. Git: không thể chuyển sang chi nhánh mới từ xa
- 28. Không thể xóa chi nhánh từ xa trong git
- 29. Git: cập nhật thông tin chi nhánh từ xa
- 30. Bí danh Git để xóa chi nhánh từ xa
Làm thế nào để thúc đẩy một câu nói ' phát triển 'chi nhánh và kéo đến từ nói' sản xuất 'chi nhánh trong cùng một kho + Git từ xa? – Ninad