Làm cách nào để đổi tên một chi nhánh Git địa phương?


8573

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

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

Trong trường hợp bạn cũng cần đổi tên chi nhánh từ xa :
Làm cách nào để đổi tên cả tên chi nhánh Git cục bộ và từ xa

Câu trả lời:


13735

Nếu bạn muốn đổi tên một nhánh trong khi chỉ vào 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 chi nhánh hiện tại, bạn có thể làm:

git branch -m <newname>

Một cách để nhớ điều này là -m"di chuyển" (hoặc mv), đó là cách bạn đổi tên các tệp. Thêm một bí danh cũng có thể giúp đỡ. Để làm như vậy, chạy như sau:

git config --global alias.rename 'branch -m'

Nếu bạn đang ở trên Windows hoặc một hệ thống tệp không phân biệt chữ hoa chữ thường khác và chỉ có các thay đổi viết hoa trong tên, bạn cần sử dụng -M, nếu không, git sẽ ném nhánh đã tồn tại lỗi:

git branch -M <newname>

87
Điều tôi thực sự muốn biết là liệu điều này có nhất thiết ảnh hưởng đến chi nhánh từ xa hay không khi / nếu bạn đẩy
PandaWood

181
@PandaWood: nó sẽ thêm chi nhánh mới khi bạn đẩy, nhưng sẽ không xóa chi nhánh cũ. Nếu bạn sử dụng git push -f --mirror, thì 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à một bản sao của 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

19
@PandaWood, nó phụ thuộc vào cách push.defaultcấu hình. Theo mặc định ( matching) nó sẽ đẩy đến một điều khiển có tên trùng khớp. Bạn sẽ phải làm git push origin <newname>:<oldname>hoặc bạn sẽ tạo một chi nhánh từ xa mới. Tuy nhiên, nếu push.defaultđược đặt thành upstream, thì bạn có thể push origin headvà mọi thứ sẽ chuyển đến tên cũ trên điều khiển từ xa.
Erin Stanfill

13
@ NightOwl888: -m có lẽ là viết tắt của "di chuyển", theo quy ước Unix sử dụng mvđể đổi tên các tệp. Lý do cho điều này là việc 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

51
Tên dài của -mtùy chọn là --move, ví dụ, git branch --move masterđổi tên nhánh hiện tại thành "master".
robenkleene

445
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 khi sử dụng nhánh được đổi tên, bởi vì nó vẫn sẽ đề cập đến nhánh ngược dòng cũ được liên kết với nó, nếu có.

Nếu bạn muốn đẩy một số thay đổi thành chủ 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 chi 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 ."


326

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

git branch -m <newname>

159
Bạn sẽ cần sử dụng -M để đổi tên nếu bạn chỉ thay đổi viết hoa, vì git sẽ cho bạn biết chi nhánh đó đã tồn tại.
cjspurgeon

289

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

  1. Chuyển sang chi nhánh cần được đổi tên
  2. git branch -m <new_name>
  3. git push origin :<old_name>
  4. git push origin <new_name>:refs/heads/<new_name>

EDIT (12/01/2017): Đảm bảo bạn chạy lệnh git statusvà kiểm tra xem nhánh mới được tạo có đang trỏ đến ref của chính nó không chứ không phải là nhánh cũ. Nếu bạn tìm thấy tham chiếu đến nhánh cũ hơn, bạn cần hủy đặt ngược dòng bằng cách sử dụng:

git branch --unset-upstream

1
Trong bước nào người ta sẽ bỏ đặt ngược dòng? Trước bước 4?
Cyclonecode

1
Đây là câu trả lời tốt nhất ở đây vì nó mô tả toàn bộ quá trình hoàn thành chính xác việc đổi tên
Chris Halcrow

212

Đổi tên chi nhánh sẽ hữu ích khi chi nhánh của bạn kết thúc. Sau đó, công cụ mới sẽ đến 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 công cụ mới.

