aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
SAVED POSTS
aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
aedev.net
No Result
View All Result
Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

Git log –follow: đọc tiếp lịch sử của một file sau khi đổi tên

Suong Nguyen by Suong Nguyen
10/11/2026
in Hướng dẫn
0
585
SHARES
3.2k
VIEWS
Summarize with ChatGPTShare to Facebook

Bạn đang điều tra một dòng tài liệu cũ, nhưng git log của đường dẫn hiện tại chỉ cho thấy vài commit gần đây. File có thể từng mang tên khác. Trước khi kết luận phần lịch sử trước đó đã mất, thử đọc log với tùy chọn follow dành cho một file.

Bài dùng Git 2.54.0, đối chiếu tài liệu ngày 10/11/2026. Fixture chạy trong repository tạm mới tạo, không sửa checkout làm việc, không fetch hoặc push. Ví dụ dùng lịch sử tuyến tính với một lần đổi tên nguyên nội dung, chưa kiểm tra merge hoặc các trường hợp đổi tên đồng thời sửa nhiều phần.

Dựng một lịch sử có thể tự đối chiếu

Chạy trong Bash. Mọi lệnh Git đều chỉ rõ repository tạm vừa tạo:

set -eu
demo_repo=$(mktemp -d /tmp/aedev-follow-demo.XXXXXX)
git init -q --template= "$demo_repo"
git -C "$demo_repo" config user.name 'AeDev Demo'
git -C "$demo_repo" config user.email '[email protected]'
git -C "$demo_repo" config commit.gpgsign false
git -C "$demo_repo" config core.hooksPath /dev/null
mkdir "$demo_repo/docs"
printf 'intro\nusage\nfaq\n' > "$demo_repo/docs/guide.txt"
git -C "$demo_repo" add docs/guide.txt
git -C "$demo_repo" commit -qm 'Create guide'

git -C "$demo_repo" mv docs/guide.txt docs/manual.txt
git -C "$demo_repo" commit -qm 'Rename guide to manual'

printf 'troubleshooting\n' >> "$demo_repo/docs/manual.txt"
git -C "$demo_repo" add docs/manual.txt
git -C "$demo_repo" commit -qm 'Extend manual'
printf 'Demo repository: %s\n' "$demo_repo"

Ba message mô tả rõ từng thay đổi để dễ đọc output. Commit đầu tạo guide.txt, commit thứ hai đổi thành manual.txt mà chưa sửa nội dung, commit thứ ba thêm một dòng. Hash và thời gian commit sẽ khác ở lần chạy khác; các kiểm tra trong bài dựa trên thứ tự và nội dung.

So hai cách xem log của tên hiện tại

Chạy tiếp trong cùng shell:

printf 'Current path only\n'
git -C "$demo_repo" -c log.follow=false log --format=%s -- docs/manual.txt
printf 'Follow the file\n'
git -C "$demo_repo" log --follow --format=%s -- docs/manual.txt
test -z "$(git -C "$demo_repo" status --porcelain)"

Lần đầu liệt kê Extend manual và Rename guide to manual. Lần có follow liệt kê thêm Create guide ở cuối. Working tree vẫn sạch vì các lệnh xem log không chỉnh file. -c log.follow=false ở phép so đầu làm rõ rằng nó không chịu cấu hình tự bật follow của người dùng.

git-log mô tả follow là cách tiếp tục lịch sử qua lần đổi tên và chỉ hỗ trợ một file. Dấu -- phân cách tùy chọn với đường dẫn, giúp ý định truy vấn dễ đọc, nhất là khi tên file có thể giống một tên revision.

Chọn câu hỏi trước khi thêm tùy chọn

Log theo đường dẫn hiện tại trả lời câu hỏi về các commit tác động đến tên đang xét trong phạm vi lịch sử được chọn. Follow hữu ích khi câu hỏi là “file này có phần trước dưới tên nào?”. Nó không thay đổi commit hoặc tạo ra lịch sử mới; bạn đang thay cách duyệt dữ liệu đã có.

Khi cần đọc bản thân thay đổi, có thể bổ sung định dạng diff phù hợp sau khi đã xác định commit. Đừng chỉ nhìn số dòng log mà kết luận một dòng code cụ thể xuất hiện từ đâu. Ví dụ hiện tại kiểm tra danh sách commit, không cung cấp một quy trình blame hoặc parser log tổng quát.

