Câu hỏi Làm thế nào để tạo một nhánh Git từ xa?


Tôi tạo ra một chi nhánh địa phương mà tôi muốn 'đẩy' ngược dòng. Có một câu hỏi tương tự ở đây trên Stack Overflow về cách theo dõi một nhánh từ xa mới được tạo ra.

Tuy nhiên, quy trình làm việc của tôi hơi khác một chút. Đầu tiên Tôi muốn tạo ra một chi nhánh địa phương, và tôi sẽ chỉ đẩy nó lên thượng nguồn khi tôi hài lòng và muốn chia sẻ chi nhánh của tôi.

  • Tôi sẽ làm như thế nào? (tìm kiếm google của tôi dường như không tìm ra bất kỳ thứ gì).
  • Làm thế nào tôi có thể nói với các đồng nghiệp của tôi để kéo nó từ kho lưu trữ ngược dòng?

CẬP NHẬT Với Git 2.0, có một câu trả lời đơn giản hơn Tôi đã viết dưới đây: https://stackoverflow.com/a/27185855/109305


2712
2017-10-05 09:21


gốc


có ai từng trả lời câu hỏi thứ hai của bạn không? >> Và làm thế nào tôi có thể nói với các đồng nghiệp của tôi để kéo nó từ kho lưu trữ ngược dòng? - milkplus
Có thể liên quan: Pro Git: Phân nhánh 3,5 Git - Chi nhánh từ xa.
@milkplus get fetch --all lấy các nhánh mới ở phía xa (nhưng chỉ một get fetch --prune xóa các tham chiếu cục bộ tới các nhánh bị xóa từ xa). Tôi nghĩ, hoặc điều này nên được thiết lập tự động, hoặc bạn phải nói chuyện với họ bằng lời nói. - peterh
Có thể trùng lặp Làm thế nào để đẩy một chi nhánh địa phương mới vào kho lưu trữ Git từ xa và theo dõi nó? - Trevor Boyd Smith


Các câu trả lời:


Trước tiên, bạn tạo chi nhánh của bạn tại địa phương:

git checkout -b <branch-name> # Create a new branch and check it out

Nhánh từ xa sẽ tự động được tạo khi bạn đẩy nó đến máy chủ từ xa. Vì vậy, khi bạn cảm thấy sẵn sàng cho nó, bạn chỉ có thể làm:

git push <remote-name> <branch-name> 

Ở đâu <remote-name> thường là origin, cái tên mà git cung cấp cho điều khiển từ xa mà bạn nhân bản. Các đồng nghiệp của bạn sau đó sẽ chỉ kéo nhánh đó và nó sẽ tự động được tạo cục bộ.

Tuy nhiên, lưu ý rằng chính thức, định dạng là:

git push <remote-name> <local-branch-name>:<remote-branch-name>

Nhưng khi bạn bỏ qua một, nó giả định cả hai tên chi nhánh đều giống nhau. Có nói điều này, như một lời của thận trọng, đừng phạm sai lầm nghiêm trọng khi chỉ định :<remote-branch-name> (với dấu hai chấm), hoặc nhánh từ xa sẽ bị xóa!

Để sau đó git pull sẽ biết phải làm gì, thay vào đó bạn có thể muốn sử dụng:

git push --set-upstream <remote-name> <local-branch-name> 

Như được mô tả bên dưới, --set-upstream tùy chọn thiết lập một nhánh ngược dòng:

Đối với mỗi chi nhánh được cập nhật hoặc   đã đẩy thành công, thêm thượng nguồn   (theo dõi) tham chiếu, được sử dụng bởi   git-pull đối số-ít (1) và khác   lệnh.


3296
2017-10-05 09:29



Lưu ý rằng hành vi mặc định của git là đẩy kết hợp refs, vì vậy git push <remote> sẽ không đẩy chi nhánh nếu nó không có mặt trên <remote>. - Jakub Narębski
Bạn có thể muốn sử dụng git push -u <remote-name> <branch-name> thay vào đó, để tiếp theo git pull sẽ biết phải làm gì. - Bart Schuller
Thay vì chỉ định rõ tên máy chủ, bạn chỉ có thể sử dụng origin, có nghĩa là "máy chủ tôi nhận được phần còn lại của repo này từ": do đó git push origin <branch-name>. - jpatokal
Nếu bạn quên sử dụng -u tùy chọn, bạn có thể chỉ cần gõ git push -u sau đó trong chi nhánh, sau đó git pull sẽ làm việc. - Jan
Để tất cả chúng cùng nhau, git push -u origin <local-branch-name> là những gì làm việc cho tôi. - Samo


Trước tiên, bạn phải tạo chi nhánh của bạn tại địa phương

git checkout -b your_branch

Sau đó, bạn có thể làm việc tại địa phương trong chi nhánh của bạn, khi bạn đã sẵn sàng chia sẻ chi nhánh, hãy đẩy nó. Lệnh tiếp theo đẩy nhánh vào kho gốc từ xa và theo dõi nó

