Featured

TechBytes on Linux

This is a growing list of Linux commands which might come handy for the of Linux users. 1. Found out i had to set the date like this: ...

Monday, October 7, 2024

Git Commands Cheat Sheet

 Here are some basic Git commands:

Commands 

Description

git add <file>Adds a specific file to the staging area.
git add . or git add –allAdds all modified and new files to the staging area.
git statusShows the current state of your repository, including tracked and untracked files, modified files, and branch information.
git status –ignoredDisplays ignored files in addition to the regular status output.
git diffShows the changes between the working directory and the staging area (index).
git diff <commit1> <commit2>Displays the differences between two commits.
git diff –staged or git diff –cachedDisplays the changes between the staging area (index) and the last commit.
git diff HEADDisplay the difference between the current directory and the last commit
git commitCreates a new commit with the changes in the staging area and opens the default text editor for adding a commit message.
git commit -m “<message>” or git commit –message “<message>”Creates a new commit with the changes in the staging area and specifies the commit message inline.
git commit -a or git commit –allCommits all modified and deleted files in the repository without explicitly using git add to stage the changes.
git notes addCreates a new note and associates it with an object (commit, tag, etc.).
git restore <file>Restores the file in the working directory to its state in the last commit.
git reset <commit>Moves the branch pointer to a specified commit, resetting the staging area and the working directory to match the specified commit.
git reset –soft <commit>Moves the branch pointer to a specified commit, preserving the changes in the staging area and the working directory.
git reset –hard <commit>Moves the branch pointer to a specified commit, discarding all changes in the staging area and the working directory, effectively resetting the repository to the specified commit.
git rm <file>Removes a file from both the working directory and the repository, staging the deletion.
git mvMoves or renames a file or directory in your Git repository.


Git Commit (Updated Commands)

Here are some of the updated commands for Git commit:

Commands 

Description

git commit -m “feat: message”Create a new commit in a Git repository with a specific message to indicate a new feature commit in the repository.
git commit -m “fix: message”Create a new commit in a Git repository with a specific message to fix the bugs in codebases
git commit -m “chore: message”Create a new commit in a Git repository with a specific message to show routine tasks or maintenance.
git commit -m “refactor: message”Create a new commit in a Git repository with a specific message to change the code base and improve the structure.
git commit -m “docs: message”Create a new commit in a Git repository with a specific message to change the documentation.
git commit -m “style: message”Create a new commit in a Git repository with a specific message to change the styling and formatting of the codebase.
git commit -m “test: message”Create a new commit in a Git repository with a specific message to indicate test-related changes.
git commit -m “perf: message”Create a new commit in a Git repository with a specific message to indicate performance-related changes.
git commit -m “ci: message”Create a new commit in a Git repository with a specific message to indicate the continuous integration (CI) system-related changes.
git commit -m “build: message”Create a new commit in a Git repository with a specific message to indicate the changes related to the build process.
git commit -m “revert: message”Create a new commit in a Git repository with a specific message to indicate the changes related to revert a previous commit.

Branching and Merging

Here are some Git branching and merging commands:

Commands 

Description

git branchLists all branches in the repository.
git branch <branch-name>Creates a new branch with the specified name.
git branch -d <branch-name>Deletes the specified branch.
git branch -aLists all local and remote branches.
git branch -rLists all remote branches.
git checkout <branch-name>Switches to the specified branch.
git checkout -b <new-branch-name>Creates a new branch and switches to it.
git checkout — <file>Discards changes made to the specified file and revert it to the version in the last commit.
git merge <branch>Merges the specified branch into the current branch.
git logDisplays the commit history of the current branch.
git log <branch-dDisplays the commit history of the specified branch.
git log –follow <file>Displays the commit history of a file, including its renames.
git log –allDisplays the commit history of all branches.
git stashStashes the changes in the working directory, allowing you to switch to a different branch or commit without committing the changes.
git stash listLists all stashes in the repository.
git stash popApplies and removes the most recent stash from the stash list.
git stash dropRemoves the most recent stash from the stash list.
git tagLists all tags in the repository.
git tag <tag-name>Creates a lightweight tag at the current commit.
git tag <tag-name> <commit>Creates a lightweight tag at the specified commit.
git tag -a <tag-name> -m “<message>”Creates an annotated tag at the current commit with a custom message.
git checkout -- /path/to/source.cppDiscards changes made to the specified file and revert it to the version in the last commit.