Từ kinh nghiệm của tôi, để đổi tên một chi 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 một 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 ở 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

git push origin -u new-name

1
Điều 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

1
Bạn gặp vấn đề khi chạy lệnh git push origin :old-name new-namephải không?
trungk18

Đúng 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

116

Các câu trả lời cho đến nay đã chính xác, nhưng đây là một số thông tin bổ sung:

Người ta có thể đổi tên một cách an toàn với '-m' (di chuyển), nhưng người ta phải cẩn thận với '-M', bởi vì nó buộc phải đổi tên, ngay cả khi đã có một nhánh có cùng tên. Đây là đoạn trích từ trang man '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 khớp <newbranch>và một mục reflog được tạo để ghi nhớ việc đổi tên nhánh. Nếu <newbranch>tồn tại, -M phải được sử dụng để buộc đổi tên xảy ra.


2
Điều gì xảy ra với các chi nhánh bị ghi đè?
Kevin Dice

Nó được ghi đè bằng 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 nhánh -M b2', bạn sẽ chỉ còn: master b2 <- nhánh hiện tại 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 hàm băm của nó. Bạn có thể thấy nó bằng cách gõ 'git reflog'. Chúc mừng.
Vanchev

Các -Mlá cờ cũng rất hữu ích để buộc một đổi tên nếu bạn chỉ là sửa chữa trường hợp của tên chi nhánh, ví dụ như thay đổi myBranchđể MyBranch. (Với -m, trả lại git fatal: A branch named 'MyBranch' already exists.)
Jon Schneider

92

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 chi nhánh khác bạn muốn đổi tên

git branch -m old_name new_name

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

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

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

74

Tôi dại dột đặt tên cho một 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 chi nhánh của mình, tôi đã làm việc trong đó.

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

git checkout -dumb-name

git checkout -- -dumb-name

"s, 's và \s cũng không giúp được gì git branch -mkhô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ó, tạo một nhánh mới với một tên lành mạnh và xóa cái cũ.

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

8
Bạn không thể đổi tên tập tin trong refs / Heads sao?
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 tìm mọi cách và thực hiện một 'mv - -dumb-name rực rỡ' Làm một 'git chi nhánh -av' và bạn sẽ thấy cấu trúc thư mục của .git / refs. Hoặc có thể 'grep -R ^ .git / refs' để xem băm trực tiếp.
Dave X

2
Bạn có thể đã sử dụngreflog
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 bạn đang làm gì) đi qua thư mục .git ở nơi đầu tiên, và chỉ làm điều đó với một số các lệnh thông thường với một số phân tích cú pháp "git log" (sử dụng các cờ thích hợp để hiển thị các nhánh và để tìm ra shasum nào bạn muốn kiểm tra một nhánh mới từ đó), sau đó thực hiện nó. Sau đó, loại bỏ các nhánh có tên là wonky. Tôi khinh thường rằ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ố việc, nhưng đánh giá rất cao rằng bạn có thể làm những việc đó.
Jon V

Thật khó để tạo một nhánh có tên xấu trong 2.10.1+. Nếu bạn thực hiện 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 (thêm -r cho điều khiển từ xa). Sau đó, bạn có thể sử dụng git rev-parse <shorthash> để có được hàm băm đầy đủ nếu bạn cần.
Nhà của Dexter

67

Để đổi tên một chi nhánh tại địa phương:

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

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

Để đẩ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 ra chi nhánh mới:

git push origin [new-branch]

57

Chỉ cần ba bước để sao chép thay đổi tên remotecũng như trên GitHub:

Bước 1 git branch -m old_branchname new_branchname

Bước 2 git push origin :old_branchname new_branchname

Bước 3 git push --set-upstream origin new_branchname


2
Tôi cũng đã phải làm một điều git push --set-upstream origin new_branchnamegây nghiện : được đề cập trong câu trả lời
@Nomade

