git memento of basic commands
DESCRIPTION
Went for a holiday, and forgor the commands, here is a quick refresher to get directly to work with VCS GIT.TRANSCRIPT
![Page 1: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/1.jpg)
GIT COMMANDES ET MEMENTO
@ElZakaria
![Page 2: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/2.jpg)
YOUR IDENTITY!!!!
Set up your information, really important.$ git config --global user.name ‘’ElZakaria" $ git config --global user.email [email protected]
If you want to override this with a different name or e-mail address for specific projects, you can run the command without the --global option when you’re in that project.
![Page 3: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/3.jpg)
See some configs values
Now that your identity is set up, you can configure the default text editor that will be used when Git needs you to type in a message. By default, Git uses your system’s default editor
$ git config --global core.editor emacs
$git config --list to Check your settings.$ git config user.name to check for a specific key
![Page 4: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/4.jpg)
Wanna get some help? [RTFM]
If you ever need help while using Git, there are three ways to get the manual page (manpage) help for any of the Git commands:
$ git help <verb> $git <verb> --help $man git-<verb> Linux
![Page 5: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/5.jpg)
Check the status of your files
The main tool you use to determine which files are in which state is the git status command.
$ git status # On branch master
…..
If any change to the TRACKED files are done, it will be show there before commiting them!
![Page 6: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/6.jpg)
Begin to track a new File
When you clone a repo, all the files are by default tracked, but adding new ones are not tracked even if is added since the last snapshot, you should do it explicitly:
$ git add MyFile.txt
The git add command takes a path name for either a file or a directory; if it’s a directory, the command adds all the files in that directory recursively.
![Page 7: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/7.jpg)
Trees maintained by GIT!
FOLDER(Working Directory)
Index(Staging
Area)
HEAD
add
commit
git add command (it’s a multipurpose command — you use it to begin tracking new files, to stage files, and to do other things like marking merge-conflicted files as resolved).
![Page 8: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/8.jpg)
Details: Changed and not staged
To see what you’ve changed but not yet staged, type git diff with no other arguments:
$ git diffdiff --git a/MYFILE.txt b/MYFILE.txtindex 778f824..ab9e1ea 100644
--- a/MYFILE.txt+++ b/MYFILE.txt@@ -1,3 +1,4 @@
content added! Oups forgot this sentence
-Once again, sorry I had a terrible morning\ No newline at end of file
+Once again, sorry I had a terrible morning+m
\ No newline at end of file
![Page 9: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/9.jpg)
Details: changed AND Staged
If you want to see what you’ve staged that will go into your next commit, you can use git diff --cached. (In Git versions 1.6.1 and later, you can also use git diff --staged, which may be easier to remember.) This command compares your staged changes to your last commit:
$git diff --staged
![Page 10: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/10.jpg)
Commiting the changes locally.
To commit what you’ve changed:
$git commit OR
$git commit –m ‘’ Description message ‘’ OR $git commit …. -v
ElZakaria@ELDEV ~/projet1 (master)$ git commit -m "Mon changement à Moi"[master 54d99c0] Mon changement à Moi 1 file changed, 5 insertions(+) create mode 100644 MYFILE.txt
Put the diff in description
SHA-1 Checksum’s Commit
![Page 11: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/11.jpg)
Skipping the Staging Area
$git commit –a –m ‘’blah blah blah’’
Providing the -a option to the git commit command makes Git automatically stage every file that is already tracked before doing the commit, letting you skip the git add part.
![Page 12: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/12.jpg)
If you simply remove the file from your working directory, it shows up under the “Changes not staged for commit”You have to add it $git add …
Now you may want to use git rm to don’t track it: $git rm MYFILE.TXT
If you modified the file and added it to the index already, you must force the removal with the -f option. This is a safety feature to prevent accidental removal of data that hasn’t yet been recorded in a snapshot and that can’t be recovered from Git.
![Page 13: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/13.jpg)
KEEP The file, remove from index
Another useful thing you may want to do is to keep the file in your working tree but remove it from your staging area.
You can pass files, directories, and file-glob patterns to the git rm command!!!
$ git rm --cached readme.txt
![Page 14: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/14.jpg)
Moving Files with GIT
$git mv file_FROM file_TO
$ mv README.txt README $ git rm README.txt $ git add README
Same as...
![Page 15: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/15.jpg)
Viewing the commit History
After you have created several commits, or if you have cloned a repository with an existing commit history, you’ll probably want to look back to see what has happened. The most basic and powerful tool to do this is the git log command.
$git log
![Page 16: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/16.jpg)
A huge number and variety of options.
One of the more helpful options is -p, which shows the diff introduced in each commit. You can also use -2, which limits the output to only the last two entries
$git log –p -2 $git log --word-diff
$git log -–stat
The --stat option prints below each commit entry a list of modified files, how many files were changed, and how many lines in those files were added and removed. It also puts a summary of the information at the end.
Difference in words not lines!
![Page 17: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/17.jpg)
$ git log --pretty=oneline
$ git log --pretty=oneline
ca82a6dff817ec66f44342007202690a93763949 changed the verison number085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 removed unnecessary test codea11bef06a3f659402fe7563abf99ad00de2209e6 first commit
$ git log --pretty=format:"%h - %an, %ar : %s"
ca82a6d - Scott Chacon, 11 months ago : changed the version number 085bb3b - Scott Chacon, 11 months ago : removed unnecessary test code a11bef0 - Scott Chacon, 11 months ago : first commit
ShortFull
fulleroneline
Formatting the commit History
Descendant order
![Page 18: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/18.jpg)
Most useful option for format
![Page 19: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/19.jpg)
Most useful option for formatP.S : --graph option is also interesting [Branch and merges…]
![Page 20: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/20.jpg)
Limiting Log Output
-(n) : Show only the last n commits
--since, --after : Limit the commits to those made after the specified date.
$ git log --since=2.weeks
This command works with lots of formats — you can specify a specific date (“2008-01-15”) or a relative date such as “2 years 1 day 3 minutes ago”.
![Page 21: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/21.jpg)
Limiting Log Output
--author : allows you to filter on a specific author.
--grep : lets you search for keywords in the commit messages.
Note : if you want to specify both author and grep options, you have to add --all-match or the command will match commits with either.
Others: --commiter: ….
![Page 22: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/22.jpg)
See logs visually!
Gitk is basically a visual git log tool, and it accepts nearly all the filtering options that git log does. If you type gitk on the command line in your project:
Gitk accept nearly all filtering git log options!
![Page 23: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/23.jpg)
Changing Your Last Commit
One of the common undos takes place when you commit too early and possibly forget to add some files, or you mess up your commit message.
$ git commit --amend
$ git commit -m 'initial commit' $ git add forgotten_file $ git commit --amend
![Page 24: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/24.jpg)
Unstaging a staged file
# Changes to be committed: # (use "git reset HEAD <file>..." to
unstage) # # modified: README.txt # modified: benchmarks.rb
git reset HEAD benchmarks.rb
![Page 25: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/25.jpg)
Discard the changes
# Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in
working directory) # # modified: benchmarks.rb #
$ git checkout -- benchmarks.rb $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: README.txt
![Page 26: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/26.jpg)
YOU Should Understand this
Anything that is committed in Git can almost always be recovered. Even commits that were on branches that were deleted or commits that were overwritten with an --amend commit can be recovered.
Anything you lose that was never committed is likely never to be seen again.
![Page 27: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/27.jpg)
Showing Your Remotes
To see which remote servers you have configured, you can run the git remote command. It lists the shortnames of each remote handle you’ve specified.
$ git remote origin
$ git remote -v origin git://github.com/schacon/ticgit.git (fetch) origin git://github.com/s…/ticgit.git (push)
![Page 28: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/28.jpg)
Adding remote repositories
$ git remote add pb git://github.com/paulboone/ticgit.git
$ git remote -v origin git://github.com/schacon/ticgit.git pb git://github.com/paulboone/ticgit.git
$git remote add [shortname] [url]
shortname
![Page 29: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/29.jpg)
Fetching and pulling from remotes
$ git fetch [remote-name]
Goes to the server and get any new work, but doesn’t merge anything, you have to do it manually!
If you have a branch set up to track a remote branch, you can use the git pull command to automatically fetch and then merge a remote branch into your current branch.
$git pull [remote-name]
![Page 30: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/30.jpg)
Push to the server
$git push [remote-name] [branch-name]
$ git push origin master
This command works only if you cloned from a server to which you have write access and if nobody has pushed in the meantime. If you and someone else clone at the same time and they push upstream and then you push upstream, your push will rightly be rejected. You’ll have to pull down their work first and incorporate it into yours before you’ll be allowed to push.
![Page 31: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/31.jpg)
Inspecting a remote
$ git remote show origin • remote origin URL:
git://github.com/schacon/ticgit.git Remote branch merged with 'git pull' while on branch master
master Tracked remote branches master ticgit
![Page 32: Git Memento of basic commands](https://reader035.vdocuments.us/reader035/viewer/2022062319/5555a235b4c905a5178b53ea/html5/thumbnails/32.jpg)
Removing and Renaming Remotes
$ git remote rename pb paul $ git remote origin Paul
$ git remote rm paul $ git remote origin