LET'S LEARN TOGETHER. THE BEAUTIFUL THING ABOUT LEARNING IS NOBODY CAN TAKE IT AWAY FROM YOU.

All about Git - "Git Stash" Part - II

In this post, I am going to discuss on a very powerful command "git stash". It is a very powerful command and that is why I want to dedicate a single blogpost discussing only about this important command.

WHAT IS GIT STASH:
This command will temporarily shelve the changes you've made to your working copy so that you can work o something else, and then come back and re-apply those changes at later point in time.

HOW TO STASH YOUR WORK:
The command git stash takes the uncommitted changes (both staged and unstaged) and saves them away for later use, thus reverting them from your working copy.
For example, I have two files "test.txt" and "NewOne.txt". Out of these two files, "test.txt" is staged and ready to be committed whereas the file "NewOne.txt" is yet to be staged.
So if I issue the command git status, below is the result -

Now if I issue the command git stash, let's see what happens -
So if I open the file, I will notice that all my changes to these two files are gone. But where? How can I get those changes back? So many questions!! :-) I will come into each of these questions slowly.

One important point to tell here is that stash is local to your Git repository; stashes are not transferred to the server when you push.

HOW TO RE-APPLY THE STASHED CHANGES:
One can re-apply the stashed changes by using the command git stash pop.
So basically popping the stash means removes the changes from the stash and re-applying then back to your working directory. That is why you see the two files back again in the status "Ready to be staged" after git stash pop done.

There is another command which will re-apply the stash to the working directory, but now delete the changes from stash, This is useful when you want to re-apply the same stash into multiple branches.
The command is:  git stash apply

Note - There is a very important point about stash. Git will not stash changes that are untracked or marked in the ignored file. By untracked, I wanted to mean if the file is not added by using the command git add before. For that you need to use -u option  to include the untracked files during stashing operation. The command is: git stash -u

AWESOME, BUT HOW I WILL MANAGE MULTIPLE STASHES:
You can run git stash multiple times to create multiple stashes and finally run git stash list will tell you all the stashes you have created.
If see the above picture, I have issued the command git stash twice. After that when I issued the command git stash list, it provided me two stashes - [email protected]{0} and [email protected]{1}

To give a more meaningful name of the stash, you can add your comments while doing the stash (The command is: git stash save "YOUR COMMENT") and then git stash list will show you the comment against the stash. See the screenshot below -

By default git stash pop will always re-apply the most recent created stash i.e. [email protected]{0}. If you want to stash something else, you need to provide the stash identifier as an argument like -
git stash pop [email protected]{3}

HOW TO VIEW STASH DIFFS:
You can view the summary of a stash by - git stash show.

To get the full details/diffs pas the parameter -p like below -

OK GREAT, BUT CAN I DO PARTIAL STASH?
Yes, you can do partial stash as well by passing the parameter -p with the command git stash. See the below screenshot -
The options which you can choose for partial stash are -

CREATE A BRANCH FROM STASH:
You can create a branch from a stash by below command -
This is required when your branch changed a lot and re-applying your stashes can bring conflicts. In  this scenario, you will prefer to create a branch from your stash and there apply your changes.

FINALLY, CAN I  CLEAR STASH?
Yes, you can clear stash by issuing the command git stash drop [email protected]{3}. This command will drop only [email protected]{3}. But if you want to delete all the stashes, then the command is: git stash clear.

I hope you have idea with git stash now. Please feel free to provide your feedback. Thanks.

To learn more, here are the links -

Share:

No comments:

Post a Comment

Never miss a post. Subscribe to get latest blog posts, right into your email box.

* indicates required

Labels

