User Tools

Site Tools


newdevs:git:commands

Differences

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

Link to this comparison view

Next revision
Previous revision
newdevs:git:commands [2019/06/28 17:10] – created tmccannanewdevs:git:commands [2024/03/25 16:35] (current) tmccanna
Line 1: Line 1:
-====== Git for Windows ====== +**New Developers Working Group** 
-===== Useful Git Bash Commands =====+====== Useful 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 based on your current branch and check it out at the same time 
 +  * ''git checkout -b mynewbranch origin/main'' --> create a new branch based on your main branch rather than on your currently checked out branch 
 +  * ''git checkout main'' --> switch to main 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 <nowiki><hash></nowiki>'' --> apply a specific commit to your local branch 
 +  * ''git cherry-pick -s <nowiki><hash></nowiki>'' --> apply a specific commit to your local branch with your signoff 
 +  * ''git cherry-pick -s <nowiki><first hash>^..<last hash></nowiki>'' --> 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 clean -d -f'' --> delete untracked folders you do not want 
 +  * ''git clone <nowiki>git://git.evergreen-ils.org/Evergreen.git</nowiki>'' --> 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 <nowiki>--amend</nowiki>'' --> overwrite your last commit message 
 +  * ''git commit <nowiki>--amend --author='Jon Doe <example@example.com'</nowiki>'' --> amend commit author 
 +  * ''git commit <nowiki>--amend --signoff</nowiki>'' --> view and amend your sign-off branch 
 +  * ''git commit <nowiki>--amend --signoff <hash></nowiki>'' --> 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 <nowiki>--global</nowiki> -l'' --> list all global configuration values 
 +  * ''git config <nowiki>--global</nowiki> keyname "value"'' --> create a global value 
 +  * ''git config <nowiki>--global</nowiki> user.email "you@example.com"'' --> set your email address 
 +  * ''git config <nowiki>--global</nowiki> user.name "FIRSTNAME LASTNAME"'' --> set your name 
 +  * ''git fetch <nowiki>--all</nowiki>'' --> refresh your local cache from the remote branches (does not download new branches); equivalent to git remote update 
 +  * ''git config -e'' --> show git configuration file 
 +  * ''git fetch working'' --> fetches all new branches in the working directory 
 +  * ''git help'' --> access the built-in Git help documentation 
 +  * ''git log'' --> lists most recent commits with details 
 +  * ''git log <nowiki>--name-only</nowiki'' --> lists first line only of most recent commits 
 +  * ''git log <nowiki>--oneline</nowiki>'' --> lists id plus first line only of most recent commits 
 +  * ''git pull'' --> imports all updates from your default remote repo to your default local repo (usually, this is equivalent to 'git pull origin main'); pull is equivalent to doing a fetch followed by a merge 
 +  * ''git pull origin main'' --> import all updates from remote origin repo to local main repo 
 +  * ''git pull <nowiki>--rebase</nowiki> origin main'' --> 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 <nowiki>--delete</nowiki> mybranchname'' --> delete a remote branch 
 +  * ''git push working <nowiki>--force</nowiki> mybranchname'' --> forces an overwrite on your previous branch 
 +  * ''git remote -v'' --> display remote directories 
 +  * ''git remote show origin'' --> 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 <nowiki>--hard</nowiki>'' --> reset a current branch to its original state 
 +  *  
 +  * ''git reset <nowiki>--hard HEAD</nowiki>'' --> remove last commit 
 +  * ''git reset <nowiki>--hard HEAD~2</nowiki>'' --> remove last 2 commits (increment numeral as needed) 
 +  * ''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 <nowiki>--stat</nowiki>'' --> 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 main, you'll need to rebase it. 
 + 
 +  - Open the git branch 
 +  - Type: git rebase origin/main --> rebases the current branch to main (you can do this when you have your branch checked out and changes committed, but have not yet pushed it) 
 +  - If there are merge conflict errors, type: git status 
 +  - Open the file with the problem in your preferred text editor (notepad++, vim, nano, etc.) 
 +  - Look for merge conflict markers in the file (>>>) and correct the problems 
 +  - Type: git add (problem file name) 
 +  - Repeat steps 4-6 for each additional problem file 
 +  - Type: git rebase <nowiki>--</nowiki>continue  
 + 
 + 
 +==== Squash Commits ==== 
 + 
 +If you have multiple commits in your local branch that you'd like to combine: 
 + 
 +  - Use 'git log' to verify that the commits you want to combine are the most recent 
 +  - Type ''git rebase -i HEAD~2'' (where 2 is the number of commits you wish to combine) 
 +  - 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 
 +  - Change the word "pick" in the second line to either "fixup" or "squash" 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 
 +  - Use "git commit --amend" if you need to edit the final commit message 
 +  - Push the changes up to your remote working directory as normal 
 +    * ''git push working user/jdoe/lp1839359_login_select'' 
 + 
 +If you've already pushed multiple commits up to your remote working git repository, you can still combine them: 
 + 
 +  - Follow the steps above, but when pushing, use "--force" 
 +    * ''git push <nowiki>--force</nowiki> working 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 
 +  * '':set number'' --> turns on line numbers 
 +  * ''?abc'' --> searches for occurrences of 'abc'
  
-**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 clone <nowiki>git://git.evergreen-ils.org/Evergreen.git</nowiki> --> 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 <nowiki>--amend --> overwrite your last commit message 
-  * git commit <nowiki>--amend --signoff</nowiki> --> view and amend 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 <nowiki>--global</nowiki> -l --> list all global configuration values 
-  * git config <nowiki>--global</nowiki> keyname "value" --> create a global value 
-  * git fetch <nowiki>--all</nowiki> --> refresh your local cache from the remote branches (does not download new branches) 
-  * git help --> access the built-in Git help documentation. 
-  * git log <nowiki>--oneline</nowiki> --> 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') 
-  * git pull origin master --> import all updates from remote origin repo to local master repo 
-  * git pull <nowiki>--rebase</nowiki> 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 <nowiki>--</nowiki>delete mybranchname --> delete a remote branch 
-  * git remote -v --> display remote directories 
-  * git reset HEAD myfile.txt --> unstage a file that has already been staged 
-  * git reset <nowiki>--hard</nowiki> --> reset a current branch to its original state 
-  * 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 <nowiki>--stat</nowiki> --> 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 
  
-**Other 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 
-  * ls --> list all of the folders and files in the current folder 
-  * mkdir newfoldername --> create a new 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 
  
  
  
newdevs/git/commands.1561756212.txt.gz · Last modified: 2022/02/10 13:34 (external edit)

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

© 2008-2022 GPLS and others. Evergreen is open source software, freely licensed under GNU GPLv2 or later.
The Evergreen Project is a U.S. 501(c)3 non-profit organization.