2
Bước 3 không cần thiết. Mọi thứ đã được cập nhật sau Bước 2.
Dev

@ Không phải trong tất cả các trường hợp Dev, tôi đã phải cập nhật gần đây kể từ khi sử dụng bitbucket và codecommit, bước 3 là cần thiết
Harry_pb

40

Đổ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 chi nhánh. Nếu đã có một 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 thiết bị đầu cuối:

git branch --help

hoặc là

man git branch

40

Người dùng Git nâng cao có thể đổi tên thủ công bằng cách sử dụ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

34
  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
  1. 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

  1. Đặ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

Hoặc để nhanh chóng thực hiện điều đó, bạn có thể sử dụng 3 bước sau:

# Đổi tên chi nhánh tại địa phương

git branch -m old_branch new_branch  

# Xóa chi nhánh từ xa cũ

git push origin :old_branch  

# Đẩy nhánh mới, đặt nhánh cục bộ để theo dõi điều khiển từ xa mới

git push --set-upstream origin new_branch   

Tham khảo: https://www.w3docs.com/snippets/git/how-to-rename-git-local-and-remote-branches.html


cái này hiệu quả với tôi
Vazgen Manukyan

26

Dưới đây là ba bước: Một lệnh mà bạn có thể gọi bên trong thiết bị đầu cuối của mình và thay đổi tên chi nhánh.

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 thêm: từng bước, Cách thay đổi tên chi nhánh Git là một bài viết hay về điều đó.


25

Có lẽ như được đề cập bởi những người khác, đây sẽ là một trường hợp không phù hợp trong việc đặt tên chi nhánh.

Nếu bạn gặp tình huống như vậy, tôi có thể đoán rằng bạn đang ở trên Windows cũng sẽ dẫn bạn đến:

$ git branch -m CaseSensitive casesensitive
fatal: A branch named 'casesensitive' already exists.

Sau đó, bạn phải làm một bước trung gian:

$ git branch -m temporary
$ git branch -m casesensitive

Chỉ có bấy nhiêu thôi.


1
Lưu ý rằng tình huống này cũng có thể xảy ra trên máy Mac, đây cũng là trường hợp (đặc biệt khó chịu) không nhạy cảm trong hệ thống tệp của nó.
Jon V

Ngoài ra, bạn có thể sử dụng -Mthay vì -mthực hiện đổi tên "vỏ sửa chữa" này trong một bước duy nhất.
Jon Schneider

23

Cố gắng trả lời cụ thể cho câu hỏi (ít nhất là tiêu đề).

Bạn cũng có thể đổi tên chi nhánh địa phương , nhưng tiếp tục theo dõi tên cũ trên điều khiển từ xa.

git branch -m old_branch new_branch
git push --set-upstream origin new_branch:old_branch

Bây giờ, khi bạn chạy git push, old_branchref từ xa được cập nhật với địa phương của bạn new_branch.

Bạn phải biết và ghi nhớ cấu hình này. Nhưng nó có thể hữu ích nếu bạn không có lựa chọn cho tên chi nhánh từ xa, nhưng bạn không thích nó (ồ, ý tôi là, bạn có một lý do rất chính đáng để không thích nó!) Và thích rõ ràng hơn Tên cho chi nhánh địa phương của bạn.

Chơi với cấu hình tìm nạp, bạn thậm chí có thể đổi tên tham chiếu từ xa cục bộ. tức là, có một refs/remote/origin/new_branchcon trỏ ref đến nhánh, thực tế là old_branchtrên origin. Tuy nhiên, tôi rất không khuyến khích điều này, vì sự an toàn của tâm trí bạn.


22

Thay đổi chi nhánh tại địa phương khá dễ dàng ...

Nếu bạn ở trên nhánh bạn muốn thay đổi tên, chỉ cần làm điều này:

git branch -m my_new_branch