Remote Repositories

Here are some Git remote repositories commands:

Commands 

Description

git fetchRetrieves change from a remote repository, including new branches and commit.
git fetch <remote>Retrieves change from the specified remote repository.
git fetch –pruneRemoves any remote-tracking branches that no longer exist on the remote repository.
git pullFetches changes from the remote repository and merges them into the current branch.
git pull <remote>Fetches changes from the specified remote repository and merges them into the current branch.
git pull –rebaseFetches changes from the remote repository and rebases the current branch onto the updated branch.
git pushPushes local commits to the remote repository.
git push <remote>Pushes local commits to the specified remote repository.
git push <remote> <branch>Pushes local commits to the specified branch of the remote repository.
git push –allPushes all branches to the remote repository.
git remoteLists all remote repositories.
git remote add <name> <url>Adds a new remote repository with the specified name and URL.

Git Comparison

Here are some Git comparison commands:

Commands 

Description

git showShows the details of a specific commit, including its changes.
git show <commit>Shows the details of the specified commit, including its changes.

Git Managing History

Here are some Git managing history commands:

Commands 

Description

git revert <commit>Creates a new commit that undoes the changes introduced by the specified commit.
git revert –no-commit <commit>Undoes the changes introduced by the specified commit, but does not create a new commit.
git rebase <branch>Reapplies commits on the current branch onto the tip of the specified branch.

To squash 2 commits into one, you have several options:

Option 1: Interactive Rebase (Most Common)

git rebase -i HEAD~2

This will open an editor with your last 2 commits. You’ll see something like:

pick abc1234 First commit message
pick def5678 Second commit message

Change pick to squash (or just s) for the second commit:

pick abc1234 First commit message
squash def5678 Second commit message

Save and close the editor. Git will then prompt you to edit the combined commit message.

Option 2: Soft Reset and Recommit

git reset --soft HEAD~2
git commit -m "Your new combined commit message"

This keeps all changes from both commits staged, then creates a single new commit.

Option 3: Reset and Amend (If the second commit is the most recent)

git reset --soft HEAD~1
git commit --amend

This moves the last commit’s changes into the staging area and lets you amend the previous commit.

Option 4: Using git merge --squash (For branch merging)

If you have commits on a branch and want to squash them when merging:

git checkout main
git merge --squash feature-branch
git commit -m "Squashed commit message"

Verify After Squashing

git log --oneline

Note: If the commits have already been pushed to a remote repository, you’ll need to force push after squashing:

git push --force-with-lease

⚠️ Warning: Force pushing rewrites history. Only do this on branches where you’re the sole contributor or have coordinated with your team.

------------------------------------------------------------------------------------

How to remove untracked files from your Git repository

To remove untracked files in Git, you use the command. This operation is permanent, so it is best practice to perform a "dry run" first to see which files will be deleted. [123


Safely Remove Untracked Files 
  1. Preview files to be removed (dry run): Run this command to see a list of all files that would be deleted, without actually removing anything. 
  2. To also preview the removal of untracked directories, use the flag in addition to : 
  3. Execute the removal: If the list from the dry run is correct, run the command without the flag to permanently delete the files. The (force) flag is required by default. 
  4. To remove both untracked files and untracked directories, combine the and flags: [13456
Additional Options 
  • Remove ignored files: By default, will not remove files listed in your file. To remove all untracked files, including ignored ones (e.g., build artifacts), use the flag: 
  • Interactive mode: For more granular control over which specific files or directories to delete, use the interactive flag . This will present a menu with options to select files by number, filter by pattern, or ask for confirmation for each item. [12478
Alternative: Temporarily Stash Untracked Files [9


If you might need the files later, you can temporarily save them using with the () option instead of permanently deleting them with : [1011


You can restore the stashed files later using . [12


For more details and options, consult the official Git clean documentation or the Atlassian Git Tutorial. [1314

No comments:

Post a Comment

Popular Posts