Pushing code to a GitHub repository is a critical step in the software development process. Following best practices ensures a clean, organized, and efficient project. Here are key guidelines to follow when pushing code to your GitHub repository:
1. Always Use .gitignore
The .gitignore
file specifies which files and directories to ignore in a project. This helps keep unnecessary files out of your repository, ensuring only relevant code is pushed. Common entries in a .gitignore
file include:
- Operating system files (e.g.,
.DS_Store
,Thumbs.db
) - Dependency directories (e.g.,
node_modules/
) - Log files (e.g.,
*.log
) - Environment variables (e.g.,
.env
)
Example:
# Node.js
node_modules/
npm-debug.log
yarn-error.log
# Logs
logs/
*.log
# OS generated files
.DS_Store
Thumbs.db
# Environment variables
.env
2. Never Push node_modules
The node_modules
directory contains all the dependencies required for your project. Pushing this directory to your repository is unnecessary because these dependencies can be installed via npm install
or yarn install
. Pushing the entire node_modules
directory is redundant and increases repository size.
Example .gitignore entry:
node_modules/
3. Push Root Level Folder Structure, Not Entire Folder
When organizing your repository, push only the essential root-level folders and files that are necessary for the project. Avoid pushing large nested directories that are not essential for understanding or building the project.
Example Root Structure:
git-repo/
├── .gitignore
├── README.md
├── package.json
├── src/
│ ├── index.js
│ ├── app/
│ └── config/
└── tests/
└── test.js
Ensure your repository includes:
- A
README.md
file with project details and setup instructions. - Configuration files (
package.json
,.gitignore
, etc.). - Source code in an organized directory structure (
src/
,app/
,config/
). - Test files in a separate directory (
tests/
).
4. Use Proper Git Commit Style
Effective commit messages help maintain a clear project history. Follow these guidelines for writing proper commit messages:
- Header: A concise summary of the changes (50 characters max).
- Body: Detailed explanation of the changes (optional, 72 characters per line).
- Footer: References to issues or pull requests (optional).
Commit Message Structure:
<type>(<scope>): <description>
<optional body>
<optional footer>
Types:
- feat: A new feature.
- fix: A bug fix.
- docs: Documentation changes.
- style: Code style changes (formatting, missing semi-colons, etc.).
- refactor: Code changes that neither fix a bug nor add a feature.
- perf: Performance improvements.
- test: Adding or updating tests.
- build: Changes to build scripts or dependencies.
- ci: Changes to CI configuration.
-
chore: Other changes that don’t modify
src
ortest
files. - revert: Reverts a previous commit.
Example Commit Messages:
feat: add user authentication
This commit adds JWT-based user authentication to the application.
- Added login and signup endpoints
- Implemented token generation and validation
- Added tests for authentication endpoints
Resolves: #45
fix: handle empty message in request body
The error occurred due to missing validation for empty messages.
Following these guidelines will help maintain a clean, efficient, and professional repository on GitHub. By using a .gitignore
file, avoiding the push of unnecessary directories like node_modules
, maintaining a clear project structure, and adhering to proper commit message styles, you ensure that your codebase remains organized and accessible to all contributors.