Git
-
-:
-
Blob, tree, ref. Bản chất của Git:
- Có 4 loại object chính – blob, tree, commit, annotated tag
- Có thể xem nội dung file với hash là như nhau. Nhưng file thì có thể có kích thước vô cùng lớn, còn hash thì luôn chỉ có 40 ký tự
- Bản chất của Git chỉ là những cặp giá trị key – value
- Có thể hiểu blob là hash của một file, tree là hash của một folder, còn commit thực ra chỉ là hash của folder tổng
- Ref là hệ thống đặt tên các object
- Key là hash của object, value là nội dung object
-
Commit:
- @ là viết tắt của HEAD
- HEAD là commit hiện tại
- Git không biết gì về folder
- git log giúp xem lịch sử các commit
- git reflog giúp xem lại các ref không có trong lịch sử commit
- stash pop nếu gặp conflict sẽ không pop
- Thứ ta đang trực tiếp chỉnh sửa mà ta tưởng là dữ liệu của mình thực chất là thứ được vay mượn từ commit
- Reset soft dùng để gộp nhiều commit lại với nhau. Reset hard dùng để xoá bỏ những gì đã ghi sau commit được chọn
- ~ và dấu mũ là để chỉ các commit trước đó
- Việc commit giúp ta phá code mà không sợ gì, giống như có đồ bảo hộ rồi thì tha hồ nghịch điện cao thế
-
File:
- diff does not take into account untracked files
- git diff
- git add -A làm cho index giống như ở working directory. git commit -am chỉ áp dụng cho những file đã có sẵn trong index
- Stage, cache, index là những cái tên khác nhau cho cùng một thứ
- Untracked, staged, unchanged và unstaged là 4 trạng thái chính của một file
- git status giúp xem những file nào đã được vào stage
- ls-files chỉ làm việc với index
- pathspecs giúp chọn đường dẫn một cách linh hoạt và tinh tế hơn
-
GitHub:
-
Repo: