2011-09-28 14 views
30

Do việc sử dụng các mô-đun con trong các dự án của tôi, tôi thường thấy mình trên "(không có nhánh)". Vì tôi cũng đang thêm mã vào các mô-đun con tôi cam kết trong đó. Khi tôi muốn đẩy những submodules đó, tôi cần phải ở trên nhánh của khóa học. Do đó câu hỏi của tôi:Git: đặt chi nhánh thành ref hiện tại

Có cách nào/phím tắt trong git (dòng lệnh) để thiết lập một chi nhánh địa phương đến hiện cam/HEAD mà không có đường vòng của

git checkout the_branch 
git reset --hard <previous commit-ish> 

Để được chính xác hơn, vấn đề thực sự của tôi với "đường vòng" ở trên là tôi tạm thời rời khỏi HEAD ban đầu bằng lệnh thanh toán. Điều đó có thể tránh được với lệnh git branch -f (nhờ CharlesB).

Trả lời

39

Thanh toán chi nhánh với -B: điều này sẽ đặt lại chi nhánh thành HEAD, là ref hiện tại.

git checkout -B <branch> 

Từ docs:

Nếu -B được đưa ra, được tạo ra nếu nó không tồn tại; nếu không, nó được đặt lại. Đây là tương đương với giao dịch của

$ git branch -f <branch> [<start point>] 
$ git checkout <branch> 

mà là để nói, các chi nhánh không được thiết lập lại/tạo trừ khi "git thanh toán" là thành công.

+3

Tôi bây giờ nhận ra lệnh "branch -f" là những gì tôi đang tìm kiếm, bởi vì vấn đề thực sự của tôi là tôi không muốn "rời" cam kết mà tôi hiện đang ngồi. Cảm ơn. –

+1

Liên kết tới tài liệu chính thức: https://git-scm.com/docs/git-checkout#git-checkout-emgitcheckoutem-b-Bltnewbranchgtltstartpointgt –

16
git checkout -B the_branch HEAD 

này sẽ kiểm the_branch tại cam HEAD, thậm chí nếu the_branch chỉ ở một nơi khác trước đó. Nó đã được thêm vào trong một trong vài phiên bản git cuối cùng, vì vậy bạn có thể không có nó. Tuyến đường thay thế sẽ là git branch -D the_branch && git checkout -b the_branch

+0

Tôi đang sử dụng phiên bản git 1.7.0.4 và thanh toán -B chưa tồn tại. Nhưng thật tuyệt khi thấy rằng nó sẽ là trong tương lai. –

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