![]() ![]() You could stage all your changes and then continue to work on the feature. It's in a stable state, passes all the tests, and could go into production, but you have more work to do on it. It's effectively an unnamed, uncommented local commit that gives you an intermediate step between being done with all your work and committing it to the repository permanently and having nothing saved in your local repo at all.įor example, let's say you have a feature partially finished. The way I see it, the main thing the git "stage" gives you that other VCS don't is that you can use it to checkpoint a file. So it's just an option that git gives you because it can so why not? Git's authors chose to make this step visible and persistent where other VCS make it a transient part of the commit process. The "stage" is a technically required intermediate step in the process of checking in a file, namely collecting the changes to be added to the repository. This will fail in staging (your repository will not be corrupted by a partial commit) and the staging process doesn't affect your commit history (it doesn't corrupt your repository in case of an error). Several steps in the staging can fail (for example, you need to commit, but your HDD is 99.9999% full, and git has no space to perform a commit). The commit in git is implemented transactionally, after the staging is sucessfull. ![]() you may decide that half your stuff will be thrown away before the movers even get there - that's part of staging).įrom a technical point of view, staging also supports transactional commits, by splitting all operations into what can fail (staging) and what cannot fail (commit): In this example, everything until the movers get your stuff, is staging: you decide what goes where, how to pack it and so on (e.g. ![]() The movers simply come, get the (already packed) bags from the hallway and transport them. Before you do that, you will go through your stuff, decide what you take with you and what you throw away, pack it in bags and leave it in the main hallway. That is, a commit in git is performed in two steps: staging and actual commit.Īs long as a changeset is in the staging area, git allows you to edit it as you like (replace staged files with other versions of staged files, remove changes from staging, etc.).Ĭonsider a scenario where you call the movers to get your stuff from your old appartment to your new appartment. Staging is a step before the commit process in git.
0 Comments
Leave a Reply. |