User Tools

Site Tools


cheatsheet:git

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
cheatsheet:git [2023/02/14 08:00] – created kamaradskicheatsheet:git [2023/07/24 08:46] (current) – [other common commands] kamaradski
Line 17: Line 17:
  
 </code> </code>
 +
 +
 +===== revert to a previous commit (already pushed) =====
 +
 +<code bash>
 +git reset --hard <commit>
 +</code>
 +
 +
 +===== git reset details =====
 +
 +git reset [<options>] [<commit>]
 +
 +  * [<commit>] is the commit identifier (hash or reference) to reset to.
 +  * [<options>] are optional flags that modify the behavior of the reset command. 
 +
 +Some possible options:
 +<code>
 +--hard: Reset the repository to the specified commit and discard all changes in the working tree.
 +
 +--soft: Reset the repository to the specified commit, but keep changes in the working tree.
 +
 +--mixed (default): Reset the repository to the specified commit, but keep changes in the index (staging area).
 +
 +--merge: Reset the repository to the specified commit and keep changes that have been made in the working tree.
 +
 +--keep: Keep changes in both the working tree and the index (staging area).
 +</code>
 +
 +
 +===== Use git stash to move code between branches =====
 +
 +A common use case that I use git stash for is when I make changes in the wrong branch that are bigger than just a few lines and thus not so easy to copy/paste into the next branch.
 +
 +Here is how I do it:
 +
 +<code>
 +git stash // stash your changes
 +git checkout feature_branch // Navigate to your feature branch (or create and checkout a new branch: git checkout -b feature_branch
 +git stash apply // apply the stashed changes
 +git add .
 +git commit -m "Your commit message here"
 +git stash drop // delete the stash in case yuo no longer need it
 +</code>
 +
 +
 +===== other common commands =====
 +
 +  * ''git init'': Initialize a new Git repository.
 +  * ''git clone <repository_url>'': Clone an existing Git repository.
 +  * ''git add <file_or_directory>'': Stage changes to a file or directory for the next commit.
 +  * ''git reset <file_or_directory>'': Unstage changes to a file or directory.
 +  * ''git commit -m "<message>"'': Commit staged changes with a message.
 +  * ''git log'': Display the commit history of the repository.
 +  * ''git status'': Display the current status of the repository, including staged and unstaged changes.
 +  * ''git diff'': Display the difference between the current state and the last commit.
 +  * ''git checkout <branch_or_commit>'': Check out a different branch or commit.
 +  * ''git branch'': Display a list of local branches.
 +  * ''git branch <branch_name>'': Create a new branch.
 +  * ''git checkout -b <branch_name>'': Create and checkout a new branch.
 +  * ''git merge <branch_name>'': Merge changes from another branch into the current branch.
 +  * ''git rebase <branch_name>'': Rebase the current branch on top of another branch.
 +  * ''git fetch'': Download new changes from the remote repository.
 +  * ''git pull'': Fetch and merge changes from the remote repository.
 +  * ''git push'': Upload local changes to the remote repository.
 +
 +===== .git/config =====
 +
 +Random stuff one can use in their git config file: ~/somerepo/.git/config 
 +
 +==== User details ====
 +
 +<code>
 +[user]
 +  email = [email protected]
 +  name = username
 +</code>
 +
 +You can add this manually, or use the cli commands to populate the file with this information, like so:
 +
 +<code bash>
 +git config user.email "[email protected]"
 +git config user.name "username"
 +</code>
 +
 +==== Aliases ====
 +
 +Setting up some short-cut commands for frequently used commands
 +
 +<code>
 +[alias]
 +  st = status
 +  ci = commit
 +  br = branch
 +  co = checkout
 +  df = diff
 +  lg = log -p
 +  lol = log --graph --decorate --pretty=oneline --abbrev-commit
 +  kama = log --graph --pretty=format:\"%h - %cr - %cN - %s - %b\" --all
 +  ls = ls-files
 +</code>
 +
 +
 +==== Formatting ====
 +
 +Funky colors
 +
 +<code>
 +[color]
 +  ui = auto
 +[color "branch"]
 +  current = yellow reverse
 +  local = yellow
 +  remote = green
 +[color "diff"]
 +  meta = yellow bold
 +  frag = magenta bold
 +  old = red bold
 +  new = green bold
 +  whitespace = red reverse
 +[color "status"]
 +  added = yellow
 +  changed = green
 +  untracked = cyan
 +</code>
 +
cheatsheet/git.1676361645.txt.gz · Last modified: 2023/02/14 08:00 by kamaradski