Technical notes‎ > ‎

Version Control (Git, Subversion SVN, etc.)

posted Nov 26, 2014, 12:57 AM by Le Tuan Anh   [ updated Jan 21, 2021, 10:24 PM by Le T. ]

Git

Basic Git commands

Clone from github (and submodules)

git clone --recursive https://github.com/user/repo_name

To check out a specific branch to a local folder, use

git clone --recursive https://github.com/user/repo_name.git --branch branch_name repo_name

To update current local copy (local Git repo), use pull command

git pull origin master

Stage a file - i.e. mark changed files (newly created/modified/deleted) to be committed

git add newfile.py folder_name/anotherfile.py

Commit change(s) to local repository (the quoted part after -m is commit message)

git commit -m "Lorem ipsum - I changed these files for good"

Push changes to the branch master on the remote repository (e.g. Github) origin

git push origin master

to unstage uncommitted changes, use

git reset path/to/filename.py

Advanced commands

Add a submodule into a repository

git submodule add https://github.com/user/foo.git
git submodule init
git submodule update

Remove a submodule

git submodule deinit -f -- modules/submodule   
rm -rf .git/modules/a/submodule
git rm -f a/submodule


Undo modification
git checkout -- [filename]

Update submodule to latest version

git fetch && git checkout master && git merge origin/master

Generate SSH key for passwordless push to Github

Source: https://help.github.com/articles/generating-ssh-keys/

ls -al ~/.ssh
ssh-keygen -t ed25519 -C "account@email.com"
ssh-keygen -t rsa -b 4096 -C "
account@gmail.com"



# Now copy the content of the public key file (~/.ssh/id_rsa.pub) and create a new SSH key on your Git server
BitBucket: https://bitbucket.org/account/user/your_account_name/ssh-keys/
Github:
https://github.com/settings/ssh

# Test connection
BitBucket: ssh -T git@bitbucket.org
Github:
ssh -T git@github.com

# Update the repository remote URL to SSH
git remote set-url origin git@github.com:username/REPO.git
git remote -v

To remember passphrase:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

Undo stuff (Source | Cached)

git checkout <commit-id>
View a previous commit.
git tag -a <tag-name> -m "<description>"
Create an annotated tag pointing to the most recent commit.
git tag -d <tag-name>
Delete a specific tag locally
git push --tags
Push local tags to remote server
git revert <commit-id>
Undo the specified commit by applying a new commit.
git reset --hard
Reset tracked files to match the most recent commit.
git clean -f
Remove untracked files.
git reset --hard / git clean -f
Permanently undo uncommitted changes.

Archiving a repository

git archive --format zip --output dist/code-trunk.zip master

[To be updated]

Comments