Bird
Raised Fist0
Gitdevops~10 mins

Stashing specific files in Git - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Process Flow - Stashing specific files
Modify files in working directory
Select specific files to stash
Run git stash push -m "msg" -- <files>
Git saves changes of selected files
Working directory: selected files reverted, others unchanged
Later: git stash list to see stash
Apply or drop stash as needed
This flow shows how to stash changes from only certain files, leaving others untouched, then manage the stash later.
Execution Sample
Git
git stash push -m "Save changes to file1 only" -- file1.txt
# Stashes changes only in file1.txt, not others
This command saves changes from file1.txt into a stash, leaving other files' changes in place.
Process Table
StepCommand/ActionFiles ChangedStash ContentWorking Directory State
1Modify file1.txt and file2.txtfile1.txt, file2.txtNonefile1.txt and file2.txt modified
2git stash push -m "Save file1" -- file1.txtfile1.txt, file2.txtfile1.txt changes savedfile1.txt reverted, file2.txt still modified
3git stash listNonestash@{0}: Save file1file1.txt reverted, file2.txt still modified
4git stash apply stash@{0}file1.txt, file2.txtstash@{0}: Save file1file1.txt and file2.txt modified
5git stash drop stash@{0}NoneNonefile1.txt and file2.txt modified
💡 After stashing specific files, only those files revert; stash can be applied or dropped later.
Status Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5
file1.txtcleanmodifiedclean (stashed)clean (stashed)modified (restored)modified
file2.txtcleanmodifiedmodified (unchanged)modified (unchanged)modified (unchanged)modified
stash listemptyemptystash@{0}: Save file1stash@{0}: Save file1stash@{0}: Save file1empty
Key Moments - 3 Insights
Why does file2.txt remain modified after stashing file1.txt?
Because the stash command included only file1.txt, git saved and reverted changes only for that file, leaving file2.txt untouched as shown in step 2 of the execution_table.
What happens if you run 'git stash apply' after stashing specific files?
The stashed changes for the selected files are reapplied to the working directory, restoring their modified state as seen in step 4.
Does the stash disappear immediately after pushing changes?
No, the stash remains in the stash list until explicitly dropped, visible in step 3 and removed in step 5.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 2: What is the state of file1.txt after stashing?
ADeleted
BModified
CClean (reverted)
DUntracked
💡 Hint
Check the 'Working Directory State' column at step 2 in the execution_table.
At which step does the stash list show the saved stash?
AStep 1
BStep 3
CStep 2
DStep 5
💡 Hint
Look at the 'stash list' variable in variable_tracker and the 'Stash Content' column in execution_table.
If you stash both file1.txt and file2.txt, how would the working directory state change after stashing?
ABoth files revert to clean
BBoth files remain modified
COnly file1.txt reverts, file2.txt stays modified
DOnly file2.txt reverts, file1.txt stays modified
💡 Hint
Refer to the behavior shown in step 2 where only selected files revert after stashing.
Concept Snapshot
git stash push -m "message" -- <files>
- Saves changes only from specified files
- Reverts those files in working directory
- Other files remain unchanged
- Use git stash list to see saved stashes
- Apply or drop stash later as needed
Full Transcript
This visual execution shows how to stash changes from specific files using git. First, you modify multiple files. Then you run 'git stash push' with the file names to stash only those files. Git saves changes from those files and reverts them in your working directory, while other files stay modified. The stash is listed with 'git stash list'. Later, you can apply the stash to restore changes or drop it to remove. This helps manage partial changes safely.

Practice

(1/5)
1. What does the command git stash push -m "save changes" file.txt do?
easy
A. It saves changes only from file.txt to a new stash with a message.
B. It saves all changes in the working directory to a stash with a message.
C. It commits file.txt with the message "save changes".
D. It deletes file.txt and saves the rest to stash.

Solution

  1. Step 1: Understand the git stash push command

    This command saves changes in the working directory to a stash instead of committing.
  2. Step 2: Recognize the effect of specifying a file

    By adding file.txt, only changes in that file are saved to the stash, not all files.
  3. Final Answer:

    It saves changes only from file.txt to a new stash with a message. -> Option A
  4. Quick Check:

    Stash specific file = It saves changes only from file.txt to a new stash with a message. [OK]
