GitCommandsPro Your Guide to Essential Git Commands in 2024
Table of Content
git --version
2. Configuration Settings
Levels of defining this settings are
System level - apply to All Users of computer.
Global – all repositories of the current user.
Local – the current repository. Or a repository in the current folder.
Name
git config --global user.name "YOUR_NAME"
git config --global user.email YOUR_MAIL@gmail.com
Default Editor
(for setting vscode)
git config --global core.editor "code --wait"
To edit all the global settings
(will open the default editor to edit the global settings)
git config --global -e
Line Ending
(For windows)
config --global core.autocrlf true
(For MAC)
git config --global core.autocrlf input
To disabling fast-forward merging for particular repository.
git config ff no
This will disable fast-forward for current repos.
git config --global ff no
This will disable fast-forward for all repos. Now we can use “git merge branch-name” to merge a given branch with the main branch without fast-forwarding merge.
3. Initializing a repository
git init
4. Staging files
What is the staging area(also known as Index)?
To save changes in the git repository we take a snapshot(take a photo) of the folder, but before taking this snapshot all the changes are mentioned in an area called staging area. Here we can remove (or unstage) files if we don’t want to add them in the repository.
git add file1.js
Stages a single file.
git add file1.js file2.js
Stages multiple files.
git add *.js
Stages with a pattern.
git add .
Stages the current directory and all its content.
5.Viewing the status
git status
Full status.
git status -s
Short status.
6.Committing the staged files
This will take a snapshot of the files available in the staging area.
git status -s
Commits with a one-line message. Use Past Tense for verb.
git commit
Opens the default editor to type a long message.
7.Skipping the staging area
git commit -am “Message”
flag “a” means for all modified files, “m” for message.
8.Removing files
git rm file1.js
Removes from working directory and staging area.
git rm --cached -r file1.js
“-r” Removes entire file.
“- - cached” Removes from staging area only.
9.Renaming or moving files
git mv file1.js file1.txt
rename the file name file1.js => file1.txt.
“mv” move command.
10. Viewing the staged/unstaged changes
git diff
Shows unstaged changes. Means show difference between content of file in directory & content of file in staging area.
git diff --staged
Shows staged changes . Means show difference between content of file in staging-area & content of file in repository.
git diff --cached
Same as the above.
to get out of the diff command press “Q”.
11.Viewing the history
git log
Full history of commits.
git log --oneline
Full history of commits with short description.
git log --oneline --all --graph
Full history of commits with short description with all the diversity in branches.
git log --reverse
Lists the commits from the oldest to the newest.
12.Viewing a commit
git show 921a2ff
Shows the given commit.
git show HEAD
Shows the last commit.
git show HEAD~2
Two steps before the last commit.
git show HEAD:file.js
Shows the version of file.js stored in the last commit.
13.Unstaging files (undoing git add)
git restore --staged file.js
Copies the last version of file.js from repository to index(staging-area).
”restore” just copy the content of file from next stage of mentioned flag and paste it to the file which is in mentioned flag, here flag used is “staged” so the content of file “file.js” is copied from repository and pasted to “file.js” in staged-area.
14. Discarding local changes
git restore file.js
Copies file.js from index to working directory.
git restore file1.js file2.js
Restores multiple files in working directory from index.
git restore .
Discards all local changes (except untracked files as it is not there in staging-area).
git clean -fd
Removes all untracked files.
15.Restoring an earlier version of a file
git restore --source=HEAD~2 file.js
We are restoring the file “file.js” to the previous version.
Here HEAD~2 can be replaced by “id” given by git to a particular version.
Comments
Post a Comment