Start creating new project folder
mkdir new_parent_project
cd new_parent_project
git init
Initial commit.
touch README.md
git add README.md
git commit -am "initial commit"
Merge project projectA into subdirectory projectA
git remote add -f projectA {git_url,ssh}
git merge -s ours --no-commit projectA/V6-006
git read-tree --prefix=projectA/ -u projectA/V6-006
git commit -m "merging projectA into subdir: projectA"
Merge project projectB into subdirectory projectB
git remote add -f projectA {git_url,ssh} {git_url,ssh}
git merge -s ours --no-commit projectB/V6-006
git read-tree --prefix=projectB/ -u projectB/V6-006
git commit -m "merging projectB into subdir: projectB"
Rename branch locally
git branch -m old_branch new_branch
Delete branch
git push origin :branch_name
Push the new branch, set local branch to track the new remote
git push --set-upstream origin new_branch
svn export https://{gitlab,github,vs}.com/{user,org}/{repository_name}.git/trunk/{folder/filer_or_name}
git change-commits GIT_AUTHOR_NAME {old-name} {new-name} <br>
git change-commits GIT_AUTHOR_EMAIL {old@email.com} {new@email.com}
//just from n commit from last
git change-commits GIT_AUTHOR_NAME {old-name} {new-name} HEAD~{n}..HEAD
git filter-branch --tree-filter 'rm -rf {folder_name}' --prune-empty HEAD
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
If you get and A previous backup already exists in refs/original/ add -f after filter-branch
git filter-branch --env-filter '
OLD_EMAIL="isa@nitro.io"
CORRECT_NAME="IsaEs"
CORRECT_EMAIL="merhaba@isaes.com.tr"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
### Split subfolder out into new repository
```console
git filter-branch --prune-empty --subdirectory-filter {folder_name} {branch_name}
git remote -v
git remote set-url origin {new_repo_url}
Rename local branch
git branch -m {branch_name} {new_branch_name}
Revert to first commit
git update-ref -d HEAD
Revert back to commits
git reset --soft HEAD@{count}
Unstage file
git reset {filename}
Create Branch and set upstream
git branch {name} -u
Delete Branch from upstream
git push {upstream_name} :{branch_name}
Unset upstream
git branch --unset-upstream
Set upstream
git branch --set-upstream-to={upstream-branchname} {branch}
Delete file from Githistory
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch {filename}' --tag-name-filter cat -- --all
Add Staged changes to the previous commit
git commit --amend --no-edit
Interactive Rebase
git rebase -i master
Git Log
- %h = abbreviated commit hash
- %x09 = tab (character for code 9)
- %an = author name
- %ae = author email
- %ad = author date (format respects --date= option)
- %s = subject
git log --pretty=format:"%h%x09%an%x09%ad%x09%s"
Git Rebase From Root
git rebase -i --root
Recover branch accidently deleted
git reflog --no-abbrev
git checkout -b <branch> <sha>
merge unrelated histories git pull --allow-unrelated-histories