Tôi chỉ đang học Git, thực hiện một hướng dẫn. Tôi đang ở chi nhánh seo_title và tôi có những thay đổi không được cam kết đối với tệp tin mission.html. Tôi đã làm git checkout master
mong đợi để nhận được cảnh báo về những thay đổi không dàn dựng cho cam kết, không có thay đổi bổ sung, vv, tuy nhiên thay vào đó nó đã đi trước và chuyển sang chi nhánh với thông điệp:Git cho phép tôi chuyển đổi các chi nhánh mà không thực hiện các thay đổi
M mission.html
Switched to branch 'master'
Sau đó, khi tôi đã làm git diff mission.html
nó chỉ cho tôi rằng thư mục làm việc vẫn chứa các thay đổi tôi đã thực hiện trong khi tôi đã kiểm tra chi nhánh khác. Tôi đang thiếu gì? Đối với những gì nó có giá trị, tôi đang sử dụng Git Bash trên Windows.
CHỈNH SỬA: các thay đổi đối với mission.html cũng chưa được thêm vào chỉ mục dàn dựng.
CHỈNH SỬA 2: Tôi nghĩ câu trả lời bình chọn hàng đầu là chính xác, nhưng khi điều tra thêm, nó không phù hợp với hành vi tôi thấy. Dưới đây là một mô tả đầy đủ hơn về những gì tôi đang làm:
top_directory(master) > git branch new_branch_1
top_directory(master) > git branch new_branch_2
top_directory(master) > git checkout new_branch_1
(mở notepad ++ và sửa đổi resources.html, tiết kiệm)
top_directory(master) > git status
# On branch new_branch_1
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed
# (use "git checkout -- <file>..." to discard changes in wo
#
# modified: resources.html
#
no changes added to commit (use "git add" and/or "git commit
top_directory(new_branch_1) > git checkout new_branch_2
Đây là nơi tôi mong đợi git để phản đối và cho tôi biết để stash hoặc cam kết kể từ new_branch_1 và new_branch_2 có các phiên bản khác nhau của resources.html, nhưng nó chỉ chuyển sang chi nhánh mới mà không một lời cảnh báo và nó mang lại những thay đổi không bị giam cùng:
M resources.html
Switched to branch 'new_branch_2'
top_directory(new_branch_2) > git status
# On branch new_branch_2
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: resources.html
#
no changes added to commit (use "git add" and/or "git commit -a")
có mod e hoặc một thiết lập sẽ làm cho nó hoạt động theo cách này thay vì cảnh báo? Hay tôi vẫn hiểu lầm kịch bản?
CHỈNH SỬA 3: Tôi hiểu ngay bây giờ. Câu trả lời được đánh giá hàng đầu là đúng, xem nhận xét cuối cùng của tôi về câu trả lời đó.
Câu hỏi là gì? Có, git cho phép thanh toán chi nhánh khác. Điều này khá hữu ích. Nếu do nhầm lẫn nếu bạn đã chỉnh sửa tệp từ chi nhánh sai, bạn có thể thanh toán chi nhánh chính xác và cam kết ở đó. – balki
Điều tôi đang nhầm lẫn là: Tôi nghĩ thanh toán sẽ cố gắng cập nhật thư mục làm việc để phù hợp với nhánh mới và khi tìm thấy các thay đổi không được cam kết (sẽ bị mất khi thư mục làm việc được cập nhật) sẽ hủy bỏ thanh toán . Ít nhất đó là những gì hướng dẫn chỉ ra (và tôi đã chứng kiến) trong một bài học trước đó – burgerB
Có thể là do bạn không có bất kỳ cam kết nào sau chi nhánh chính. Vì vậy, tất cả các chi nhánh của bạn trỏ đến cùng một đối tượng cam kết. Khi bạn kiểm tra từ một chi nhánh khác, bạn thực sự kiểm tra từ cùng một cam kết với nhánh hiện tại. – nn0p