Basic Git commands

Git installs as a normal package on Ubuntu:

sudo apt-get install git

Configuring Git user is an optional step:

git config --global ""
git config --global "Your Name"

Type the following command to create an empty repository wherever your code is:

cd ~
git init

Now all the initialization is done.  Add something to the repository:

git add www
commit -m "first commit"

The basic Git commands are:

List files in the repository git ls-files
Undo local changes git checkout <filename>
List changed files those you need to commit git status <directory>
Commit changes git commit –m “message” <directory>
Show commit history for a branch git log -3 master..
Show files in a commit git diff-tree –no-commit-id –name-only -r <commit>
Disabling SSL cert check. git config —global http.sslVerify «false»
Delete the most recent commit, keeping the work you’ve done git reset –soft HEAD~1
Delete the most recent commit, destroying the work you’ve done git reset –hard HEAD~1
View the change history of a file gitk [filename] gitk –follow [filename]
Viewing Unpushed Git Commits git log origin/master..HEAD
List of files to be pushed git diff –stat –cached [remote/branch]
Show both local and remote branches git branch -a
Show remote branches git branch -r
Publish a local branch git push -u origin <branch-name>
Show the remote address of a repo git remote -v
Apply a patch git apply –ignore-space-change –ignore-whitespace patch.diff

Probably one of the most interesting git commands is cherry-pick:

  1. What does cherry-picking a commit with git mean?

Git visual tools:

sudo apt-get install qgit
sudo apt-get install melt

Adding a submodule:

git submodule add lib/Awl
#Then after cloning:
git submodule init
git submodule update

Renaming the local and remote branch dev-data-race with android-1.0.15:

git branch -m dev-data-race android-1.0.15
git push origin :dev-data-race
git push --set-upstream origin android-1.0.15

Deleting remote branch dev-sanitizer:

git branch -d dev-sanitizer
git push origin --delete dev-sanitizer


git tag -a v2.2.13 -m "Version 2.2.13 in Google Play."
git describe --tags
git tag
git show --summary v2.2.13
git push origin v2.2.13
git push origin --tags
git checkout v2.2.13
git checkout -b version2.2.13 v2.2.13
git log --pretty=oneline
git tag -a v2.2.13 9fceb02
git show refs/tags/v2.5.31#162:src/file.cpp
git tag -a v2.6.0 -m "Version 2.6.0 in Google Play, APK 181-184."
git push --delete origin v2.6.0
git tag --delete v2.6.0
git tag -l "v2.7*"
git push -d origin $(git tag -l "v2.7*")
git tag -d $(git tag -l "v2.7*")

Creating a repository on the server.

git init --bare tradebot.git

Pushing a newly created repository on the client.

git remote add origin
git push origin master

Checkout file from a different branch:

git ls-tree master src/LinesGame/LinesGameQt
git checkout master -- src/LinesGame/LinesGameQt/icons.qrc

Find and restore a deleted file or folder:

git rev-list -n 1 HEAD -- src/LinesGame/LinesGameQt/platform
git checkout 41264a71364dc8dbab96eec67e2b9d25332b2ca4^ -- src/LinesGame/LinesGameQt/platform

Save credentials:

git config --global credential.helper store

Looks like when I do

git config --global credential.useHttpPath true

in GitBash, Windows credential manager saves full repository URL, see Git credential helper – update password.

Fix your project to use a remote with credentials built in:

git remote set-url origin https://scuzzlebuzzle:<MYTOKEN>

Update remote branches:

git fetch --prune --all

Delete a tag:

git tag --delete 3.0.17
git push --delete origin 3.0.17

14 Responses to Basic Git commands

  1. dmitriano says:

    Truncating git history (
    git checkout –orphan temp e41d7f633c45c46bd42e97cecf93204191d9e4c9
    git commit -m “Truncate history”
    git rebase –onto temp e41d7f633c45c46bd42e97cecf93204191d9e4c9 master

  2. superadmin says:

    clean all the modules recursively:
    git submodule foreach –recursive “git clean -dfx”

  3. dmitriano says:

    How do I configure git to ignore some files locally?
    The .git/info/exclude file has the same format as any .gitignore file

  4. dmitriano says:

    Starting on your newBranch:

    git checkout master to get back on the master branch

    git pull origin master to get the most up-to-date version of the master branch

    git checkout newBranch to get back on your newBranch

    git rebase origin/master -i to perform an interactive rebase.

  5. dmitriano says:
    Find a file in the commit history:
    git log –all –full-history somefolder/somefile.cpp

  6. dmitriano says:
    How do I list all the files in a commit?
    git diff-tree –no-commit-id –name-only bd61ad98 -r

  7. dmitriano says:
    Completely remove the changes of a specific file from the history
    Say we have history like this:

    $ git log
    commit c4e983a7f506f71e01d2e1e4cddf2f768e2c2548 (HEAD -> main)
    Author: REDACTED
    Date: REDACTED


    commit 3e616c11fa1ce71157e4b654e4e3742f97c6e0e6
    Author: REDACTED
    Date: REDACTED


    commit 7655a6d373c26db5d30086a6e7e23e755c960924
    Author: REDACTED
    Date: REDACTED


  8. dmitriano says:
    How can I know in git if a branch has been already rebased onto master?
    git log –oneline –cherry master…some-branch
    git log –oneline –cherry development…GPR-123

  9. dmitriano says:

    Undo a Git merge that hasn’t been pushed yet

    With git reflog check which commit is one prior the merge (git reflog will be a better option than git log). Then you can reset it using:

    git reset –hard commit_sha
    There’s also another way:

    git reset –hard HEAD~1

  10. dmitriano says:

    How I removed some changes that I committed by mistake:

    git checkout -b GPR-123a
    git reset origin/development
    git commit -a -m “GPR-123: Zakolhozil chto-to”
    git push -u origin GPR-123a

  11. dmitriano says:

    Another way to squash all your commits is to reset the index to master:

    git checkout yourBranch
    git reset $(git merge-base master $(git branch –show-current))
    git add -A
    git commit -m “one commit on yourBranch”

  12. dmitriano says:

    git push -d origin bug-588
    error: unable to delete 'bug-588': remote ref does not exist
    error: failed to push some refs to 'ssh://'

    The branch is deleted already on the remote and the local is not aware of it. Run
    git fetch --prune --all
    and verify is the remote branch still there.

  13. dmitriano says:

    How to see which commit a git submodule points at

    git ls-tree HEAD

    in the submodule directory.

Leave a Reply

Your email address will not be published. Required fields are marked *