Salesforce (105) Apex (51) admin (28) visualforce (21) ADM (20) dev 501 (19) lightning (19) integration (18) learn salesforce (18) 501 (16) javascript (14) SOAP (13) tutorial (11) Certification. (10) Advanced Apex (9) Kitchener Developer Group (8) test class (8) Certification (7) Trigger (7) flow (7) security (7) unit testing (7) Advanced Admin (6) Lightning Experience (6) Sharing and Visibility (6) design pattern (6) developer (6) report (6) salesforce release (6) service cloud (6) trailhead (6) use case (6) Lightning Feature (5) New Features (5) SOQL (5) css (5) dashboard (5) debug (5) formula (5) mobile (5) solution management (5) JSON (4) Kitchener User Group (4) Lightning Web Component (4) New Feature (4) Sales Cloud (4) Salesforce DX (4) Tips (4) WebSphere (4) best practice (4) cast iron (4) component (4) deployment (4) event (4) github (4) html (4) map (4) polymer (4) profiles (4) release (4) responsive (4) tdd (4) ui (4) visual studio code (4) Architect (3) Live Chat (3) Online Event (3) Opportunity (3) Performance (3) Products (3) REST (3) Role (3) Salesforce Certification (3) Scratch Org (3) Spring 20 (3) Study Notes. (3) Summer15 (3) VS Code (3) Web Technology (3) Winter21 (3) automation tool (3) configuration (3) dynamic apex (3) license (3) mapbox (3) singleton (3) version controlling (3) AppExchange (2) Article (2) Asynchronous Apex (2) Asynchronous callout (2) Aura Framework (2) Bulkify (2) Community (2) Data Architecture and Management Certification (2) Devops (2) Distributed Version Controlling (2) ES6 (2) Eclipse (2) Einstein (2) Enhancement (2) Enterprise Territory Management (2) Financial Services Cloud (2) Force.com IDE (2) Governor Limit (2) Groups (2) IBM (2) Implicit Sharing (2) JourneyToCTA (2) Knowledge Management (2) LWC (2) Lightning Design System (2) Live Agent (2) Metadata (2) PD II (2) Price Book (2) Queueable (2) SFDX (2) SOSL (2) Sharing (2) Spring 15 (2) Summer17 (2) Territory (2) Virtual Event (2) ant (2) basic (2) chatter (2) code coverage (2) coding (2) communication (2) console (2) controller (2) documentation (2) dreamforce (2) git (2) jquery (2) logging (2) object (2) permission (2) process builder (2) salesforce1 (2) strategy (2) visual workflow (2) xml (2) Action Plan (1) Action Plan Template (1) Activity Timeline (1) Advanced Currency (1) Agent Productivity (1) Analytics (1) Apex Sharing (1) Arrow (1) Batch (1) Bots (1) Browser (1) Bulk data load (1) CTA (1) Calendar (1) Canon (1) Case Management (1) Celebration (1) Cheat Sheet (1) Classic (1) Compare (1) Confetti (1) Constructor (1) Contact Center (1) Continuation (1) Continuous Integration (1) Convert (1) Cookie (1) CumulusCI (1) Custom Metadata (1) Custom Object (1) Custom Permission (1) Customer (1) Data Model (1) DataGrid (1) DataTable (1) Dated Exchange Rate (1) Decorator Design Pattern (1) Dev Hub (1) Development (1) Diwali (1) EDA (1) ESLint (1) Education Cloud (1) Email (1) FSC (1) Function (1) Future (1) Global Gathering (1) Goals (1) Guest Access (1) Guest Profile (1) Guest User Sharing Rule (1) Guide (1) HEDA (1) Higher Education (1) Household (1) Husky (1) IDE (1) Ideas (1) Improvement (1) Invocable (1) KPIs (1) Large Data Volume (1) LastModifiedDate (1) Manage Currencies (1) Manual Sharing (1) Metrics (1) Multi Currency (1) New (1) OOPS (1) OWD (1) Omni-Channel (1) Optimize (1) Partner (1) Permission Set (1) Person Account (1) Photo (1) Pipeline (1) Platform Developer I (1) Platform Developer II (1) Presentation (1) Prettier (1) Product Schedule (1) Profile (1) Promise (1) Prototype (1) Public Site (1) Query Plan (1) QuickReference (1) Related records (1) Reports (1) Retrieve (1) Role Hierarchy (1) SAL (1) Salesfor (1) Salesforce Advisor Link (1) Salesforce Labs (1) Salesforce Optimizer (1) SalesforceDx (1) Schedule (1) Session (1) Sharing Rule (1) Sharing Sets (1) Site (1) Skills (1) Snap-ins (1) Spring 17 (1) Summer14 (1) Summer16 (1) Summer19 (1) Switch (1) SystemModStamp (1) Tile (1) Timeline (1) Unauthorized Access (1) User License (1) Users (1) Validation Rule (1) Web (1) Webservice (1) Winter'15 (1) Winter'17 (1) access (1) actionFunction (1) actionPoller (1) actionRegion (1) actionSupport (1) agile (1) app (1) approval process (1) aura (1) awesome (1) backup (1) bitbucket (1) book (1) campaign (1) change set (1) cli (1) code (1) csv (1) custom button (1) custom settings (1) customization (1) data loader (1) database (1) delegate Admin (1) describe (1) dom (1) duplicate (1) dynamic (1) dynamic form (1) email template (1) email-to-case (1) equals (1) error (1) field-level security (1) folder (1) ftp (1) generic (1) gift (1) global describe (1) hashcode (1) import wizard (1) jenkins (1) keynote (1) long running requests (1) monitoring (1) mysql (1) page layout (1) personal (1) power of one (1) record type (1) relationship (1) request (1) review (1) solution (1) sub-tab (1) survey (1) tab (1) username (1) workflow (1)

Popular Posts

Total Pageviews

Contact Me

Name

Email *

Message *