2011-11-10 33 views

Trả lời

39

Bạn có thể tạo chi nhánh mới trỏ đến cam kết hiện tại sử dụng git branch branchname (hoặc git checkout -b branchname nếu bạn muốn trực tiếp kiểm tra chi nhánh). Điều này về cơ bản sẽ sao chép chi nhánh chính của bạn, vì vậy bạn có thể tiếp tục làm việc trên đó.

Nếu bạn đã sao chép thành công chi nhánh, bạn có thể đặt lại master thành điểm ban đầu bằng cách sử dụng git reset --hard commit trong đó commit là giá trị băm của cam kết phải là giá trị cuối cùng trên trang cái.

Vì vậy, ví dụ bạn có một tình huống như thế này:

---- 1 ---- 2 ---- 3 ---- 4 ---- 5 ---- 6 
       ^    ^
       original    master 
      master commit 

Vì vậy, bạn đã kiểm tra ra master trên phạm 6, và bạn muốn tạo một chi nhánh mới ticket trỏ đến 6 rằng trong khi đặt master-3:

git branch ticket 
git reset --hard 3 
git checkout ticket 

Và sau đó bạn đang ở trên ticket trỏ đến cam kết 6, trong khi master điểm đến 3.

+0

Điều đó sẽ hiệu quả nếu chi nhánh mới của bạn được cho là thoát khỏi 'chủ nhân'. Nếu bạn cần nó trên một dòng phát triển khác, bạn sẽ phải xem xét [git-rebase] (http://linux.die.net/man/1/git-rebase) – che

+0

tuyệt vời. cảm ơn bạn. "-b" là gì? – Ramy

+1

'-b' trong' git checkout' yêu cầu Git tạo chi nhánh trước khi kiểm tra. Về cơ bản, nó là một phím tắt để 'git branch name' và' git checkout name'; bạn thường sử dụng nó khi bạn muốn bắt đầu làm việc trên một chi nhánh mới cho một cái gì đó. – poke

5

Nếu bạn có cam kết (nói) 2 lần sau khi bạn nhận ra rằng bạn cần phải có được trong một chi nhánh sau đó chỉ cần làm

git branch work_branch 
git reset --hard HEAD~2 

thay thế 2 với số lượng cam kết sao bạn muốn đi. Bạn vẫn sẽ ở chế độ chủ tại thời điểm này, nếu bạn muốn chuyển đến chi nhánh để tiếp tục công việc, chỉ cần git checkout work_branch

xem git rev-parse --help nếu bạn muốn hiểu cú pháp về cách sao lưu cây cam kết với tham chiếu như HEAD~2

+0

Hi @Mark Fisher, bạn có ý nghĩa gì bởi "2 lần"? –

+1

@adrianmann - Ý tôi là nếu bạn thực hiện 2 công việc riêng biệt, hãy thêm các thay đổi và cam kết mỗi cái, vì vậy lịch sử của bạn trông giống như Start -> A -> B, trong đó A và B là 2 commit. –

+0

thats tuyệt vời, cảm ơn một triệu. –

0

Tạo một chi tiết mới chi nhánh từ nơi bạn cần có, và sau đó anh đào chọn các thay đổi trên chi nhánh không chính xác vào chi nhánh mới.

Sau đó, bạn có thể xóa chi nhánh xấu, giả sử bạn chưa đẩy nó ở nơi khác và các thay đổi khác đã được thực hiện đối với nó.

Các vấn đề liên quan