1 - create new branch
git checkout -b new_branch_name
2 - push (new) branch to remote repo (when the branch doesn't exist at the origin repo)
git push -u origin feature_branch_name
origin is the repo configured as seen in git remote -v
3 - merge new branch to master
git checkout master
git pull #get latest master update
git merge new_branch_name
4 - resolve merge conflict (after doing a git merge)
git status #will show the conflicting file
# open the conflicting file and save the version you want. VSC will allow you to click and save
# commit the change then push
5 - list branches
git show-branches
#or
git branch -a
6 - delete branches
git branch -d feature/login
add -f for unmerged changes
7 - delete remote branches
git push origin --delete feature/login
8 - git rebase
before:
A---B---C topic
/
D---E---F---G master
git checkout topic
git rebase master
will transform to
A'--B'--C' topic
/
D---E---F---G master
9 - push to another branch
git push <remote> <branch with new changes>:<branch you are pushing to>
ie
git push origin branch1:branch2
1 - removing commit
last commit:
git reset --hard HEAD^
last n commit:
git reset --hard HEAD~n
revert to a specific commit
git reset --hard <tag/branch/commit id>
1 - create and push tag
# create
git tag -a <tagname> -m 'my annotation'
# push
git push origin <tagname>
2 - remote tag
# local
git tag -d <tag_name>
# remote
git push --delete origin <tagname>
0 - verify the current remote settings
git remote -v
1 - Change your remote's URL from HTTPS to SSH with the git remote set-url command
git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
2 - Verify the remote URL has changed and https is not used
git remote -v
> origin git@github.com:USERNAME/REPOSITORY.git (fetch)
> origin git@github.com:USERNAME/REPOSITORY.git (push)
git reset --hard upstream/main
git pull upstream main
git fetch origin pull/<ID>/head && git checkout FETCH_HEAD
1 - Add a remote to the original "upstream" project
git remote add upstream https://github.com/<USER>/<REPONAME>.git
2 - Verify the new upstream repository you've specified for your fork
git remote -v
3 - fetch all the update on the uptream remote repo
git fetch upstream
4 - Check out your fork's local master branch
git checkout master
5a - Merge the changes from upstream/master into your local master branch
git merge upstream/master
5b - pull and sync only without merging
git pull upstream master --rebase
This brings your fork's master branch into sync with the upstream repository, without losing your local changes.
6 - Push the changes to your own project
git push origin master
find the base commit then do
git rebase -i <commitno>
edit the lines you wanna keep/remove
if rebase fails with trailing whitespace : https://stackoverflow.com/questions/13463173/git-rebase-failing-
https://www.internalpointers.com/post/squash-commits-into-one-git :
Merge all my commits on top of commit [commit-hash]
git rebase --interactive [commit-hash]
in the interactive window, first line leave pick and change to s (Squash) all others save and quit (:wq)
Editor will popup again to provide a final name of the commit, you can edit/save/quit at your convenience (:wq)
git rebase -i HEAD~1 --preserve-merges
git push -f
git fetch
git reset origin/master --hard
Note --hard will also delete all local current changes (staged and committed)
A PR is always submitted by another github user repo from a specific branch (main, feature_name, ...)
1 - add all the remote repo
git add otherrepo https://github.com/user/repo.git
2 - fetch their branches
git fetch otherrepo
3 - Create a new local repo and start merging the other repo branches
git checkout -b combine_PRs
git pull otherrepo branch_name
or keep cherry picking a commit from the fetched branch/repo
git cherry-pick 4d1709b01dc572356955b8f5633d90322746f5d1
git fetch https://github.com/user/repo branch
git cherry-pick 2b066d712a8e28d0c16f355e3b39d6fab3cc0819
eventually fix any conflict and add the file into the current working branch then continue
git add thefilewithconflictresolved
git cherry-pick --continue
https://www.educative.io/edpresso/how-to-change-a-git-commit-message-after-a-push
https://koukia.ca/how-to-remove-local-untracked-files-from-the-current-git-branch-571c6ce9b6b1
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_25519