Mặt khác, nếu bạn đang ở masterhoặc bất kỳ chi nhánh nào khác ngoài chi nhánh bạn muốn thay đổi tên, chỉ cần thực hiện:

git branch -m my_old_branch my_new_branch

Ngoài ra, tôi tạo hình ảnh bên dưới để hiển thị điều này trong hành động trên một dòng lệnh . Trong trường hợp này, bạn đang ở masterchi nhánh, ví dụ:

Thay đổi tên chi nhánh tại địa phương


21

Nếu bạn sẵn sàng sử dụng SourceTree (mà tôi đặc biệt khuyên dùng), bạn có thể nhấp chuột phải vào chi nhánh của mình và chọn 'Đổi tên'.

nhập mô tả hình ảnh ở đây


20

Để đổi tên nhánh hiện tại (ngoại trừ trạng thái CHÍNH tách rời), bạn cũng có thể sử dụng bí danh này:

[alias]
    mvh = !sh -c 'git branch -m `git rev-parse --abbrev-ref HEAD` $1'

18

Một lựa chọn khác là không sử dụng dòng lệnh nào cả. Các ứng dụng khách Git GUI như SourceTree lấy đi phần lớn các đường cong / nỗi đau học tập cú pháp khiến cho các câu hỏi như câu hỏi này nằm trong số được xem nhiều nhất trên Stack Overflow.

Trong SourceTree, nhấp chuột phải vào bất kỳ nhánh cục bộ nào trong ngăn "Chi nhánh" ở bên trái và chọn "Đổi tên ...".


5
Tôi sẽ không gọi đó là nỗi đau. Lệnh git rất dễ sử dụng, một khi bạn đã thấy câu trả lời này, có lẽ bạn sẽ không bao giờ quay lại nữa. Vấn đề là nhiều hơn, vì vậy có vẻ như, tài liệu của dòng lệnh git không đủ trực quan.
Nearoo

1
Đúng nhưng với SourceTree tôi hầu như không cần phải lo lắng về việc kiểm tra tài liệu. Mọi thứ thường trực quan - chỉ cần nhấp chuột phải và xem các tùy chọn là gì. (BTW Tôi không liên kết với họ theo bất kỳ cách nào - giống như công cụ!)
Steve Chambers

17

Một cách đơn giả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

Để biết thêm, xem điều này .


15

Vì bạn không muốn đẩy chi nhánh đến một máy chủ từ xa, ví dụ này sẽ hữu ích:

Giả sử bạn có một nhánh hiện có tên là "my-hot-Feature" và bạn muốn đổi tên nó thành "Feature-15".

Đầu tiên, bạn muốn thay đổi chi nhánh địa phương của bạn. Điều này không thể dễ dàng hơn:

git branch -m my-hot-feature feature-15

Để biết thêm thông tin, bạn có thể truy cập Đổi tên cục bộ và từ xa một Chi nhánh trong Git .


13

Phiên bản Git 2.9.2

Nếu bạn muốn thay đổi tên của chi nhánh địa phương bạn đang trên:

git branch -m new_name

Nếu bạn muốn thay đổi tên của một chi nhánh khác:

git branch -m old_name new_name

Nếu bạn muốn thay đổi tên của một chi nhánh khác thành một tên đã tồn tại:

git branch -M old_name new_name_that_already_exists

Lưu ý: Lệnh cuối cùng là phá hoại và sẽ đổi tên chi nhánh của bạn, nhưng bạn sẽ mất chi nhánh cũ với tên đó và các cam kết đó vì tên chi nhánh phải là duy nhất.


11

Nếu bạn muốn thay đổi tên của chi nhánh hiện tại, hãy chạy:

git branch -m [old_branch] [new_branch]

Nếu bạn muốn xóa nhánh từ xa cũ, hãy chạy:

git push origin :[old_branch]

Nếu bạn muốn xóa nhánh từ xa cũ và tạo một nhánh từ xa mới, hãy chạy:

git push origin :old_branch new_branch

6

Đổi tên chi nhánh Git có thể được thực hiện bằng cách sử dụng:

  1. git branch -m oldBranch newBranch

  2. git branch -M oldBranch ExistingBranch

Sự khác biệt giữa -m-M :

-m: nếu bạn đang cố đổi tên chi nhánh của mình bằng tên chi nhánh hiện có bằng cách sử dụng -m . Nó sẽ đưa ra một lỗi nói rằng chi nhánh đã tồn tại. Bạn cần phải đặt tên duy nhất.

Nhưng,

-M: điều này sẽ giúp bạn buộc đổi tên bằng một tên cụ thể, thậm chí nó còn tồn tại. Vì vậy, một nhánh hiện có sẽ ghi đè hoàn toàn với nó ...

Dưới đây là ví dụ về thiết bị đầu cuối Git,

mohideen@dev:~/project/myapp/sunithamakeup$ git branch
  master
  master0
  new_master
  test
* test1
mohideen@dev:~/project/myapp/sunithamakeup$ git branch -m test1 test
fatal: A branch named 'test' already exists.
mohideen@dev:~/project/myapp/sunithamakeup$ git branch -M test1 test
mohideen@dev:~/project/myapp/sunithamakeup$ git branch
  master
  master0
  new_master
* test
mohideen@dev:~/project/myapp/sunithamakeup$

5

Đối với người dùng GUI Git, nó không thể đơn giản hơn nhiều. Trong Git GUI, chọn tên chi nhánh từ danh sách thả xuống trong hộp thoại "Đổi tên chi nhánh" được tạo từ mục menu Chi nhánh: Đổi tên, nhập Tên mới và nhấp vào "Đổi tên". Tôi đã nhấn mạnh nơi để tìm danh sách thả xuống.

Đổi tên một chi nhánh Git địa phương


3

Nếu bạn muốn:

  • Đổi tên kho Git, chạy: git branch -m <oldname> <newname>
  • Xóa chi nhánh cũ bằng cách: git push origin: old-name new-name
  • Cam kết sử dụng: git commit <newname>
    • và sau đó đẩy bằng cách sử dụng: git push origin new_branch_name:master
  • Nếu bạn muốn kiểm tra trạng thái thì sử dụng: git status
  • Nếu bạn muốn kiểm tra thì sử dụng: git checkout

3

Tất cả các câu trả lời trước đang nói về git branch -m . Tất nhiên, nó dễ vận hành, nhưng đối với tôi, có thể hơi khó để nhớ một lệnh Git khác. Vì vậy, tôi đã cố gắng để hoàn thành công việc theo lệnh mà tôi đã quen thuộc. Vâng, bạn có thể đoán nó.

Tôi sử dụng git branch -b <new_branch_name>. Và nếu bạn không muốn lưu nhánh cũ bây giờ, bạn có thể thực hiện git branch -D <old_branch_name>để xóa nó.

Tôi biết nó có thể hơi tẻ nhạt, nhưng nó dễ hiểu và dễ nhớ hơn. Tôi hy vọng nó hữu ích cho bạn.


Nếu bạn gặp khó khăn trong việc ghi nhớ các lệnh, bạn có thể tự thiết lập bí danh shell hoặc git.
sean

Nếu tôi cần chạy lệnh trên nhiều máy khác nhau thì sao?
Đại Kaixian

1

Trong PhpStorm:

VCS → Git → Chi nhánh ... → Chi nhánh địa phương → _your_branch_ → Đổi tên


0

Tất cả bạn phải làm là ba bước:

  1. Đặt chi nhánh cũ dưới .git / refs / đứng đầu tên mới
  2. Đặt chi nhánh cũ dưới .git / log / refs / đứng đầu tên mới
  3. Cập nhật .git / HEAD để dẫn đến tên chi nhánh mới của bạn
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.