Bird
Raised Fist0
Gitdevops~5 mins

Sharing hooks with the team (husky) in Git - Commands & Configuration

Choose your learning style10 modes available
Introduction
Git hooks are scripts that run automatically at certain points in your git workflow. Husky helps you share these hooks easily with your whole team by storing them in the project, so everyone uses the same checks.
When you want to run tests automatically before anyone pushes code to the shared repository
When you want to enforce code style rules on every commit to keep the codebase consistent
When you want to prevent commits with sensitive data or mistakes from being added
When you want all team members to have the same git hooks without manual setup
When you want to automate tasks like linting or formatting before commits
Config File - package.json
package.json
{
  "name": "my-app",
  "version": "1.0.0",
  "scripts": {
    "lint": "eslint .",
    "test": "jest"
  },
  "devDependencies": {
    "husky": "8.0.0",
    "eslint": "8.0.0",
    "jest": "29.0.0"
  }
}

This package.json file lists Husky and tools needed for linting and testing in devDependencies. Note that Husky v8+ uses a different setup method and does not configure hooks inside package.json. Instead, hooks are created as scripts inside the .husky folder using Husky commands.

Commands
Installs Husky as a development dependency so you can use git hooks in your project.
Terminal
npm install husky --save-dev
Expected OutputExpected
+ husky@8.0.0 added 1 package, and audited 2 packages in 2s 2 packages are looking for funding run `npm fund` for details found 0 vulnerabilities
Sets up Husky in the project by creating the hooks folder and enabling git hooks.
Terminal
npx husky install
Expected OutputExpected
husky - Git hooks installed
Adds a prepare script to package.json so Husky installs automatically when dependencies are installed.
Terminal
npm set-script prepare "husky install"
Expected OutputExpected
No output (command runs silently)
Creates a pre-commit hook script that runs linting before commits.
Terminal
npx husky add .husky/pre-commit "npm run lint"
Expected OutputExpected
husky - created .husky/pre-commit
Adds the Husky pre-commit hook script to git so it is shared with the team.
Terminal
git add .husky/pre-commit
Expected OutputExpected
No output (command runs silently)
Commits the Husky hook setup so everyone on the team gets the same hook when they pull.
Terminal
git commit -m "Add Husky pre-commit hook for linting"
Expected OutputExpected
[main abc1234] Add Husky pre-commit hook for linting 1 file changed, 10 insertions(+) create mode 100644 .husky/pre-commit
Key Concept

If you remember nothing else from this pattern, remember: Husky lets you store git hooks in your project files so the whole team uses the same automated checks.

Common Mistakes
Not running 'npx husky install' after installing Husky
Without this, Husky hooks are not set up and won't run on git actions.
Always run 'npx husky install' to initialize Husky hooks after installation.
Not committing the .husky folder to the repository
If the hooks folder is not committed, teammates won't get the hooks and checks won't run for them.
Add and commit the .husky folder and its scripts to share hooks with the team.
Forgetting to add a prepare script in package.json
Without the prepare script, Husky won't install hooks automatically when others run npm install.
Add 'prepare' script with 'husky install' in package.json to automate hook setup.
Summary
Install Husky as a dev dependency to manage git hooks.
Run 'npx husky install' to set up hooks in the project.
Add hook scripts using 'npx husky add' and commit the .husky folder to share hooks with the team.
Use package.json scripts to automate Husky installation on npm install.

Practice

(1/5)
1. What is the main purpose of using Husky in a Git project?
easy
A. To share Git hooks easily with the whole team
B. To create new Git branches automatically
C. To merge pull requests without conflicts
D. To backup the Git repository to the cloud

Solution

  1. Step 1: Understand what Git hooks do

    Git hooks are scripts that run at certain points in Git workflows, like before commits.
  2. Step 2: Identify Husky's role

    Husky helps share these hooks easily among team members by managing them in the project.
  3. Final Answer:

    To share Git hooks easily with the whole team -> Option A
  4. Quick Check:

    Husky = Share Git hooks [OK]
