123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- % git
- # Set global git user name
- git config --global user.name <name>
- # Set global git user email
- git config --global user.email <email>
- # Initializes a git repository
- git init
- # Clone a git repository
- git clone -b <branch_name> <repository> <clone_directory>
- # Shallow clone with depth 1 with all branches and submodules
- git clone --depth=1 --no-single-branch --recurse-submodules <repository> <clone_directory>
- # Rebase upstream master into local/origin master (use if people don't clone your repository)
- git fetch <remote_name>
- git checkout master
- git rebase <remote_name>/master
- git fetch --unshallow origin
- git push -f origin master
- # Merge upstream master into local/origin master (use if people clone your repository)
- git fetch <remote_name>
- git checkout master
- git merge <remote_name>/master
- git fetch --unshallow origin
- git push -f origin master
- # View all available remote for a git repository
- git remote --verbose
- # Adds a remote for a git repository
- git remote add <remote_name> <remote_url>
- # Renames a remote for a git repository
- git remote rename <old_remote_name> <new_remote_name>
- # Remove a remote for a git repository
- git remote remove <remote_name>
- # Checkout to branch
- git checkout <branch>
- # Displays the current status of a git repository
- git status
- # Displays unstaged changes for file
- cd <toplevel_directory>; \
- git diff <unstaged_files>
- # Stage single or multiple files
- cd <toplevel_directory>; \
- git add <changed_files>;
- # Stage all files in project
- git add -A
- # Create commit for staged files
- git commit -m "<commit_description>"
- # Create backdated commit for staged files
- git commit --date="<number_of_days_ago> days ago" -m "<commit_description>"
- # Pushes committed changes to remote repository
- git push -u <remote_name> <branch_name>
- # Pushes changes to a remote repository overwriting another branch
- git push <remote_name> <branch>:<branch_to_overwrite>
- # Overwrites remote branch with local branch changes
- git push <remote_name> <branch_name> -f
- # Pulls changes to a remote repo to the local repo
- git pull --ff-only
- # Merges changes on one branch into current branch
- git merge <branch_name>
- # Abort the current conflict resolution process, and try to reconstruct the pre-merge state.
- git merge --abort
- # Displays log of commits for a repo
- git log
- # Displays formatted log of commits for a repo
- git log --all --decorate --oneline --graph
- # Clear everything
- git clean -dxf
- # Sign all commits in a branch based on master
- git rebase master -S -f
- # See all open pull requests of a user on Github
- navi fn url::open 'https://github.com/pulls?&q=author:<user>+is:open+is:pr'
- # Checkout a branch from a fork
- git fetch origin pull/<pr_number>/head:pr/<pr_number> \
- && git checkout pr/<pr_number>
- # Add a new module
- git submodule add <repository> <path>
- # Update module
- git submodule update --init
- # Update module without init
- git submodule update
- # Pull all submodules
- git submodule foreach git pull origin master
- # Update all submodules
- git submodule update --init --recursive
- # Skip git hooks
- git commit --no-verify
- # Create new branch from current HEAD
- git checkout -b <new_branch_name>
- # Remove commits from local repository (destroy changes)
- git reset --hard HEAD~<number_of_commits>
- # Remove commits from local repository (keep changes)
- git reset --soft HEAD~<number_of_commits>
- $ branch: git branch | awk '{print $NF}'
- $ toplevel_directory: git rev-parse --show-toplevel
- $ unstaged_files: git status --untracked-files=no -s --porcelain | awk '{print $NF}' --- --multi true
- $ changed_files: git status --untracked-files=all -s --porcelain | awk '{print $NF}' --- --multi true
|