Tôi muốn hiểu những gì Git thực sự lưu trữ khi di chuyển tệp vào trạng thái "dàn dựng".Vùng lưu trữ git lưu trữ tệp như thế nào?
xem xét theo trình tự sau:
Một tập tin mới được thêm vào và cam kết vào kho địa phương:
touch file.txt
git add file.txt
git commit
tôi có thay đổi đến tập tin:
echo text1 > file.txt
git add file.txt
tôi sau đó chỉnh sửa lại tệp, trước khi cam kết:
echo text2 > file.txt
Một status git cho thấy:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: file.txt
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: file.txt
#
sau đó tôi cam kết các file:
git commit file.txt
thế nào là git khả năng xử lý dàn dựng mới, cập nhật thứ hai để file.txt mà không bị nói với? Đầu ra "trạng thái" trông như thể nó sẽ cố gắng kiểm tra bản sửa đổi đầu tiên, nhưng giữ lại những thay đổi chưa được ghi lại mà không kiểm tra chúng.
Có một giai đoạn ngầm định được thực hiện trong trường hợp này không?
Hành vi tôi quan sát khi chạy thử nghiệm được mô tả ở trên là nó gửi nội dung chưa được lưu trữ của tệp ("text2") vào trong repo. Cách giải thích này có đúng không? Tôi sẽ nghĩ rằng nó sẽ gửi phiên bản "dàn dựng" của tập tin ("text1"). Tôi xác nhận đây là những gì trong repot bằng cách làm một "git checkout file.txt". –
Tôi vừa thực hiện một thử nghiệm nhưng không nhận được kết quả của bạn. 'mkdir gittest'' cd gittest' 'git init'' echo văn bản 1> test.txt' 'git add .'' git commit -m 'Initial commit'' 'echo text 2> test.txt'' git add .' 'echo text 3> test.txt' Tại thời điểm này, có sự thay đổi theo giai đoạn (" văn bản 2 ") và thay đổi không được tổ chức (" văn bản 3 "). Bây giờ, 'git checkout test.txt' và' cat test.txt'. Tôi nhận được "văn bản 2".Thay đổi cục bộ đã bị loại bỏ với thay đổi theo giai đoạn. – redhotvengeance
Tôi nhận được kết quả tương tự như chuỗi thử nghiệm của bạn. Nhưng nếu tôi thực hiện 'git commit' sau bước' echo text 3> test.txt' (tương tự như các bước của tôi trong bài gốc), đó là khi tôi quan sát git ngầm sắp xếp nội dung "text 3" và gửi nó đến repo. Để rõ ràng, chuỗi tôi làm ở đây là: 'mkdir gittest'' cd gittest' 'git init'' echo text 1> test.txt' 'git add .'' git commit -m 'Ban đầu commit'' 'echo text 2 > test.txt' 'git add .'' echo text 3> test.txt' 'git commit -m 'new''' git checkout test.txt' 'cat test.txt', dẫn đến kết xuất của" text 3 ". –