4 điểm bởi GN⁺ 2025-01-18 | 1 bình luận | Chia sẻ qua WhatsApp
  • Cách giải quyết vấn đề với Git

    • Nhấn mạnh rằng Git là một công cụ phức tạp và dễ mắc lỗi, nên việc tìm cách xử lý sự cố không hề dễ.
    • Giải thích ngắn gọn bằng tiếng Anh đơn giản về nhiều tình huống sự cố khác nhau và cách khắc phục.
  • Các tình huống sự cố và cách giải quyết

    • Khi muốn hoàn tác một thao tác sai

      • Dùng git reflog để xem danh sách các thao tác trước đó, rồi dùng git reset HEAD@{index} để quay lại thời điểm mong muốn.
    • Khi cần chỉnh sửa nhỏ sau khi commit

      • Sau khi sửa, dùng git add .git commit --amend --no-edit để thêm thay đổi vào commit cuối cùng.
      • Lưu ý: không sửa các commit đã được công khai.
    • Khi muốn đổi message của commit cuối cùng

      • Dùng git commit --amend để thay đổi message.
    • Khi đã commit nhầm vào nhánh sai

      • Tạo một nhánh mới rồi dùng git reset HEAD~ --hard để xóa commit khỏi nhánh master, sau đó chuyển sang nhánh mới để giữ lại commit.
    • Khi lệnh diff không hoạt động

      • Dùng git diff --staged để kiểm tra khác biệt của các file đã được staging.
    • Khi muốn hoàn tác một commit trước đó

      • Tìm commit bằng git log, rồi dùng git revert [saved hash] để hoàn tác commit đó.
    • Khi muốn hoàn tác thay đổi của một file

      • Tìm commit trước đó bằng git log, rồi dùng git checkout [saved hash] -- path/to/file để khôi phục file.
  • Khác

    • Khi muốn đưa repository về trạng thái ban đầu
      • Dùng git fetch origin, git checkout master, git reset --hard origin/master để đồng bộ với repository từ xa.
      • Dùng git clean -d --force để xóa các file và thư mục chưa được theo dõi.
  • Lưu ý

    • Trang này không phải là tài liệu tham khảo toàn diện, và có thể có nhiều cách khác nhau để xử lý.
    • Gửi lời cảm ơn tới nhiều người đã tham gia vào bản dịch.

1 bình luận

 
GN⁺ 2025-01-18
Ý kiến Hacker News
  • Nên dùng git switch thay cho git checkout
  • Khuyến nghị tránh reset --hard, và đề xuất cách xử lý khi lỡ commit vào nhánh sai bằng cách tạo một nhánh mới
    • Tạo nhánh mới từ trạng thái hiện tại
    • Chuyển về commit trước đó
    • Ghi đè nhánh master về commit đó
    • Chuyển sang nhánh làm việc
  • Đề xuất cách xử lý khi commit nhầm vào nhánh sai bằng cherry-pick
    • Chuyển sang nhánh đúng
    • Lấy commit cuối cùng của master
    • Xóa khỏi master
  • Đề xuất cách dùng git trong tình huống "bó tay"
    • Lấy trạng thái mới nhất từ origin
    • Khôi phục các file đang được theo dõi
    • Xóa các file và thư mục không được theo dõi
    • Đặt lại master về phiên bản trên remote
  • Nên khuyến nghị UI làm cách học Git mặc định
    • Nếu thấy CLI nhanh hơn thì có thể dùng sau
    • Trước tiên cần hiểu cách tương tác với cây trạng thái một cách trực quan
  • Vui vì vẫn có kết quả tìm kiếm về hg+mercurial
    • Tiếc là hg đã thua trong cuộc chiến dvcs
  • Khó nhớ các đối số của lệnh Git
    • Các lệnh không dễ khám phá hoặc dễ ghi nhớ
  • Sẽ thấy kỳ lạ khi kỷ niệm 20 năm của git vào tháng 4 năm 2025
    • Có thể hiệu ứng GitHub đã khiến nhu cầu về một VCS mới biến mất
  • Trong các tình huống "oh shit", dùng cách xóa kho lưu trữ cục bộ rồi clone lại
    • Cách này hoạt động tốt trong 95% trường hợp
  • Khó nhớ git reflog vì dễ đọc nhầm thành "re-flog"
  • Không phải người dùng Git, nhưng cảm thấy "git commit" không có nhiều ý nghĩa
    • Chỉ quan trọng khi commit được push hoặc merge
  • Một trong những ưu điểm của Git là một khi đã tạo object thì gần như không thể mất công việc
    • Vì vậy, commit thường xuyên là điều quan trọng