[Git] Bạn làm việc với Git vậy đã sử dụng Git Stash chưa?

Tôi đã và đang sử dụng Git để quản lý mã nguồn. Thường tôi làm việc trên một branch đã được checkout từ branch gốc có tên là develop. Có một số trường hợp mà tôi sử dụng Git Stash:

  • Tôi không muốn commit những thay đổi hiện tại, nhưng khách hàng báo cáo một lỗi và yêu cầu sửa ngay. Vì lỗi này khá đơn giản, chỉ mất khoảng 15 phút để fix, nên tôi cần chuyển sang branch khác để fix ngay lập tức.
  • Tôi muốn quay lại branch develop hoặc một branch khác, hoặc quay trở lại các dòng code đã được commit trong HEAD. Tuy nhiên, tôi không muốn commit những thay đổi hiện tại và muốn giữ nguyên trạng thái làm việc của tôi sau khi quay lại.
  • Sau khi chạy lệnh git pull hoặc git rebase trên branch hiện tại, có conflict xảy ra và tôi chưa muốn commit mấy việc cá nhân.
  • Tôi nhận ra rằng đang code những dòng code tâm huyết nhưng đã nhầm branch. Vì vậy, tôi muốn chuyển những dòng code này sang branch đúng.

Vì vậy, tôi đã tìm hiểu và được biết rằng Git có một tính năng gọi là Git Stash để giải quyết vấn đề này. Nếu bạn đã và đang sử dụng Git trong một thời gian, có thể bạn đã từng sử dụng Git Stash, đó là một trong những tính năng hữu ích của Git.

Có Thể Bạn Quan Tâm :   Eco là gì? Hướng dẫn sử dụng chế độ Eco máy lạnh đơn giản, dễ dùng

Demo git stash list

Dưới đây là một số tính năng liên quan đến Git Stash:

  1. Git stash save
  2. Git stash list
  3. Git stash apply
  4. Git stash pop
  5. Git stash show
  6. Git stash branch <name>
  7. Git stash clear
  8. Git stash drop

Git stash save | Lưu lại công việc đang làm dở

Bạn đang code file awesome.vue nhưng chưa muốn commit và muốn chuyển sang một branch khác. Khi đó, Git sẽ yêu cầu bạn commit những thay đổi trước khi chuyển branch. Câu lệnh này tương tự như Git stash, nhưng bạn có thể thêm nhiều tùy chọn khác. Git stash save có thể coi như Git stash (khi không có tùy chọn).

Git stash với message

git stash save “Your stash message”.

Câu lệnh trên sẽ đưa các file trong thư mục làm việc của bạn về trạng thái commit gần nhất và lưu lại những thay đổi hiện tại trong stack. Khi bạn quay lại branch này, bạn có thể dễ dàng lấy lại những thay đổi như trước để tiếp tục làm việc. Câu lệnh này chỉ khác git stash là có thêm stash message để bạn dễ dàng biết công việc trước đây của mình, tương tự như commit kèm message mô tả công việc.

Stashing untracked files

Bạn cũng có thể stash (đưa thư mục làm việc về trạng thái ban đầu) những file chưa từng được add – những file mới tạo.

git stash save -u hoặc git stash save -include-untracked

Ví dụ, khi bạn đã thay đổi code so với commit A nhưng sau đó thấy không hợp lý và muốn hủy bỏ những dòng code mới tạo và đưa trạng thái các file trong project về commit A. Lưu ý rằng những thay đổi này chưa được add vào staged, vì vậy bạn có thể sử dụng git checkout. Tuy nhiên, git checkout không có tác dụng với những file mới tạo – untracked files, vì vậy sử dụng git stash save -u sẽ tiện lợi hơn.

Có Thể Bạn Quan Tâm :   Trang chủ » Luân canh – phương pháp canh tác then chốt trong nông nghiệp bền vững

Git stash list

Trước khi nói về câu lệnh này, hãy cùng xem cách stash hoạt động. Khi bạn chạy lệnh Git stash hoặc Git stash save, Git sẽ tạo một commit object mới với một tên và lưu lại trong repo của bạn. Các commit object này sẽ được tổ chức lưu trữ dạng stack, tương tự như một cái thùng có đáy và thứ tự lưu trữ các commit sẽ theo thứ tự thời gian, các stash mới hơn sẽ nằm gần đáy thùng hơn.

Điều này có nghĩa là bạn có thể xem danh sách các commit đó giống như việc xem log các commit thông thường.

git stash list

Bạn có thể xem những stash đã thực hiện và các stash sẽ được hiển thị từ trên xuống theo thời gian tạo ra (các stash mới nhất sẽ hiện lên đầu). Và bây giờ bạn đã thấy tác dụng của stash message chưa? Hãy nhìn vào stash gần nhất trong ví dụ trên.

Git stash apply | Lấy lại những thay đổi đã stash

  • Lấy lại những thay đổi gần nhất đã được stash, trong trường hợp này là stash@{0}. Nếu bạn muốn lấy lại thay đổi từ một stash khác, bạn có thể sử dụng stash id. Ví dụ:
git stash apply stash@{1}

Bạn đã nhận thấy tác dụng của việc thêm message khi lưu stash chưa?

Có Thể Bạn Quan Tâm :   Game GTA Là Gì? Tìm Hiểu Game GTA Là Gì?

Git stash pop

Câu lệnh này tương tự stash apply, nhưng nó xóa stash từ stack sau khi đã được áp dụng, tức là bạn đã lấy lại các thay đổi. Ví dụ:

Git stash pop example

Stash gần nhất sẽ bị xóa khỏi danh sách và stash@{0} sẽ được cập nhật với stash cũ hơn. Tương tự, nếu bạn muốn pop một stash cụ thể, bạn cũng có thể sử dụng id giống như khi apply.

git stash pop stash@{1}

Git stash show | Nội dung thay đổi

Xem nội dung thay đổi từ stash thứ nhất:

git stash show stash@{1}

Nếu muốn xem toàn bộ thay đổi:

git stash show -p

Git stash branch <name>

  • Tạo một branch mới từ stash gần nhất và sau đó xóa stash gần nhất khỏi stack (giống như pop). Bạn cũng có thể sử dụng id nếu muốn chỉ định stash cụ thể.
git stash branch <name> stash@{1}
  • Tính năng này sẽ rất hữu ích nếu bạn gặp conflict code sau khi áp dụng stash vào version code mới nhất trên branch hiện tại.

Git stash clear

  • Xóa toàn bộ stash đã lưu.

Git stash drop

  • Xóa stash gần nhất khỏi stack. Bạn nên cẩn thận vì sau khi xóa, sẽ rất khó để quay trở lại trạng thái cũ.
git stash drop stash@{1}

Nguồn: Useful tricks you might not know about Git stash https://git-scm.com/docs/git-stash

Back to top button