User Tools

Site Tools


newdevs:git:commands

This is an old revision of the document!


New Developers Working Group

Git for Windows

Useful Commands

Git Commands

  • git add myfile.txt –> stage a specific file
  • git add -A –> stage all modified files in the current directory and subdirectories
  • git add . –> (Note the period) stage all modified files in the current directory but not subdirectories
  • git branch –> list existing local branches
  • git branch mynewbranch –> create a new branch
  • git branch -m oldbranchname newbranchname –> change name of branch
  • git branch -D branchname –> delete a local branch (cannot delete a branch you currently have checked out, so switch to different branch first)
  • git checkout mybranch –> check out an existing branch
  • git checkout -b mynewbranch –> create a new branch and check it out at the same time
  • git checkout master –> switch to master branch
  • git checkout – docname.tt2 –> resets a file you've changed back to its original state (like an undo / revert changes command)
  • git cherry-pick <hash> –> apply a specific commit to your local branch
  • git cherry-pick -s <hash> –> apply a specific commit to your local branch with your signoff
  • git cherry-pick -s <first hash>^..<last hash> –> apply a range of commits with your signoff to your local branch
  • git clean -d -i –> interactively delete untracked files you do not want
  • git clone git://git.evergreen-ils.org/Evergreen.git –> clones a remote repository
  • git commit –> invoke the default text editor to add a commit message
  • git commit -m "my commit message" –> add brief commit message instead of opening the text editor to add a commit message
  • git commit --amend –> overwrite your last commit message
  • git commit --amend --signoff –> view and amend your sign-off branch
  • git commit --amend --signoff <hash> –> view and amend your signoff for a specific commit on your sign-off branch
  • git commit -a –> combine the git add and git commit steps into a single step (does not include newly created files)
  • git config --global -l –> list all global configuration values
  • git config --global keyname "value" –> create a global value
  • git fetch --all –> refresh your local cache from the remote branches (does not download new branches); equivalent to git remote update
  • git fetch working –> fetches all new branches in the working directory
  • git help –> access the built-in Git help documentation
  • git log --oneline –> list previous commits with their unique ids
  • git pull –> imports all updates from your default remote repo to your default local repo (usually, this is equivalent to 'git pull origin master'); pull is equivalent to doing a fetch followed by a merge
  • git pull origin master –> import all updates from remote origin repo to local master repo
  • git pull --rebase origin master –> rebases (rather than merges) new remote changes to your local repository
  • git push working mybranchname –> push changes to the remote working directory
  • git push working --delete mybranchname –> delete a remote branch
  • git remote -v –> display remote directories
  • git remote update –> refresh your local cache from the remote branches (does not download new branches); equivalent to git fetch –all
  • git reset HEAD myfile.txt –> unstage a file that has already been staged
  • git reset --hard –> reset a current branch to its original state
  • git reset --hard HEAD^ –> remove last commit
  • git rm badfile.txt –> delete a file (if the file is being tracked, be sure to add a commit message indicating the file has been deleted)
  • git show <hash> –> display the commit text and differences of the specified commmit
  • git show --stat –> see what your commit will look like before you push it
  • git status –> display status of current branch
  • git version –> displays the installed version of Git
  • gitk –> use this after committing changes but before pushing them to see what will be pushed

Rebase

If your patch is behind current master, you'll need to rebase it.

  1. Open the git branch
  2. Type: git rebase origin/master –> rebases the current branch to master
  3. If there are merge conflict errors, type: git status
  4. Open the file with the problem in your preferred text editor (notepad++, vim, nano, etc.)
  5. Look for merge conflict markers in the file (>>>) and correct the problems
  6. Type: git add (problem file name)
  7. Repeat steps 4-6 for each additional problem file
  8. Type: git rebase --continue

Squash Commits

If you are in your local working branch and you've pushed up two commits to the remote git repository, you can combine them:

  1. Verify that you are in your local branch.
  2. Type: git rebase -i origin/master
    • Alternatively if your branch is already built on current master, you can use: git rebase -i HEAD~4 (where 4 is the number of commits you wish to combine)
  3. Your text editor will open and should show both of the commits, for example:
    • pick 014e59c579 LP#1839359 Select element on login not accessible
    • pick 9de92lsi9a LP#1839359 Select element on login not accessible
  4. Change the word "pick" in the second line to "fixup" then save and close the file
    • squash –> merges commits, then allows amendment of commit message
    • fixup –> merges commits like squash does, but discards previous commit message
  5. Push the commit again, and force it to overwrite the previous commits:
    • git push –force working lp1839359_login_select:user/jdoe/lp1839359_login_select

Common Bash Commands

  • cd –> move back to the home folder
  • cd foldername –> move from the current folder to a child folder
  • cd .. –> move up in the folder hierarchy one level
  • clear –> clears your command window giving you a fresh screen to work with (also, Ctrl-l)
  • cp myfile.txt myfile.bak –> copies file with new name
  • diff myfile.txt otherfile.txt –> shows differences between files
  • echo $ (tab tab) –> returns list of all variables
  • echo $s (tab) –> returns list of all variables that begin with 's'
  • echo (variable name) –> returns value of variable
  • ls –> list visible folders and files in the current folder
  • ls -a –> lists all of the files and folders in the current folder, including hidden files
  • ls -l –> lists all of the folders and files in the current folder with additional detail such as last modified timestamp
  • man (name of command) –> opens manual for that command
  • mkdir newfoldername –> create a new folder
  • mv myfile.txt myfolder –> moves file to folder
  • notepad++ newdocname.txt –> create a new file and open it in notepad++
  • notepad++ docname.txt –> edit an existing file in notepad++
  • pwd –> see what folder you are currently in
  • rmdir (myfoldername) –> deletes folder

Vim Text Editor

The vim text editor is built into the bash console (similar to notepad in Windows).

  • vim –> opens vim text editor in command mode
  • vim (filename) –> opens file in vim text editor

Vim opens in command mode, which allows a variety of functions, but does not allow direct editing.

  • i –> puts you into edit mode
  • esc –> puts you back into command mode from edit mode
  • :q –> takes you out of vim
  • :w –> saves your work
  • :wq –> saves & closes
newdevs/git/commands.1623341186.txt.gz · Last modified: 2021/06/10 12:06 by tmccanna

© 2008-2017 GPLS and others. Evergreen is open source software, freely licensed under GNU GPLv2 or later.
The Evergreen Project is a member of Software Freedom Conservancy.