git push -u origin your_branch

Đồng đội có thể liên hệ với chi nhánh của bạn bằng cách thực hiện:

git fetch
git checkout origin/your_branch

Bạn có thể tiếp tục làm việc trong nhánh và đẩy bất cứ khi nào bạn muốn mà không chuyển các tham số tới git push (pushless git push sẽ đẩy master đến remote master, your_branch local đến remote your_branch, etc ...)

git push

Đồng đội có thể đẩy tới nhánh của bạn bằng cách thực hiện các cam kết và sau đó đẩy một cách rõ ràng

... work ...
git commit
... work ...
git commit
git push origin HEAD:refs/heads/your_branch

Hoặc theo dõi các chi nhánh để tránh các đối số để git push

git checkout --track -b your_branch origin/your_branch
... work ...
git commit
... work ...
git commit
git push

797
2017-07-26 01:09



Nếu git thấy quá phức tạp đối với bạn, tôi khuyên bạn nên sử dụng Dropbox hoặc Google Drive, REALLY, nó đơn giản hơn nhiều so với git và vẫn có phiên bản / v.v ... - dseminara


Giải pháp Git 2.0+ đơn giản:

Kể từ Git 2.0 hành vi trở nên đơn giản hơn:

Bạn có thể cấu hình git với push.default = current để làm cho cuộc sống dễ dàng hơn:

Tôi đã thêm điều này vì vậy bây giờ tôi có thể chỉ cần đẩy một nhánh mới với

$ git push -u

-u sẽ theo dõi nhánh từ xa cùng tên. Không với cấu hình này, bạn sẽ tự động đoán tham chiếu từ xa để git push. Từ tài liệu git.config:

push.default 

Xác định hành động git push nên dùng nếu không có refspec được đưa ra một cách rõ ràng.

push.default = current - đẩy nhánh hiện tại để cập nhật nhánh với   cùng tên trên đầu nhận. Hoạt động trong cả luồng công việc trung tâm và phi trung tâm.

Đối với tôi, đây là cách đơn giản hóa tốt công việc Git hàng ngày của tôi. Cài đặt cấu hình sẽ xử lý trường hợp sử dụng 'thông thường' khi bạn thêm chi nhánh tại địa phương và muốn tạo chi nhánh từ xa. Ngoài ra, tôi có thể dễ dàng tạo các chi nhánh địa phương từ điều khiển từ xa bằng cách thực hiện git co remote_branch_name (trái với việc sử dụng --set-upstream-to cờ).

Tôi biết câu hỏi này và câu trả lời được chấp nhận là khá cũ, nhưng hành vi đã thay đổi để bây giờ các tùy chọn cấu hình tồn tại để làm cho luồng công việc của bạn đơn giản hơn.

Để thêm vào cấu hình Git toàn cục của bạn, hãy chạy cấu hình này trên dòng lệnh:

$ git config --global push.default current

242
2017-11-28 09:46



Tôi tìm thấy git push -u origin HEAD như đã trả lời đây một chút chi tiết hơn (bạn viết những gì bạn đang làm) mà không bị quá nhiều để gõ. Hơn nữa, một git push -u mà không có đối số bổ sung không hoạt động đối với tôi nếu nhánh được tạo -t - Qw3ry


Như đã nêu trong các câu trả lời trước,

git push <remote-name> <local-branch-name>:<remote-branch-name>

là đủ để đẩy chi nhánh địa phương.

Đồng nghiệp của bạn, có thể kéo tất cả các nhánh từ xa (bao gồm cả các nhánh mới) bằng lệnh này:

git remote update

Sau đó, để thực hiện thay đổi trên nhánh, luồng thông thường:

git checkout -b <local-branch-name> <remote-name>/<remote-branch-name>

65
2017-12-27 14:12





Tạo một chi nhánh mới tại địa phương dựa trên nhánh hiện tại:

git checkout -b newbranch

Cam kết bất kỳ thay đổi nào như bình thường. Sau đó, đẩy nó lên thượng nguồn:

git push -u origin HEAD

Đây là một phím tắt để đẩy chi nhánh hiện tại đến một chi nhánh cùng tên trên origin và theo dõi nó để bạn không cần chỉ định origin HEAD trong tương lai.


49
2018-02-24 14:58



Điều này đã giúp trong trường hợp của tôi: git push -u origin HEAD. Tôi nghĩ đó là cách rõ ràng nhất. - Scadge
Vâng, bạn không bao giờ nhớ những gì bạn đã gõ lần cuối như một chi nhánh, chính xác, vì vậy đây là con đường để đi. - marksyzm
@marksyzm Nếu bạn không thể nhớ bạn đang ở nhánh nào hoặc bạn đặt tên nó là gì, bạn có lẽ không nên thúc đẩy! Ít nhất, không phải không chạy git status Đầu tiên. - Zenexer
Phải, phải chắc chắn rằng thế giới không nổ tung trên cú đẩy đó; Tôi đồng ý. - marksyzm
Đây là cách hiệu quả nhất để tạo chi nhánh theo dõi cũng như chi nhánh từ xa cùng một lúc. Tôi cũng muốn thêm git remote show origin là bước thứ ba chỉ để hình dung mối quan hệ theo dõi / theo dõi mới. - hb5fa


