a

Câu hỏi Làm thế nào để đổi tên một nhánh Git cục bộ?


Tôi không muốn đổi tên nhánh từ xa, như được mô tả trong Đổi tên nhánh chính cho cả kho lưu trữ Git cục bộ và từ xa.

Làm thế nào tôi có thể đổi tên một chi nhánh địa phương mà chưa được đẩy đến một chi nhánh từ xa?


6714
2017-07-06 03:20


gốc




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


Nếu bạn muốn đổi tên nhánh trong khi trỏ đến bất kỳ nhánh nào, hãy làm:

git branch -m <oldname> <newname>

Nếu bạn muốn đổi tên nhánh hiện tại, bạn có thể thực hiện:

git branch -m <newname>

Một cách để nhớ điều này, là -m là để "di chuyển" (hoặc mv), đó là cách bạn đổi tên tệp.


10700
2017-07-06 03:21



Điều tôi thực sự muốn biết là liệu điều này có thực sự ảnh hưởng đến nhánh từ xa khi / nếu bạn đẩy - PandaWood
@PandaWood: nó sẽ thêm nhánh mới khi bạn đẩy, nhưng sẽ không xóa nhánh cũ. Nếu bạn dùng git push -f --mirror, sau đó nó sẽ đổi tên nhánh trên điều khiển từ xa, nhưng bạn chỉ nên sử dụng phương thức này nếu điều khiển từ xa đơn giản là bản sao kho lưu trữ hiện tại của bạn. Xem thêm câu hỏi này: stackoverflow.com/questions/1526794/git-rename-remote-branch - siride
@ PandaWood, nó phụ thuộc vào cách push.default được cấu hình. Theo mặc định (matching) nó sẽ đẩy đến một từ xa có tên phù hợp. Bạn sẽ phải làm git push origin <newname>:<oldname> hoặc bạn sẽ tạo một nhánh từ xa mới. Tuy nhiên, nếu push.default được đặt thành upstream, sau đó bạn có thể push origin head và mọi thứ sẽ đi đến tên cũ trên điều khiển từ xa. - Erin Stanfill
@ NightOwl888: -m có lẽ là viết tắt của "di chuyển", theo quy ước của Unix về việc sử dụng mv để đổi tên tệp. Lý do cho việc này là di chuyển và đổi tên, trong một hệ thống tệp inode dựa trên thư mục, là hoàn toàn tương đương. - siride
Tên dài của -m tùy chọn là --move, ví dụ., git branch --move master đổi tên nhánh hiện tại thành "master". - robenk


git branch -m old_branch_name new_branch_name

Lệnh trên sẽ thay đổi tên chi nhánh của bạn, nhưng bạn phải rất cẩn thận bằng cách sử dụng nhánh đã đổi tên, vì nó sẽ vẫn đề cập đến nhánh thượng nguồn cũ được liên kết với nó, nếu có.

Nếu bạn muốn đẩy một số thay đổi vào master sau khi chi nhánh địa phương của bạn được đổi tên thành new_branch_name (tên ví dụ):

git push origin new_branch_name:master (bây giờ các thay đổi sẽ chuyển đến nhánh chính nhưng tên chi nhánh địa phương của bạn là new_branch_name)

Để biết thêm chi tiết, xem "Cách đổi tên tên chi nhánh địa phương của bạn trong Git. "


351
2018-01-21 09:49





Để đổi tên nhánh hiện tại của bạn:

git branch -m <newname>

247
2018-06-20 15:05



Bạn sẽ cần sử dụng -M để đổi tên nếu bạn chỉ thay đổi cách viết hoa, vì git sẽ cho bạn biết nhánh đó đã tồn tại. - cjspurgeon
Bạn đã lưu tôi với nhận xét này. - jpadilladev
@cjspurgeon Git tiếp tục làm tôi ngạc nhiên bằng cách trực quan đến mức độ bất ngờ. Từ nhiều năm trước. - 0xc0de


Dưới đây là các bước để đổi tên nhánh:

1. switch to branch which needs to be renamed
2. git branch -m <new_name>
3. git push origin :<old_name>
4. git push origin <new_name>:refs/heads/<new_name>