Đổi tên không phải một định danh file bất biến

Việc nối lịch sử phụ thuộc khả năng nhận diện đổi tên của Git và phạm vi lịch sử đang xem. Fixture dùng lần đổi tên nguyên nội dung để tín hiệu rõ ràng. Nếu một commit vừa chuyển file vừa viết lại phần lớn nội dung, kết quả điều tra có thể cần xem thêm diff và các tùy chọn nhận diện liên quan.

Không truyền cả một thư mục hoặc nhiều file rồi mong follow tự dựng đầy đủ mọi quan hệ đổi tên. Tài liệu giới hạn tùy chọn này ở một file. Với lịch sử merge phức tạp, cần đọc thêm quy tắc đơn giản hóa lịch sử; bài không chứng minh kết quả cho mọi hình dạng commit graph.

Kiểm tra khi áp dụng vào repository thật

Xác nhận đường dẫn hiện tại đúng và branch đang xem chứa lịch sử cần điều tra. Xem cả log thường và follow, ghi lại commit đổi tên, rồi kiểm tra nội dung tại các commit liên quan. Nếu repository chỉ có lịch sử tải về một phần, đừng mặc định mọi commit xa hơn đã có ở local.

Bạn có thể thực hành thêm bằng cách đổi message hoặc thêm một commit không liên quan rồi xem nó có xuất hiện trong log của file không. Giữ câu hỏi hẹp giúp output dễ kiểm chứng: follow tiếp nối lịch sử của một file qua đổi tên, chứ không thay thế mọi công cụ điều tra lịch sử của Git.

Nguồn tham khảo

  • Git: git-log, follow và history simplification

Tags: Code reviewGitLịch sử mã nguồn
SummarizeShare234
Suong Nguyen

Suong Nguyen

Related Stories

Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

Git revert: tạo commit đảo thay đổi cũ và giữ phần việc đến sau

by Suong Nguyen
09/11/2026
0

Thực hành revert một commit bật tính năng trong repository tạm, xác nhận commit mới được thêm và thay đổi độc lập đến sau vẫn còn.

Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

Git clean: xem trước file sẽ xóa và phân biệt -x với -X

by Suong Nguyen
08/11/2026
0

Thực hành git clean trong repository tạm để đọc dry-run, nhận biết file ignored và giới hạn thao tác vào một thư mục cụ thể.

Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

Git diff A..B và A…B: so hai snapshot hay phần nhánh B thay đổi?

by Suong Nguyen
07/11/2026
0

Tạo hai nhánh cùng tiến lên để thấy vì sao diff hai đầu nhánh có thể chứa thay đổi chỉ xuất hiện ở main.

Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

Git mv: đổi tên đã vào index, sửa nội dung sau đó vẫn cần stage

by Suong Nguyen
06/11/2026
0

Đổi tên file trong repository tạm rồi kiểm tra riêng rename đã stage và phần sửa nội dung còn ở working tree.

0 0 votes
Article Rating
Subscribe
Login
Notify of
guest
guest
0 Comments
Oldest
Newest Most Voted
AE Dev

AE Dev mang đến các bài viết về lập trình, mobile app, backend, frontend, WordPress và công nghệ, phù hợp cho developer muốn học hỏi và cập nhật kiến thức thực tế.

Recent Posts

  • React Native Text selectable: cho người dùng chọn và sao chép mã hiển thị
  • Phỏng vấn JavaScript: object mặc định của tham số được tạo khi nào?
  • Android runOnUiThread và Handler.post: chạy ngay hay đưa vào hàng đợi?

Categories

  • AI
  • Backend
  • Đánh giá
  • DevOps
  • Flutter
  • Hướng dẫn
  • Lập trình Mobile
  • Phỏng vấn
  • React Native
  • Uncategorized

Weekly Newsletter

  • Buy JNews
  • Support Forum
  • Pre-sale Question
  • Contact Us

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Trang chủ
  • AI
  • Mobile
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
  • Flutter

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

wpDiscuz
0
0
Would love your thoughts, please comment.x
()
x
| Reply