📖 Scenario: You work on a team project using Git. After merging changes from others, you want to automatically run a script that updates dependencies to keep your project ready to use.
🎯 Goal: Create a Git post-merge hook script that runs npm install automatically after every merge.
📋 What You'll Learn
Create a post-merge hook file in the .git/hooks directory
Make the post-merge hook executable
Write a script inside the hook that runs npm install
Test the hook by performing a merge and observing the output
💡 Why This Matters
🌍 Real World
Automating tasks after Git merges saves time and reduces errors by running commands like dependency installs or tests automatically.
💼 Career
Many DevOps and developer roles require knowledge of Git hooks to automate workflows and improve team productivity.
Progress0 / 4 steps
1
Create the post-merge hook file
Create a file named post-merge inside the .git/hooks directory.
Git
Hint
Use the touch command in your terminal to create the file.
2
Make the post-merge hook executable
Make the .git/hooks/post-merge file executable by running chmod +x .git/hooks/post-merge.
Git
Hint
Use chmod +x to allow the script to run.
3
Write the script to run npm install
Edit the .git/hooks/post-merge file to add the line npm install so it runs automatically after a merge.
Git
Hint
Start the script with #!/bin/sh and then add npm install on the next line.
4
Test the post-merge hook
Perform a Git merge and observe that npm install runs automatically by checking the output in your terminal.
Git
Hint
After merging, you should see npm installing packages automatically.
Practice
(1/5)
1. What is the main purpose of the post-merge hook in Git?
easy
A. To create a new branch after merging
B. To prevent merges from happening
C. To delete merged branches automatically
D. To run commands automatically after a merge completes
Solution
Step 1: Understand the role of Git hooks
Git hooks are scripts that run at specific points in Git workflows to automate tasks.
Step 2: Identify the specific timing of the post-merge hook
The post-merge hook runs right after a merge finishes, allowing automation of follow-up tasks.
Final Answer:
To run commands automatically after a merge completes -> Option D
Quick Check:
post-merge hook = runs after merge [OK]
Hint: Post-merge hook runs after merge finishes [OK]
Common Mistakes:
Confusing post-merge with pre-merge hooks
Thinking it prevents merges
Assuming it creates or deletes branches
2. Which of the following is the correct way to make a post-merge hook script executable on a Unix-like system?
easy
A. chmod 777 .git/hooks/post-merge
B. chmod +x .git/hooks/post-merge
C. git hook enable post-merge
D. chmod 644 .git/hooks/post-merge
Solution
Step 1: Understand file permissions for executable scripts
To run a script as a hook, it must have executable permission, usually set with chmod +x.
Step 2: Identify the correct command
chmod +x .git/hooks/post-merge sets the executable bit without giving excessive permissions.
Final Answer:
chmod +x .git/hooks/post-merge -> Option B
Quick Check:
Make hook executable = chmod +x [OK]
Hint: Use chmod +x to make hook executable [OK]
Common Mistakes:
Using chmod 777 which is insecure
Using chmod 644 which is not executable
Trying git commands to enable hooks
3. Given this post-merge hook script saved in .git/hooks/post-merge and made executable:
#!/bin/sh
npm install
npm run build
What will happen after you run git merge feature-branch?
medium
A. The dependencies will install and the project will build automatically
B. The merge will fail because of the script
C. Nothing happens because post-merge hooks do not run automatically
D. Only npm install will run, not npm run build
Solution
Step 1: Understand what the post-merge hook script does
The script runs npm install to install dependencies, then npm run build to build the project.
Step 2: Know when the post-merge hook runs
It runs automatically after a successful merge, so both commands will execute in order.
Final Answer:
The dependencies will install and the project will build automatically -> Option A
Quick Check:
post-merge runs script after merge [OK]
Hint: Post-merge runs script commands after merge [OK]
Common Mistakes:
Thinking hooks don't run automatically
Assuming only first command runs
Believing merge fails due to hook
4. You wrote a post-merge hook script but it does not run after merging. Which of these is the most likely cause?
medium
A. The script file is not executable
B. You forgot to commit the hook script
C. The merge was done with git rebase
D. The script is saved outside the .git/hooks directory
Solution
Step 1: Check script execution permissions
If the script is not executable, Git will not run it after merge.
Step 2: Understand that hooks are local and not committed
Hooks are not shared via commits, so forgetting to commit is irrelevant.
Step 3: Consider merge method and script location
Rebase does not trigger post-merge, but the question states a merge was done. Also, hooks must be in .git/hooks.
Final Answer:
The script file is not executable -> Option A
Quick Check:
Non-executable script = hook won't run [OK]
Hint: Check if hook script has executable permission [OK]
Common Mistakes:
Thinking hooks are shared via commits
Confusing merge with rebase triggers
Saving script outside .git/hooks folder
5. You want to ensure that after every merge, your Python project automatically installs new dependencies listed in requirements.txt and runs tests. Which post-merge hook script is the best choice?
hard
A. #!/bin/sh
git pull
pytest
B. #!/bin/sh
npm install
npm test
C. #!/bin/sh
pip install -r requirements.txt
pytest
D. #!/bin/sh
pip uninstall -r requirements.txt
pytest
Solution
Step 1: Identify the correct commands for Python dependency installation and testing