User Tools

Site Tools


newdevs:git:commands

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
newdevs:git:commands [2019/06/28 19:09] – [Other Commands] tmccannanewdevs:git:commands [2024/08/29 13:34] (current) sleary
Line 1: Line 1:
-====== Git for Windows ======+**New Developers Working Group** 
 +====== Useful Git Commands ======
  
-===== Useful 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
  
-==== Git Commands ====+===== Rebase =====
  
-  * git add myfile.txt --> stage a specific file +If your patch is behind current main, you'll need to rebase it.
-  * 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 outso 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 ====+  - 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 
  
-  * cd --> move back to the home folder +You can also use the interactive rebase mode to look at series of commits: 
-  * cd foldername --> move from the current folder to a child folder +  
-  * cd .. --> move up in the folder hierarchy one level +  - Open the git branch 
-  * clear --> clears your command window giving you a fresh screen to work with +  - Type: ''git rebase -i origin/main'' 
-  * ls --list all of the folders and files in the current folder +  - (Optional but recommended) Save this pick list to a separate file, for recovery later if things go wrong 
-  * ls -l --> lists all of the folders and files in the current folder with additional detail such as last modified timestamp +  - Choose what to do with each line using the commands listed in the comment block (pick, edit, drop, fixup, squash) 
-  * mkdir newfoldername --> create a new folder +  - Save and close the "to do" file 
-  * notepad++ newdocname.txt --> create a new file and open it in notepad++ +  - Follow the prompts to complete each step you specified
-  * notepad++ docname.txt --> edit an existing file in notepad++ +
-  * pwd --> see what folder you are currently in+
  
 +If you need to start over, just rebase again and paste in your original pick list.
 +
 +===== 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''
 +
 +===== Aliases =====
 +
 +Shortens normal commands so you type less:
 +
 +<code>
 +$ git config alias.co checkout
 +$ git config alias.cp cherry-pick
 +$ git config alias.br branch
 +$ git config alias.ci commit
 +$ git config alias.st status
 +</code>
  
  
newdevs/git/commands.1561763387.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.