Nếu bạn muốn thực sự chỉ cần tạo nhánh từ xa mà không cần có một địa phương, bạn có thể làm như sau:

git push origin HEAD:refs/heads/foo

Nó đẩy bất cứ điều gì là HEAD của bạn đến chi nhánh foo không tồn tại trên điều khiển từ xa.


32
2017-11-25 15:29



Làm điều này hoàn toàn nhầm lẫn Visual Studio của tôi đến điểm mà nó sẽ không bắt đầu một cách chính xác. Team Explorer sẽ không tải chút nào, nhưng mọi thứ khác cũng khiến cho các nhà khai thác cũng gặp lỗi. Chỉ là FYI. - Josh
Điều này nghe có vẻ như nó sẽ làm việc, nhưng khi tôi thực sự đã thử nó, máy chủ gitlab của chúng tôi đã không nhận ra kết quả như một chi nhánh. - JosephH
Những gì chi nhánh là foo phân nhánh tắt trên điều khiển từ xa? Nếu tôi muốn foo để chi nhánh của foo2? Điều đó có thể không? Cảm ơn bạn. - user674669


Nếu bạn muốn tạo chi nhánh từ nhánh hiện tại

git checkout -b {your_local_branch_name} 

bạn muốn một chi nhánh từ một chi nhánh từ xa, bạn có thể thử

git checkout -b {your_local_branch_name} origin/<remote_branch_name>

Nếu bạn đã hoàn tất các thay đổi, bạn có thể thêm tệp.

git add -A or git add <each_file_names>

Sau đó thực hiện cam kết cục bộ

git commit -m 'your commit message'

Khi bạn muốn đẩy đến repo từ xa

git push -u origin <your_local_branch_name>

Tất cả sẽ cùng nhau

git checkout -b bug_fixes 

hoặc là Nếu bạn muốn tạo một chi nhánh từ một nhánh từ xa nói phát triển 

git checkout -b Sửa lỗi gốc/phát triển

Bạn có thể đẩy chi nhánh đến repo từ xa bằng cách

git push -u origin **bug_fixes**

Bất cứ lúc nào bạn muốn cập nhật chi nhánh của bạn từ bất kỳ chi nhánh nào khác nói bậc thầy.

git pull origin master.


23
2018-05-01 06:12





Trước tiên, bạn tạo chi nhánh tại địa phương:

git checkout -b your_branch

Và sau đó để tạo chi nhánh từ xa:

git push --set-upstream origin your_branch

Lưu ý: Tính năng này hoạt động trên các phiên bản git của latests:

$ git --version
git version 2.3.0

Chúc mừng!


22
2018-04-21 23:43



Đây chỉ là văn bản trợ giúp được tạo bởi lệnh git push khi chi nhánh địa phương của bạn không được theo dõi bởi một điều khiển từ xa. - nurettin


Tạo nhánh trên máy cục bộ của bạn và chuyển đổi nhánh này:

$ git checkout -b [name_of_your_new_branch]

Đẩy nhánh trên github:

$ git push origin [name_of_your_new_branch]

Khi bạn muốn cam kết một cái gì đó trong chi nhánh của bạn, hãy chắc chắn là trong chi nhánh của bạn.

Bạn có thể xem tất cả các nhánh được tạo bằng cách sử dụng:

$ git branch

Điều này sẽ hiển thị:

* approval_messages
  master
  master_clean

Thêm từ xa mới cho chi nhánh của bạn:

$ git remote add [name_of_your_remote] 

Đẩy các thay đổi từ cam kết của bạn vào chi nhánh của bạn:

$ git push origin [name_of_your_remote]

Cập nhật chi nhánh của bạn khi chi nhánh ban đầu từ kho chính thức đã được cập nhật:

$ git fetch [name_of_your_remote]

Sau đó, bạn cần phải áp dụng để hợp nhất các thay đổi, nếu chi nhánh của bạn được bắt nguồn từ sự phát triển bạn cần phải làm:

$ git merge [name_of_your_remote]/develop

Xóa một nhánh trên hệ thống tập tin cục bộ của bạn:

$ git branch -d [name_of_your_new_branch]

Để buộc xóa chi nhánh cục bộ trên hệ thống tệp của bạn:

$ git branch -D [name_of_your_new_branch]

Xóa nhánh trên github:

$ git push origin :[name_of_your_new_branch]

Ở đây tất cả thông tin

Dự án hiện tại khác


16
2018-05-27 11:39