Tôi chỉ đổi tên chi nhánh địa phương của tôi bằng cách sử dụng
git branch -m oldname newname
nhưng điều này chỉ đổi tên phiên bản địa phương của chi nhánh. Làm cách nào tôi có thể đổi tên một cái trên GitHub?
Tôi chỉ đổi tên chi nhánh địa phương của tôi bằng cách sử dụng
git branch -m oldname newname
nhưng điều này chỉ đổi tên phiên bản địa phương của chi nhánh. Làm cách nào tôi có thể đổi tên một cái trên GitHub?
Câu trả lời:
Như đã đề cập, xóa cái cũ trên Github & đẩy lại, mặc dù các lệnh được sử dụng dài hơn một chút so với cần thiết:
git push origin :name_of_the_old_branch_on_github
git push origin new_name_of_the_branch_that_is_local
Đơn giản. Phân tích các lệnh một chút, lệnh git đẩy về cơ bản là:
git push <remote> <local_branch>:<remote_branch>
Vì vậy, thực hiện một cú đẩy không có local_branch được chỉ định về cơ bản có nghĩa là "không lấy gì từ kho lưu trữ cục bộ của tôi và biến nó thành nhánh từ xa". Tôi đã luôn nghĩ rằng điều này là hoàn toàn không có gì, nhưng đó là cách nó được thực hiện.
Chỉnh sửa: Kể từ Git 1.7, có một cú pháp thay thế để xóa một nhánh từ xa:
git push origin --delete name_of_the_remote_branch
Chỉnh sửa: Như được đề cập bởi @ void.pulum trong các bình luận
Lưu ý rằng bạn có thể kết hợp 2 thao tác đẩy:
git push origin :old_branch new_branch
Điều này sẽ xóa cả nhánh cũ và đẩy cái mới.
Điều này có thể được biến thành một bí danh đơn giản lấy từ xa, nhánh gốc và tên nhánh mới làm đối số, trong ~/.gitconfig
:
[alias]
branchm = "!git branch -m $2 $3 && git push $1 :$2 $3 -u #"
Sử dụng:
git branchm origin old_branch new_branch
Lưu ý rằng các đối số vị trí trong các lệnh shell là có vấn đề trong các phiên bản cũ hơn (trước 2.8?) Của git, vì vậy bí danh có thể thay đổi tùy theo phiên bản git. Xem cuộc thảo luận này để biết chi tiết.
git push origin :old_branch new_branch
. Điều này sẽ xóa cả nhánh cũ và đẩy cái mới.
git branch -m new_branch
(đổi tên old_branch thành new_branch) 2. git commit -m 'msg'
, 3. git push
4. Mhmm, old_branch xuất hiện trong Github, câu hỏi của Google và tôi được dẫn đến câu trả lời của bạn 5. git push origin :old_branch
(nói rằng nó đã bị xóa) 6. git push origin new_branch
... hoàn thành rồi nói * [new branch] new_branch -> old_branch
. Quay trở lại Github và old_branch
xuất hiện trở lại. Nếu tôi xóa trong giao diện người dùng web Github, tôi có tùy chọn "Khôi phục", do đó, có vẻ như việc đẩy new_branch chỉ là khôi phục.
Các lệnh sau làm việc cho tôi:
git push origin :old-name-of-branch-on-github
git branch -m old-name-of-branch-on-github new-name-for-branch-you-want
git push origin new-name-for-branch-you-want
Tôi đã tìm thấy 3 lệnh làm thế nào bạn có thể thay đổi tên nhánh git của mình và những lệnh này là cách nhanh hơn để làm điều đó
git branch -m old_branch new_branch # Rename branch locally
git push origin :old_branch # Delete the old branch
git push --set-upstream origin new_branch # Push the new branch, set local branch to track the new remote
Nếu bạn cần từng bước bạn có thể đọc bài viết tuyệt vời này
git push --set-upstream
là phần quan trọng nhất nếu bạn tình cờ thay đổi tên chi nhánh cục bộ bằng ứng dụng github trước khi xóa chi nhánh từ xa.
Chỉ cần loại bỏ nhánh cũ và tạo cái mới.
Ví dụ (chỉ đổi tên chi nhánh từ xa):
git push origin :refs/heads/oldname
git push origin newname:refs/heads/newname
Bạn cũng có thể nên đổi tên chi nhánh địa phương và thay đổi cài đặt cho nơi cần đẩy / kéo.
git push origin newname:refs/heads/newname
không? chủ và tên mới có thể không trỏ đến cùng một cam kết.
1. Đổi tên chi nhánh địa phương của bạn.
Nếu bạn ở trên nhánh bạn muốn đổi tên:
git branch -m new-name
Nếu bạn ở một chi nhánh khác:
git branch -m old-name new-name
2. Xóa nhánh từ xa tên cũ và đẩy nhánh cục bộ tên mới.
git push origin :old-name new-name
3. Đặt lại nhánh ngược dòng cho nhánh cục bộ tên mới.
Chuyển sang chi nhánh và sau đó:
git push origin -u new-name
Vì vậy, kết luận là
git branch -m new-name
git push origin :old-name new-name
git push origin -u new-name
git branch -m new-name && git push origin :master new-name
. Nó sẽ thất bại. Nếu câu trả lời này chỉ là về git và không phải là github thì câu hỏi này là một bản sao của một số câu hỏi khác và nên được đóng lại. Nếu nó thực sự là về github thì câu trả lời phải bao gồm github. Câu trả lời này không.
Bạn có thể làm điều đó mà không cần thiết bị đầu cuối, bạn chỉ cần tạo một nhánh với tên mới và loại bỏ cái cũ sau. Bạn có thể sử dụng bài đăng này để làm điều đó.
Bài viết này cho thấy làm thế nào để thực hiện nó dễ dàng.
1. Để đổi tên một nhánh Git cục bộ, chúng ta có thể sử dụng lệnh Git nhánh -m để sửa đổi tên:
git branch -m feature1 feature2
2. Nếu bạn chỉ tìm kiếm lệnh để đổi tên một nhánh Git từ xa, thì đây là "
git push -u origin feature2:feature3
Kiểm tra xem bạn có không các thẻ trên nhánh trước khi bạn làm điều này. Bạn có thể làm điều đó với git tag
.
Một cách khác là đổi tên các tệp sau :
.git/refs/head/[branch-name]
thành.git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/[branch-name]
thành.git/refs/remotes/[all-remote-names]/new-branch-name
Đổi tên đầu & từ xa cả trên PC cục bộ của bạn và trên nguồn gốc / (các) máy chủ từ xa
Nếu tên chi nhánh hiện tại của bạn chứa slash ( /
) git sẽ tạo các thư mục như vậy:
tên chi nhánh hiện tại: "awe/some/branch"
.git/refs/head/awe/some/branch
.git/refs/remotes/[all-remote-names]/awe/some/branch
muốn tên chi nhánh: "new-branch-name"
branch
tập tin từ.git/refs/*/awe/some/
.git/refs/head/
.branch
tập tin từ tất cả.git/refs/remotes/*/awe/some/
.git/refs/remotes/*/
.branch
các tập tin opied thành new-branch-name
..git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/new-branch-name
awe/some/branch
đến new-branch-name
(địa phương và từ xa!)Thông tin: Cách này có thể không phải là tốt nhất, nhưng nó vẫn hoạt động cho những người có thể gặp vấn đề với những cách khác
Trong trường hợp của tôi, tôi cần một lệnh bổ sung
để có được nhánh được đổi tên của mình để đẩy lên .
git branch --unset-upstream
origin newname
(Để dễ gõ), tôi trước git checkout oldname
.
Sau đó chạy như sau:
git branch -m newname
git push origin :oldname
hoặc hoặcgit push origin --delete oldname
git branch --unset-upstream
git push -u origin newname
git push origin newname
Bước bổ sung này có thể chỉ cần thiết vì tôi (có xu hướng) thiết lập theo dõi từ xa trên các chi nhánh của mình thông qua . Bằng cách này khi tôi đã thanh toán , sau đó tôi chỉ cần loại chứ không phảigit push
-u
origin oldname
oldname
git push
git push origin oldname
Nếu tôi KHÔNG sử dụng lệnh git branch --unset-upstream
trước đó git push origin newbranch
, git sẽ tạo lại oldbranch
và đẩy newbranch
tới origin oldbranch
- đánh bại ý định của tôi.
Các lệnh sau đổi tên nhánh cục bộ, xóa nhánh cũ trên vị trí từ xa và đẩy nhánh mới, đặt nhánh cục bộ để theo dõi điều khiển từ xa mới:
git branch -m old_branch new_branch
git push origin :old_branch
git push --set-upstream origin new_branch
Đơn giản như thế . Để đổi tên chi nhánh git cục bộ và từ xa, hãy sử dụng đoạn mã này (đã được thử nghiệm và hoạt động như một lá bùa):
git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>
Giải trình:
Đổi tên Bước:
Tham chiếu Git: Với tùy chọn -m hoặc -M , sẽ được đổi tên thành. Nếu có một reflog tương ứng, nó được đổi tên thành khớp và một mục reflog được tạo để ghi nhớ đổi tên nhánh. Nếu tồn tại, -M phải được sử dụng để buộc đổi tên xảy ra.
Xóa bước:
Tham chiếu Git: git đẩy gốc: thử nghiệm Tìm một ref phù hợp với thử nghiệm trong kho lưu trữ gốc (ví dụ: refs / Heads / thử nghiệm) và xóa nó.
Cập nhật Bước repo từ xa (tham chiếu ngược dòng để theo dõi):
Tham chiếu Git: --set-upflow Đối với mỗi nhánh được cập nhật hoặc được đẩy thành công, hãy thêm tham chiếu ngược dòng (theo dõi), được sử dụng bởi git-pull [1] và các lệnh khác. Để biết thêm thông tin, hãy xem chi nhánh..mge trong git-config [1].
git đẩy nguồn gốc
chi nhánh git -m tên cũ chi nhánh tên mới
git đẩy nguồn gốc
Trên nhánh git chạy nhánh git -m old_name new_name Điều này sẽ sửa đổi tên nhánh trên repo cục bộ repo cục bộ của bạn: old_name new_name Điều này sẽ đẩy tên đã sửa đổi từ xa và xóa nhánh git đẩy gốc -u new_name Đặt nhánh cục bộ để theo dõi chi nhánh từ xa. Điều này giải quyết vấn đề