git-reset hash
đặt tham chiếu nhánh thành mã băm đã cho và tùy chọn kiểm tra nó, với --hard
.
git-checkout hash
đặt cây làm việc thành băm đã cho; và trừ khi băm là tên chi nhánh, bạn sẽ kết thúc bằng một đầu tách rời.
cuối cùng, giao dịch git với 3 điều:
working tree (your code)
-------------------------------------------------------------------------
index/staging-area
-------------------------------------------------------------------------
repository (bunch of commits, trees, branch names, etc)
git-checkout
theo mặc định chỉ cập nhật các chỉ mục và cây làm việc, và tùy chọn có thể cập nhật một cái gì đó trong kho (với tùy chọn -b
)
git-reset
theo mặc định, chỉ cập nhật kho lưu trữ và chỉ mục và tùy chọn cây làm việc (với tùy chọn --hard
)
Bạn có thể nghĩ về kho lưu trữ như thế này:
HEAD -> master
refs:
master -> sha_of_commit_X
dev -> sha_of_commit_Y
objects: (addressed by sha1)
sha_of_commit_X, sha_of_commit_Y, sha_of_commit_Z, sha_of_commit_A ....
git-reset
điều chỉnh tham chiếu của chi nhánh.
Giả sử lịch sử của bạn trông như thế này:
T--S--R--Q [master][dev]
/
A--B--C--D--E--F--G [topic1]
\
Z--Y--X--W [topic2][topic3]
Hãy ghi nhớ rằng các chi nhánh chỉ là tên mà trước tự động khi bạn cam kết.
Vì vậy, bạn có các chi nhánh sau:
master -> Q
dev -> Q
topic1 -> G
topic2 -> W
topic3 -> W
Và chi nhánh hiện tại của bạn là topic2
, có nghĩa là, các điểm HEAD để topic2.
HEAD -> topic2
Sau đó, git reset X
sẽ đặt lại tên topic2
để trỏ đến X; có nghĩa là nếu bạn thực hiện một cam kết P trên nhánh topic2, mọi thứ sẽ trông như thế này:
T--S--R--Q [master][dev]
/
A--B--C--D--E--F--G [topic1]
\
Z--Y--X--W [topic3]
\
P [topic2]
tôi được bảo hiểm này trong một cập nhật cho câu trả lời của tôi để một trong những câu hỏi trước đó của bạn - nhìn vào nghệ thuật ascii gần đầu trang, đặc biệt là nơi nó nói "Digression: ..." (nhiều như tôi muốn đại diện nhiều hơn để trả lời lại nó ở đây) – Cascabel
Tôi nghĩ bạn có thể đăng câu trả lời của bạn ở đây và giành được đại diện từ nó. Nếu ai đó tìm kiếm kiến thức cụ thể này, anh ta sẽ không tìm thấy bài đăng khác. Điều này nhằm mục đích một chủ đề rất cụ thể, và nó xứng đáng để có trang riêng của nó. BTW, có vẻ như bạn là người cố vấn Git của tôi :-) harigato, senseï! –
Nhưng tôi nhận được nó, sự khác biệt là thiết lập lại di chuyển chi nhánh và không thanh toán. –