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
Last revisionBoth sides next revision
newdevs:git:commands [2023/07/20 12:12] tmccannanewdevs:git:commands [2024/03/25 16:32] – [Squash Commits] tmccanna
Line 1: Line 1:
 **New Developers Working Group** **New Developers Working Group**
-====== Git for Windows ====== +====== Useful Git Commands ======
- +
-===== Useful Commands ===== +
- +
-==== Git Commands ====+
  
   * ''git add myfile.txt'' --> stage a specific file   * ''git add myfile.txt'' --> stage a specific file
Line 22: Line 18:
   * ''git cherry-pick -s <nowiki><first hash>^..<last hash></nowiki>'' --> apply a range of commits with your signoff to your local branch   * ''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 -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 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'' --> 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 -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</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</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 <nowiki>--amend --signoff <hash></nowiki>'' --> view and amend your signoff for a specific commit on your sign-off branch
Line 31: Line 29:
   * ''git config <nowiki>--global</nowiki> -l'' --> list all global configuration values   * ''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> 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 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 config -e'' --> show git configuration file
Line 48: Line 48:
   * ''git reset <nowiki>--hard</nowiki>'' --> reset a current branch to its original state   * ''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</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 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 <hash>'' --> display the commit text and differences of the specified commmit
Line 72: Line 73:
 ==== Squash Commits ==== ==== 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:+If you have multiple commits in your local branch that you'd like to combine:
  
-  - Verify that you are in your local branch. +  - Use 'git log' to verify that the commits you want to combine are the most recent 
-  - Type: ''git rebase -i origin/main'' +  - Type ''git rebase -i HEAD~2'' (where is the number of commits you wish to combine)
-    * Alternatively if your branch is already built on current main, you can use: ''git rebase -i HEAD~4''   (where is the number of commits you wish to combine)    +
   - Your text editor will open and should show both of the commits, for example:   - 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 014e59c579 LP#1839359 Select element on login not accessible
     * pick 9de92lsi9a 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 "fixup" then save and close the file+  - 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     * squash --> merges commits, then allows amendment of commit message
     * fixup --> merges commits like squash does, but discards previous commit message     * fixup --> merges commits like squash does, but discards previous commit message
-  - Push the commit again, and force it to overwrite the previous commits: +  - Use "git commit --amend" if you need to edit the final commit message 
-    * ''git push <nowiki>--force</nowiki> working lp1839359_login_select:user/jdoe/lp1839359_login_select''+  - 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''
  
  
newdevs/git/commands.txt · Last modified: 2024/03/25 16:35 by tmccanna

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.