CHỈNH SỬA (12/01/2017): Đảm bảo bạn chạy lệnh git status và kiểm tra xem chi nhánh mới được tạo ra có trỏ đến ref riêng của nó và không chỉ cũ hơn. Nếu bạn tìm thấy tham chiếu đến nhánh cũ hơn, bạn cần hủy đặt luồng ngược bằng cách sử dụng:

git branch --unset-upstream

186
2018-04-15 12:50



Trong đó bước nào sẽ bỏ đặt ngược dòng? Trước bước 4? - Cyclonecode
@Cyclonecode: vâng. sau bước 4. Nhưng hãy chắc chắn rằng bạn chạy trạng thái git để kiểm tra xem nó có tham chiếu đến nhánh cũ hay không. - Milind Anantwar


Đổi tên nhánh sẽ hữu ích khi nhánh của bạn kết thúc. Sau đó, công cụ mới sắp ra mắt và bạn muốn phát triển trong cùng một chi nhánh thay vì xóa nó và tạo mới.

Từ kinh nghiệm của tôi, để đổi tên một nhánh địa phương và từ xa trong Git, bạn nên thực hiện các bước sau.

Trích dẫn từ Nhiều quốc gia - Đổi tên chi nhánh địa phương và từ xa trong   git

1. Đổi tên chi nhánh địa phương của bạn

Nếu bạn đang ở trên nhánh bạn muốn đổi tên:

git branch -m new-name

Nếu bạn đang ở trên một nhánh khác:

git branch -m old-name new-name

2. Xóa chi nhánh từ xa tên cũ và đẩy chi nhánh địa phương mới tên

git push origin :old-name new-name

3. Đặt lại nhánh ngược dòng cho chi nhánh địa phương mới

git push origin -u new-name

124
2017-10-14 03:22



Cái này làm việc tốt hơn cho tôi. Ở đây, 2 bước đã cho tôi các lỗi sau: error: dst ref refs/heads/<old-name> receives from more than one src.; error: failed to push some refs to 'git@uri:foo/bar.git' - Anto
Bạn gặp sự cố khi chạy lệnh git push origin :old-name new-name đúng? - trungk18
Yep chính xác (xin lỗi tôi có nghĩa là "bước 2", không phải "2 bước" - mệt mỏi) - Anto


Các câu trả lời cho đến nay đã đúng nhưng đây là một số thông tin bổ sung: Người ta có thể đổi tên chi nhánh bằng '-m' (di chuyển), nhưng người ta phải cẩn thận, bởi vì '-M' buộc đổi tên, ngay cả khi có một chi nhánh hiện có có cùng tên. Đây là đoạn trích từ trang người đàn ông 'git-branch':

Với tùy chọn -m hoặc -M, <oldbranch> sẽ được đổi tên thành <newbranch>. Nếu <oldbranch> có một reflog tương ứng, nó được đổi tên thành match <newbranch>và một mục nhập lại được tạo ra để nhớ đổi tên chi nhánh. Nếu <newbranch> tồn tại, -M phải được sử dụng để buộc việc đổi tên xảy ra.


83
2017-09-24 13:21



Điều gì xảy ra với chi nhánh bị ghi đè? - Kevin Dice
Nó được ghi đè bởi tên / chi nhánh mới. Ví dụ nếu bạn có các nhánh sau trong git: master b1 <- nhánh hiện tại b2 sau khi bạn thực hiện 'git branch -M b2', bạn sẽ chỉ có: master b2 <- branch branch b1 sẽ biến mất và nếu bạn muốn phục hồi nó, bạn nên kiểm tra nó bằng băm của nó. Bạn có thể nhìn thấy nó bằng cách gõ 'git reflog'. Chúc mừng. - Vanchev
Các -M cờ cũng hữu ích khi ép buộc đổi tên nếu bạn chỉ sửa trường hợp tên chi nhánh, ví dụ: thay đổi myBranch đến MyBranch. (Với -m, git trả về fatal: A branch named 'MyBranch' already exists.) - Jon Schneider


1. Đổi tên

Nếu đó là chi nhánh hiện tại của bạn, chỉ cần làm

git branch -m new_name

Nếu đó là một nhánh khác bạn muốn đổi tên

git branch -m old_name new_name

2. Theo dõi nhánh từ xa mới