Hint: Husky = sharing Git hooks with team [OK]
Common Mistakes:
  • Thinking Husky manages branches
  • Confusing Husky with backup tools
  • Assuming Husky merges pull requests
2. Which command correctly installs Husky hooks in your Git project?
easy
A. npm install husky
B. git husky add
C. husky install
D. husky init

Solution

  1. Step 1: Recall Husky installation steps

    First, you install Husky as a package (e.g., npm install husky), then you run husky install to set up Git hooks.
  2. Step 2: Identify the command that sets up hooks

    The command husky install creates the hooks folder and configures Git to use Husky hooks.
  3. Final Answer:

    husky install -> Option C
  4. Quick Check:

    Setup hooks = husky install [OK]
Hint: Use 'husky install' to set up hooks folder [OK]
Common Mistakes:
  • Using 'npm install husky' as hook setup
  • Trying 'git husky add' which is invalid
  • Confusing 'husky init' with 'husky install'
3. Given the commands below, what will be the result?
npm install husky
npx husky install
npx husky add .husky/pre-commit "npm test"
git commit -m "test commit"
medium
A. The commit will fail because the hook is not installed
B. The pre-commit hook runs 'npm test' before the commit
C. The commit message will be ignored
D. The pre-commit hook runs 'git status' before the commit

Solution

  1. Step 1: Analyze the commands

    First, Husky is installed. Then hooks are installed with husky install. Next, a pre-commit hook is added to run npm test.
  2. Step 2: Understand the effect on commit

    When git commit runs, the pre-commit hook triggers npm test before allowing the commit.
  3. Final Answer:

    The pre-commit hook runs 'npm test' before the commit -> Option B
  4. Quick Check:

    pre-commit runs npm test [OK]
Hint: Add hook with 'husky add' to run commands pre-commit [OK]
Common Mistakes:
  • Assuming hooks run after commit
  • Forgetting to run 'husky install'
  • Confusing hook commands with commit messages
4. You committed the .husky folder but your teammate's hooks are not running. What is the most likely cause?
medium
A. They forgot to run husky install after pulling
B. The .husky folder is ignored by Git
C. Hooks only work on Windows, not Linux
D. Git does not support hooks in shared repos

Solution

  1. Step 1: Understand sharing hooks with Husky

    Even if the .husky folder is committed, each user must run husky install locally to activate hooks.
  2. Step 2: Identify the common setup mistake

    If teammates don't run husky install, hooks won't be linked to Git and won't run.
  3. Final Answer:

    They forgot to run husky install after pulling -> Option A
  4. Quick Check:

    Run husky install locally to activate hooks [OK]
Hint: Run 'husky install' after pulling to activate hooks [OK]
Common Mistakes:
  • Assuming committed hooks auto-activate
  • Thinking hooks don't work on Linux
  • Believing Git disables hooks in shared repos
5. Your team wants to share a pre-push hook that runs tests before pushing. Which steps correctly set this up using Husky?
hard
A. Run git hook add pre-push npm test and push changes
B. Add pre-push: npm test in package.json, no other steps needed
C. Create a script named pre-push.sh and add it to .git/hooks manually
D. Run npx husky add .husky/pre-push "npm test", commit .husky, teammates run husky install

Solution

  1. Step 1: Add the pre-push hook with Husky

    Use npx husky add .husky/pre-push "npm test" to create the hook script that runs tests before push.
  2. Step 2: Share and activate hooks

    Commit the .husky folder so teammates get the hook, and they must run husky install locally to activate it.
  3. Final Answer:

    Run npx husky add .husky/pre-push "npm test", commit .husky, teammates run husky install -> Option D
  4. Quick Check:

    Add hook, commit folder, teammates install hooks [OK]
Hint: Add hook with husky add, commit folder, teammates run husky install [OK]
Common Mistakes:
  • Editing package.json instead of using husky add
  • Manually adding scripts to .git/hooks (not shared)
  • Using invalid git commands for hooks
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard