Làm cách nào để đổi tên nhánh Git 'master' của tôi thành 'release'?


115

Chúng tôi muốn thực thi một chính sách mới cho các dự án của mình mà nhánh chính bây giờ được gọi là nhánh phát hành để đảm bảo rõ ràng hơn về cách nhánh nên được sử dụng. Đương nhiên, chúng tôi cũng sẽ phát triển và phát hành các nhánh ứng viên.

Tôi hiểu rằng tôi có thể đổi tên cục bộ nhánh chính bằng cách sử dụng như sau:

git branch -m master release

Tuy nhiên, đó chỉ là cục bộ. Ngay cả khi tôi đẩy cái này lên điều khiển từ xa, HEAD vẫn chỉ đến nhánh chính từ xa. Tôi muốn loại bỏ hoàn toàn nhánh chính và đặt nhánh cục bộ mặc định khi sao chép ban đầu, được phát hành.

Làm thế nào tôi có thể đạt được điều này?

Có vẻ như vì nguồn gốc là trên máy chủ Gitorious , tôi gặp lỗi khi xóa nhánh chính. Bây giờ tôi đang cố gắng xem liệu có thể thay đổi điều này để nhánh mặc định là 'phát hành' hay không.


2
Heh, đủ công bằng. Giá trị lâu dài đủ cao để ít nhất là cố gắng.
Kyle Hayes


Một số máy chủ (từ xa) từ chối xóa nhánh "mặc định" (trường hợp của Github). Vì vậy, có lẽ bạn cần phải vào máy chủ để chọn một nhánh "mặc định" khác cho thời gian của các hoạt động ... Trên Github, điều này có thể được thực hiện trong chế độ xem "nhánh".
jehon

Câu trả lời:


139
git checkout -b release master    # Create and switch to the release branch
git push -u origin release        # Push the release branch to the remote and track it
git branch -d master              # Delete local master
git push --delete origin master   # Delete remote master
git remote prune origin           # Delete the remote tracking branch

Xin lưu ý, nếu bạn đang sử dụng GitHub, trước tiên bạn cần thay đổi nhánh "mặc định" của mình trên GitHub sau bước 3:

Trong kho lưu trữ của bạn trên github.com, đi tới Cài đặtChi nhánhChi nhánh mặc định . Thay đổi nó để phát hành và sau đó thực hiện các bước còn lại.


3
Khi tôi cố gắng git push --delete, tôi nhận được lỗi sau: xóa các chi nhánh hiện nay bị cấm
Kyle Hayes

8
Bạn đang sử dụng github hoặc một cái gì đó tương tự, bạn cần đặt nhánh mặc định khác: matthew-brett.github.com/pydagogue/gh_delete_master.html hoặc chỉ cần để master ở đó và bỏ qua nó.
Adam Dymitruk

Vâng, chúng tôi có một ví dụ nghiêm trọng. Hãy để tôi xem nếu đó là một lựa chọn.
Kyle Hayes

Dường như gitorious' cam kết móc cấm việc xóa các chi nhánh tổng thể - mà không có lý do chính đáng mà tôi có thể thấy: /
FGE

1
Điều tương tự ! [remote rejected] branch (deletion of the current branch prohibited) cũng sẽ xảy ra với Bitbucket. Chuyển "Kho lưu trữ chính" trong màn hình cài đặt (dưới biểu tượng bánh răng).
dnfehren

13

Kiểm tra chi nhánh chính của bạn

git checkout master

Tạo nhánh phát hành của bạn và chuyển sang nhánh đó:

git branch release
git checkout release

Đẩy nó lên máy chủ

git push origin release

Xóa tham chiếu nhánh chính trên máy chủ

git push origin :master

Xóa nhánh chính cục bộ

git branch -d master

2
Tôi có thể cho biết bằng các bước này tôi sẽ gặp phải lỗi tương tự như tôi đã đề cập ở trên.
Kyle Hayes

@KyleHayes Đó là vấn đề cấu hình của máy chủ. Mặc dù nó là cách này theo mặc định, quá trình thay đổi mà một trong hai nên được rõ ràng cho người sử dụng hoặc dễ dàng phát hiện trên Stackoverflow
Jeff Ferland

Bạn phải chuyển sang chi nhánh khác trước khi có thể xóa chi nhánh.
martinedwards

5

Lưu ý: Câu trả lời này dành cho các máy chủ Git tự lưu trữ nơi bạn có quyền truy cập dòng lệnh.

Vì cố gắng xóa remote masterkhỏi ứng dụng khách thực sự không được phép và tôi cho rằng việc cấm là denyDeleteCurrentcó lý, nên tôi không muốn thay đổi cài đặt đó.

Tuy nhiên, tôi thấy rằng cách dễ nhất để đổi tên iff chính mà bạn có quyền truy cập dòng lệnh vào máy chủ từ xa là chạy lệnh đổi tên trực tiếp trên điều khiển từ xa.

Điều này đã làm việc cho tôi:

  1. Đăng nhập qua SSH vào máy chủ git từ xa
  2. Đi tới thư mục xxx.git trong dự án của bạn
  3. chạy: git branch -m master release

Bây giờ kho lưu trữ từ xa sử dụng releaselàm nhánh mặc định của nó và bất kỳ git clonetrên kho lưu trữ đó từ bất kỳ ứng dụng khách nào sẽ kiểm tra nhánh phát hành theo mặc định.

Nó cũng rất hữu ích sau khi thiết lập một kho lưu trữ trống để định cấu hình nó theo nhu cầu của bạn.


3

Như những người khác đã nêu trước đây, vấn đề ở đây là Gitorious, không cho phép bạn xóa nhánh HEAD theo mặc định. Bạn có hai lựa chọn để giải quyết vấn đề này. Một là đăng nhập vào máy chủ Gitorious (với ssh), tìm kho lưu trữ Git trên máy chủ tệp và thêm:

[receive]
        denyDeleteCurrent = warn

vào cấu hình.

Một tùy chọn dễ dàng hơn chỉ là thay đổi nhánh mặc định. Đi tới kho lưu trữ của bạn trong giao diện web Gitorious, nhấn "Chỉnh sửa kho lưu trữ" và đặt "Đầu Thay đổi tham chiếu tượng trưng mà HEAD trong kho lưu trữ Git trỏ thành:". Sau khi hoàn thành việc này, bạn có thể xóa nhánh chính.


2

Nếu bạn gặp sự cố này với GitHub , hãy thực hiện các bước trên cho đến khi xóa nhánh trên điều khiển từ xa. Nó sẽ không cho phép bạn làm điều đó. Sau đó đăng nhập vào giao diện Web và trên kho lưu trữ, đi tới Cài đặtChi nhánhChi nhánh mặc định . Thay đổi nó thành nhánh mới và thực hiện các bước còn lại.


1

Tốt nhất, bạn muốn thiết lập theo dõi, vì vậy hãy làm như sau:

git push origin HEAD:release
git checkout --track origin/release

Bây giờ, bạn có muốn xóa những người khác không?

git branch -d master
git push origin :master

Đơn giản!


Tôi gặp lỗi tương tự như lỗi tôi đã đăng trong nhận xét của @ Adam khi tôi truy cập lệnh git push origin: master.
Kyle Hayes

0

Vì bạn đã hoàn tất việc đổi tên các chi nhánh, để đặt HEAD thành releasetừ xa

git remote set-head origin release

Sau đó, để xóa masterchi nhánh từ xa, bạn sẽ phải là quản trị viên, ít nhất là trên GitHub. Vui lòng tham khảo bài đăng này để biết thêm thông tin.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.