Git CLI hints
From WikiMLT
Append a file to a branch
touch file.name
git add -A
git commit -am "my update msg"
git push
How to shrink the .git folder
git gc --aggressive --prune # will perform garbage collection in your repository and prune old objects.
git repack -a -d --depth=250 --window=250 # It's better to use this command, because 'git gc --aggressive' is considered to be bad practice.
Delete all commit history
git checkout --orphan latest_branch # Checkout
git add -A # Add all the files to the 'current' branch
git commit -am "commit message" # Commit the changes
git branch -D main # Delete the branch 'main'
git branch -m main # Rename/move the 'current' branch to main
git push -f origin main # Finally, force update your repository
Delete/Remove a branch
git branch -d <branch-name>
Remove last Commit and Push from the Remote
git reset --soft HEAD~1
git push -f origin HEAD^:BRANCH_NAME
Now you are ready to push the same changes by a new commit.
Copy File from Another Branch
git restore --source master ./assets/css/src/style.less
Where master
is the name of the branch we want to copy from.
Hard Reset a Local Branch
BRANCH="master"
git stash
git fetch --all
git reset --hard FETCH_HEAD
git clean -df
git checkout "$BRANCH"
git pull --all
Push a New Local Branch to a Remote Git Repository and Track It
BRANCH="master"
git checkout -b "$BRANCH"
git push -u origin "$BRANCH"
Stash and Pop Changes
BRANCH="master"
git branch # Check does the curent local repo is attached to a remote branch
git chechout "$BRANCH" # Try to attach to the target "$BRANCH"...
At this stage if Git returns something like: "You local changes will be overwritten… Please commit your changes or stash them before you switch the branches."
Then you can checkout new branch, like it is shown in the above topic: git checkout ‑b "$BRANCH"
. Then checkout the $BRANCH
again, or you can stash your changes, checkout the target $BRANCH
(without creating a new one) and then pop the stash them after the pull of the remote changes:
git stash # Stash the changes
git status # Check does everything is clean
git checkout "$BRANCH" # Checkout the target "$BRANCH" again
git stash pop # Pop the stashed changes
git status # Check which files are modified
After that you can commit and push your changes.
References
- Stack Overflow: How to delete all commit history in GitHub?
- Stack Overflow: How to shrink the .git folder
- Stack Overflow: How to clone all repos at once from GitHub?
- DevConnected: How To Undo Last Git Commit
- Stack Overflow: How can I remove a commit on GitHub?
- Stack Overflow: How do I copy a version of a single file from one Git branch to another?
- Free Code Camp: Push a new local branch to a remote Git repository and track it too
- Atlassian Bitbucket: Undoing Commits & Changes
- GitHub Docs: Changing a commit message