Staging Area Là Gì

     

Trong bài bác tạo repository mang đến Git mình có nhắc qua về nhiều từ Staging Area với một tác dụng là commit (ủy thác), vậy hai đặc điểm này là gì thì mình sẽ lý giải kỹ hơn trong bài xích này để bạn biết phương pháp sử dụng mang đến đúng.

Bạn đang xem: Staging area là gì

Staging Area là gì?

Staging Area tức là một khu vực mà nó vẫn được chuẩn bị cho quá trình commit. Trước hết, bạn cần phải hiểu rằng trong những hệ thống cai quản phiên bạn dạng (Version Control System) thì các dữ liệu sẽ tiến hành lưu trữ ở nhị nơi, một là thư mục bạn đang thao tác trên máy tính (working tree, bản thân không nhắc lại nữa đâu) cùng một là kho đựng mã mối cung cấp (repository) sau khi bạn đã thực hiện biến đổi (ví dụ như kho chứa trên Github).


*

Mô hình phân tích và lý giải cách hoạt động của Staging Area.


Và để đưa một tập tin vào Staging Area thì bạn sẽ cần phải thực hiện lệnh git showroom tên_file mà tôi đã có ví dụ tại vị trí trước.

Commit là gì và nó vận động ra sao?

Hiểu dễ dàng và đơn giản hơn, commit tức thị một hành vi để Git giữ giàng một bản chụp (snapshot) của các sự biến hóa trong thư mục làm việc, và những tập tin với thư mục được biến đổi đã phải nằm trong Staging Area. Mỗi lần commit nó sẽ được lưu lại lịch sử chỉnh sửa của mã nguồn dĩ nhiên tên và địa chỉ email của người commit. Ngoài ra trong Git chúng ta cũng có thể khôi phục lại tập tin trong lịch sử hào hùng commit của nó để chia cho một phân nhánh (branch) khác, đây là mấu chốt của việc bạn sẽ dễ dàng khôi phục lại các chuyển đổi trước này mà mình có ra mắt qua ở phần reviews serie này.

Và tất nhiên, lệnh commit vào Git đã là git commit -m "Lời nhắn".

Và nếu như khách hàng muốn gửi tập tin lên repository thì bạn phải commit nó trước rồi tiếp đến lệnh git push origin master sẽ có trọng trách đưa tổng thể các tập tin đã có được commit lên repository.

Điều khiếu nại gì nhằm commit một tập tin?

Nếu bạn muốn commit một tập tin đó, bạn sẽ cần nên đưa tập tin kia vào trạng thái tracked bằng lệnh git địa chỉ cửa hàng tên_file. Vào git gồm hai nhiều loại trạng thái bao gồm đó là Tracked cùng Untracked, thay thể:

Tracked – Là tập tin vẫn được lưu lại theo dõi vào Git nhằm bạn làm việc với nó. Cùng trạng thái Tracked nó sẽ có thêm những trạng thái phụ khác là Unmodified (chưa chỉnh sửa gì), Modified (đã chỉnh sửa) cùng Staged (đã chuẩn bị để commit).Untracked – Là tập tin còn lại mà các bạn sẽ không muốn thao tác làm việc với nó trong Git.

Nhưng bạn phải nên biết rằng nếu tập tin đó đã được Tracked tuy thế đang lâm vào tình thế trạng thái (Modified) thì nó vẫn sẽ không thể commit được mà bạn phải gửi nó về Staged cũng bởi lệnh git add.

Bỏ qua Staging Are nhằm commit

Như mình có nói sinh hoạt trên là 1 trong tập tin sau khi được chuyển đổi hay tạo new thì nó nên được cung ứng Staging Area cùng với lệnh git add. Tuy nhiên, chúng ta cũng có thể đưa một tập tin đã làm được Tracked nhằm commit mà không yêu cầu đưa nó vào Staging Area với tham số -a trong lệnh git commit. Ví dụ: git commit -a -m "Skipped Staging Are to lớn commit".

Xem thêm: Dj Là Gì? Những Bản Nhạc Dj Là Gì ? Học Dj Tốt Không Chỉ Có Đam Mê Và Sáng Tạo

Tìm đọc thêm về trạng thái


*

Vòng hóng trạng thái của các tập tin


Untracked

Nếu bạn tạo thành hoặc thêm vào trong 1 tập tin bắt đầu vào trong thư mục làm việc của bạn thì nó đang ở tâm lý Untracked. Hiện giờ mình thử tạo thành một tập tin bắt đầu tên là faq.html, sau đó dùng lệnh git status để xem trạng thái của Git trong thư mục làm việc.