- Nếu nhánh của bạn bị đẩy, sau đó sau khi đổi tên, bạn cần phải xóa nó khỏi kho lưu trữ Git từ xa và yêu cầu địa phương mới của bạn theo dõi một nhánh từ xa mới:

git push origin :old_name
git push --set-upstream origin new_name

68
2017-12-17 13:45





Tôi dại dột đặt tên một chi nhánh bắt đầu bằng dấu gạch nối, và sau đó kiểm tra chủ. Tôi không muốn xóa bỏ chi nhánh của tôi, tôi đã làm việc trong đó.

Cả hai đều không hoạt động:

git checkout -dumb-name

git checkout -- -dumb-name

"S, 'cát \cũng không giúp được gì. git branch -m không hoạt động.

Đây là cách cuối cùng tôi đã sửa nó. Đi vào .git / refs / heads của bản sao làm việc của bạn, tìm tên tệp "-dumb-name", lấy hàm băm của nhánh. Sau đó, điều này sẽ kiểm tra nó ra, làm cho một chi nhánh mới với một tên sane, và xóa một cái cũ.

git checkout {hash}
git checkout -b brilliant-name
git branch -d -- -dumb-name

58
2017-11-09 07:31



Bạn không thể đổi tên tập tin trong refs / heads? - android.weasel
Như trên. Nếu bạn phải đào sâu vào cấu trúc thư mục để thực hiện phép thuật này, hãy làm theo cách và thực hiện 'mv - -dumb-name brilliant-name' Làm một 'git branch -av' và bạn sẽ thấy một cấu trúc thư mục .git / refs. Hoặc có thể 'grep -R ^ .git / refs' để xem trực tiếp băm. - Dave X
Có thể bạn đã sử dụng reflog - Code Whisperer
Thành thật mà nói, nếu đó là con đường bạn muốn đi, tôi sẽ tránh (IMO khó hiểu và có khả năng nguy hiểm nếu bạn không biết những gì bạn đang làm) jaunt thông qua thư mục .git ở nơi đầu tiên, và chỉ cần làm điều đó với một số lệnh bình thường với một số "git log" phân tích cú pháp (sử dụng cờ thích hợp để hiển thị các chi nhánh, và để tìm ra shasum bạn muốn thanh toán một chi nhánh mới từ), và sau đó làm điều đó. Sau đó, loại bỏ các chi nhánh có tên là wonky. tôi khinh thường git khẳng định rằng bạn cần phải hiểu tất cả các hoạt động bên trong của nó để làm một số điều, nhưng rất cảm kích rằng bạn có thể làm những việc đó. - Jon V
Thật khó để tạo một chi nhánh có tên xấu trong phiên bản 2.10.1+. Nếu bạn làm điều đó bằng cách nào đó, bạn có thể sử dụng git branch -v để lấy phiên bản băm ngắn của các nhánh của bạn (add -r for remote). Sau đó bạn có thể sử dụng git rev-parse <shorthash> để nhận được băm đầy đủ nếu bạn cần. - House of Dexter


Để đổi tên chi nhánh cục bộ:

git branch -m [old-branch] [new-branch]

Bây giờ bạn sẽ phải truyền bá những thay đổi này trên máy chủ từ xa của bạn.

Để đẩy các thay đổi của nhánh cũ đã bị xóa:

git push origin :[old-branch]

Để thúc đẩy thay đổi tạo chi nhánh mới:

git push origin [new-branch]

55
2017-08-20 06:39





Đổi tên nhánh bằng lệnh này:

git branch -m [old_branch_name] [new_branch_name]

-m: Nó đổi tên / di chuyển nhánh. Nếu đã có chi nhánh, bạn sẽ gặp lỗi.

Nếu đã có một nhánh và bạn muốn đổi tên với nhánh đó, hãy sử dụng:

 git rename -M [old_branch_name] [new_branch_name]

Để biết thêm thông tin về trợ giúp, sử dụng lệnh này trong terminal:

git branch --help

hoặc là

man git branch

28
2018-04-11 06:19





Người dùng Git nâng cao có thể đổi tên theo cách thủ công:

Rename the old branch under .git/refs/heads to the new name

Rename the old branch under .git/logs/refs/heads to the new name

Update the .git/HEAD to point to yout new branch name

26
2017-08-05 09:04