Hint: Use git stash push with file names to stash specific files [OK]
Common Mistakes:
  • Thinking it stashes all files without specifying
  • Confusing stash with commit
  • Assuming it deletes files
2. Which of the following is the correct syntax to stash only -index.html and style.css files?
easy
A. git stash push -- -index.html style.css
B. git stash push -- files -index.html style.css
C. git stash push -index.html style.css
D. git stash push -f -index.html style.css

Solution

  1. Step 1: Recall the syntax for stashing specific files

    The correct syntax uses git stash push -- <files> to specify files.
  2. Step 2: Identify the correct option

    git stash push -- -index.html style.css uses -- before file names, which is required to separate options from file paths.
  3. Final Answer:

    git stash push -- -index.html style.css -> Option A
  4. Quick Check:

    Use -- before files to stash specific files [OK]
Hint: Always use -- before file names in stash command [OK]
Common Mistakes:
  • Omitting -- before file names
  • Using unsupported flags like -f
  • Adding extra words like 'files'
3. Given these changes:
-file1.txt modified, file2.txt modified, file3.txt unchanged.
What will be the output of git stash push -- -file1.txt followed by git stash list?
medium
A. Shows an error because multiple files are modified.
B. Shows a stash with -file1.txt and file2.txt changes saved.
C. Shows a stash with only -file1.txt changes saved.
D. Shows no stash because file2.txt is not included.

Solution

  1. Step 1: Understand what git stash push -- -file1.txt does

    This command saves only changes from -file1.txt to a new stash.
  2. Step 2: Check the stash list output

    After stashing, git stash list shows the new stash entry with only -file1.txt changes saved.
  3. Final Answer:

    Shows a stash with only -file1.txt changes saved. -> Option C
  4. Quick Check:

    Stash specific file = stash list shows that file only [OK]
Hint: Stash command saves only specified files, stash list shows saved entries [OK]
Common Mistakes:
  • Assuming all modified files are stashed
  • Expecting an error when multiple files are modified
  • Confusing stash list output with file contents
4. You run git stash push -file1.txt but get an error: error: unknown option '-file1.txt'. What is the likely cause?
medium
A. You used the wrong command; git stash save is required.
B. The file -file1.txt does not exist.
C. You need to commit changes before stashing.
D. You forgot to add -- before the file name.

Solution

  1. Step 1: Analyze the error message

    The error says unknown option '-file1.txt', meaning Git treats the file name as an option.
  2. Step 2: Identify correct syntax for stashing specific files

    You must use -- before file names to separate options from file paths.
  3. Final Answer:

    You forgot to add -- before the file name. -> Option D
  4. Quick Check:

    Missing -- causes unknown option error [OK]
Hint: Add -- before files to avoid option parsing errors [OK]
Common Mistakes:
  • Omitting -- before file names
  • Assuming file must be committed first
  • Using deprecated stash commands
5. You have modified -app.js, index.html, and style.css. You want to stash only -app.js and style.css, then later apply those changes back. Which sequence of commands correctly does this?
hard
A. git stash push -app.js style.css
git stash apply
B. git stash push -m "partial stash" -- -app.js style.css
git stash apply stash@{0}
C. git stash save -app.js style.css
git stash pop
D. git stash push -app.js style.css
git stash pop stash@{1}

Solution

  1. Step 1: Stash specific files with a message

    Use git stash push -m "partial stash" -- -app.js style.css to stash only selected files with a label.
  2. Step 2: Apply the correct stash entry

    Use git stash apply stash@{0} to apply the most recent stash explicitly.
  3. Final Answer:

    git stash push -m "partial stash" -- -app.js style.css
    git stash apply stash@{0}
    -> Option B
  4. Quick Check:

    Use -m and -- with files, then apply stash by name [OK]
Hint: Use -m for message and -- before files, then apply stash by reference [OK]
Common Mistakes:
  • Using deprecated git stash save
  • Omitting -- before file names
  • Applying stash without specifying correct stash reference