$ cảm ứng faq.html$ git statusOn branch masterYour branch is up-to-date with "origin/master".Untracked files: (use "git địa chỉ ..." khổng lồ include in what will be committed) faq.htmlnothing added lớn commit but untracked files present (use "git add" khổng lồ track)Note: Lệnh touch là tạo ra một tập tin rỗng.

Bây giờ bạn sẽ thấy nó vẫn liệt kê ra thương hiệu tập tin vẫn ở tâm trạng Untracked. Để chuyển nó về Tracked bạn sẽ sử dụng lệnh git add và xem lại tâm trạng của nó.

$ git add faq.html$ git statusOn branch masterYour branch is up-to-date with "origin/master".Changes to be committed: (use "git reset HEAD ..." to unstage) new file: faq.htmlBây giờ bạn thấy, tập tin faq.html của bản thân mình đã được đem về trạng thái Staged với nó có thể được commit. Trên sao? vì chưng bạn phải ghi nhận rằng nếu một tập tin ngơi nghỉ trạng thái Untracked cơ mà được đưa về Tracked thì nó sẽ nằm ở vị trí trạng thái Staged luôn, trừ lúc bạn biến đổi nội dung tập tin này thì nó sẽ mang về trạng thái Modified và nó cần yếu commit trừ khi chúng ta gõ lệnh git add cho nó.

Tracked

Một lúc một tập tin đang được mang lại Tracked thì nó sẽ sở hữu được thể đổi khác giữa 3 trạng thái khác biệt là Modified, Unmodified với Staged.

Trước hết hiện nay mình đã tất cả một tập tin new đã được đem đến Staged cùng với lệnh git add như lấy ví dụ trên. Bây chừ mình tiến hành chuyển đổi nội dung của tập tin faq.html này cùng xem công dụng của lệnh git status.

$ git statusOn branch masterYour branch is up-to-date with "origin/master".Changes lớn be committed: (use "git reset HEAD ..." lớn unstage) new file: faq.htmlChanges not staged for commit: (use "git showroom ..." to lớn update what will be committed) (use "git checkout -- ..." khổng lồ discard changes in working directory) modified: faq.htmlBạn tất cả thấy sự kỳ dị ở tập tin faq.html không? Đó là nó được hiển thị ở nhị trạng thái Staged (có thể commit) cùng Modified (không thể commit) hay còn được gọi là Unstaged. Sở dĩ có sự kỳ lạ đó ở đây là bởi vì trước đó bạn đã tạo nên tập tin faq.html và mang lại Tracked thì nó đã và đang được mang về Staged để có thể commit. Tuy nhiên tiếp nối bạn lại sửa đổi nội dung của nó vì thế nó đã có một phiên phiên bản khác nằm ở vị trí trạng thái Modified (không thể commit). Nếu bây chừ bạn gõ lệnh git commit nhằm ủy thác nó thì bạn dạng chụp của tập tin faq.html sinh sống lần ở đầu cuối bạn gõ lệnh git địa chỉ cửa hàng sẽ được commit lên chứ nó không chứa các nội dung mà các bạn vừa thêm vào. Và để nó rất có thể commit tập tin faq.html sẽ được chỉnh sửa thì bạn phải gõ lại lệnh git địa chỉ cửa hàng faq.html lần nữa.

Chuyển tập tin từ bỏ Untracked về Tracked

Trong Git, chúng ta cũng có thể đưa một tập tin trường đoản cú Tracked về Untracked cùng với lệnh rm tên_file. Lệnh rm để giúp bạn chuyển tập tin về tinh thần Untracked tuy nhiên không xóa hẳn vào ổ cứng.

$ rm faq.html$ git statusOn branch masterYour branch is up-to-date with "origin/master".Changes not staged for commit: (use "git add/rm ..." to lớn update what will be committed) (use "git checkout -- ..." khổng lồ discard changes in working directory)deleted: faq.htmlCòn nếu bạn muốn xóa nó luôn luôn thì dùng lệnh git rm -f tên_file và lưu giữ cẩn thận khi dùng lệnh này.

Xem thêm: O-Ring Là Gì ? Gioăng Cao Su O

Lời kết

Có thể các bạn sẽ thấy gần như gì bản thân nói trong bài xích này hơi nhiều năm nhưng chính là những kỹ năng rất cơ phiên bản về Git mà bạn cần nắm chắc vị nếu bạn không hiểu biết vòng đời những trang thái của một tập tin vào Git thì chắc chắn rằng sau này khi có tác dụng việc bạn sẽ bối rối lúc gõ lệnh git commit với cứ hỏi vì sao lại không commit được vì muốn commit được bạn sẽ phải chuyển nó về trạng thái ham mê hợp, có nghĩa là trạng thái Staged.