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 rm –cached: ngừng track file và giữ bản trên máy

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

File cấu hình riêng của máy đã được commit trước khi nhóm thêm quy tắc ignore. Chỉ thêm tên file vào gitignore chưa làm Git ngừng track nó. Bạn cần phân biệt bản file trên đĩa với entry trong index chuẩn bị cho commit tiếp theo.

Fixture dưới đây chạy bằng Git 2.54.0 trong repository tạm, với cấu hình global/system được cô lập khi biên tập. Tài liệu Git được đọc ngày 04/11/2026. Không thao tác trên repository công việc thật, không fetch hoặc push và không viết lại lịch sử.

Dùng file demo không chứa thông tin riêng

Đoạn Bash tạo một repository riêng rồi in đường dẫn để bạn xem tiếp. Nó không tự xóa thư mục sau khi chạy:

(
  set -eu
  demo_dir=$(mktemp -d)
  echo "$demo_dir"
  cd "$demo_dir"
  git init -q -b main
  git config user.name 'AeDev Demo'
  git config user.email '[email protected]'
  git config commit.gpgsign false
  printf '{"theme":"demo"}\n' > local.settings.json
  git add local.settings.json
  git -c core.hooksPath=/dev/null commit -qm 'Track demo settings'

  printf '/local.settings.json\n' > .gitignore
  git add .gitignore
  git rm --cached -- local.settings.json
  test -f local.settings.json
  cat local.settings.json
  git status --short
  git diff --cached --name-status
)

Fixture đã chạy thành công. File trên đĩa vẫn chứa JSON theme demo. Index chuẩn bị thêm .gitignore và xóa local.settings.json khỏi snapshot tiếp theo. Status thể hiện một file được thêm và một file được xóa trong phần staged, dù file local vẫn tồn tại.

Đây là thao tác thay đổi index, không phải một lệnh xem trạng thái chỉ đọc. Tên file trong ví dụ là dữ liệu demo; trước khi áp dụng vào dự án thật, xác định chính xác file cần ngừng chia sẻ và đọc phần thay đổi đang stage.

Vì sao cần cả cached và ignore?

git rm --cached bỏ đường dẫn khỏi index và giữ file working tree. Quy tắc ignore giúp những lần add thông thường sau đó không đưa lại file local vào tracking. Hai bước phục vụ hai mục đích khác nhau.

Dấu / đầu pattern trong ví dụ đặt đường dẫn từ gốc file gitignore này. Nếu file nằm trong thư mục con hoặc cần nhiều quy tắc, hãy đối chiếu pattern thật. Không thay mẫu đơn lẻ bằng lệnh bỏ toàn bộ index chỉ để xử lý một file.

Kiểm tra trước và sau commit

Trong repository thử đã in đường dẫn, có thể chạy tiếp:

git ls-files -- local.settings.json
git check-ignore -v -- local.settings.json
git -c core.hooksPath=/dev/null commit -qm 'Keep local settings outside tracking'
test -f local.settings.json
git status --short
git show HEAD~1:local.settings.json

Các bước đã được chạy trong fixture. ls-files không còn liệt kê file, check-ignore chỉ ra quy tắc, status sau commit sạch và file trên máy vẫn còn. Lệnh cuối vẫn đọc được nội dung từ commit cũ, vì việc bỏ tracking hiện tại không xóa lịch sử đã có.

Không diễn giải status sạch thành “file không tồn tại” hoặc “Git đã xóa mọi bản sao”. Nó chỉ thể hiện quan hệ giữa working tree, index, commit và ignore theo cách Git đang theo dõi.

Giới hạn khi làm trong nhóm

Commit bỏ file khỏi snapshot sẽ thay đổi nội dung mà các máy khác nhận khi cập nhật nhánh. Việc giữ bản local trên máy đang thao tác không phải cam kết rằng mọi working tree khác đều giữ file theo cùng trạng thái. Nhóm nên thống nhất cách cung cấp file mẫu và tạo cấu hình local.

Nếu nội dung cũ có dữ liệu nhạy cảm, chỉ bỏ tracking không giải quyết những bản đã commit hoặc chia sẻ. Cần xử lý theo quy trình sự cố của nhóm; fixture không thực hiện thay đổi credential hay rewrite history. Với file demo ở đây, không có dữ liệu riêng cần xử lý.

Giữ thao tác nhỏ, chỉ rõ đường dẫn và kiểm staged diff trước khi commit. Cách kiểm chứng file trên đĩa, entry index và bản trong lịch sử giúp bạn biết chính xác điều gì đã thay đổi.

Nguồn tham khảo

  • Git: git-rm –cached
  • Git: gitignore và file đã được track

Tags: GitGitignoreWorkflow
SummarizeShare234
Suong Nguyen

Suong Nguyen

Related Stories

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

Git cherry-pick –no-commit: xem thay đổi trước khi tạo commit

by Suong Nguyen
03/11/2026
0

Thử cherry-pick không tạo commit trong repository tạm, rồi kiểm tra HEAD, index và working tree để biết chính xác lệnh đã làm gì.

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

Git show: đọc file ở HEAD và index mà không checkout

by Suong Nguyen
02/11/2026
0

Tạo fixture có ba phiên bản của cùng file rồi dùng git show HEAD:path và :path để đọc đúng snapshot cần kiểm tra.

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

Git diff –quiet: kiểm tra thay đổi nhưng đừng quên untracked

by Suong Nguyen
01/11/2026
0

Đọc exit status của git diff --quiet, chọn đúng phía staged hoặc unstaged và kiểm tra riêng file chưa được track.

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

Git merge-base –is-ancestor: nhánh đã chứa commit này chưa?

by Suong Nguyen
31/10/2026
0

Kiểm tra quan hệ tổ tiên giữa hai commit bằng exit status và phân biệt chưa chứa commit với lỗi tham chiếu.

Next Post
Minh họa môi trường phát triển React Native với laptop, Android emulator và iOS simulator

Android LayoutParams nhận pixel: đổi dp đúng một lần

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 ScrollView: tạo nút về đầu bằng ref và scrollTo
  • Array.isArray và instanceof: mảng từ realm khác được kiểm tra thế nào?
  • Android LayoutParams nhận pixel: đổi dp đúng một lần

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