242 lines
5.6 KiB
Markdown
242 lines
5.6 KiB
Markdown
# Git
|
||
|
||
![GitHub Logo](img/image.jpg)
|
||
|
||
## Usefull links
|
||
[Git Cheat Sheet](https://education.github.com/git-cheat-sheet-education.pdf)
|
||
|
||
|
||
## Git System
|
||
![Git System](img/Git_Guide.png)
|
||
|
||
## Remote Execution
|
||
![Remote Execution](img/Remote_execution.png)
|
||
|
||
|
||
## Basic commands
|
||
=================
|
||
|
||
### Initialize an existing directory as a Git repository
|
||
```bash
|
||
$ git init
|
||
Initialized empty Git repository in C:/Users/Admin/Documents/Git/.git/
|
||
```
|
||
### Show modified files in working directory, staged for your next commit
|
||
|
||
```bash
|
||
$ git status
|
||
On branch master
|
||
|
||
No commits yet
|
||
|
||
Untracked files:
|
||
(use "git add <file>..." to include in what will be committed)
|
||
Readme.md
|
||
image.jpg
|
||
|
||
nothing added to commit but untracked files present (use "git add" to track)
|
||
```
|
||
### Add a file as it looks now to your next commit (stage)
|
||
```bash
|
||
$ git add Readme.md image.jpg
|
||
```
|
||
### Commit your staged content as a new commit snapshot
|
||
```bash
|
||
$ git commit -m "First Commit"
|
||
[master (root-commit) 784ae2e] First Commit
|
||
Committer: unknown <Admin@FOR209-03.irisib.lan>
|
||
Your name and email address were configured automatically based
|
||
on your username and hostname. Please check that they are accurate.
|
||
You can suppress this message by setting them explicitly:
|
||
|
||
git config --global user.name "Your Name"
|
||
git config --global user.email you@example.com
|
||
|
||
After doing this, you may fix the identity used for this commit with:
|
||
|
||
git commit --amend --reset-author
|
||
|
||
2 files changed, 61 insertions(+)
|
||
create mode 100644 Readme.md
|
||
create mode 100644 image.jpg
|
||
```
|
||
|
||
### Set a name & email that is identifiable for credit when review version history
|
||
```bash
|
||
$ git config --global user.name “[firstname lastname]”
|
||
|
||
$ git config --global user.email “[valid-email]”
|
||
```
|
||
|
||
### Show all commits in the current branch’s history
|
||
```bash
|
||
$ git log
|
||
commit 784ae2e2d10720c23eb7cebdf8386ef2157fe628 (HEAD -> master)
|
||
Author: unknown <Admin@FOR209-03.irisib.lan>
|
||
Date: Thu Apr 1 12:11:34 2021 +0200
|
||
|
||
First Commit
|
||
```
|
||
|
||
## SHARE & UPDATE
|
||
### Retrieving updates from another repository and updating local repos
|
||
=================================
|
||
|
||
add a git URL as an alias
|
||
|
||
>git remote add [alias] [url]
|
||
|
||
fetch down all the branches from that Git remote
|
||
|
||
>git fetch [alias]
|
||
|
||
merge a remote branch into your current branch to bring it up to date
|
||
>git merge [alias]/[branch]
|
||
|
||
|
||
Transmit local branch commits to the remote repository branch
|
||
|
||
>git push [alias] [branch]
|
||
|
||
>git pull
|
||
|
||
fetch and merge any commits from the tracking remote branch
|
||
|
||
|
||
## BRANCH & MERGE
|
||
### Isolating work in branches, changing context, and integrating changes
|
||
|
||
![Remote Execution](img/Branching.png)
|
||
|
||
>git branch
|
||
|
||
list your branches. a * will appear next to the currently active branch
|
||
|
||
>git branch [branch-name]
|
||
|
||
create a new branch at the current commit
|
||
|
||
>git checkout
|
||
|
||
switch to another branch and check it out into your working directory
|
||
|
||
>git checkout -b|-B <new_branch> [<start point>]
|
||
|
||
Specifying -b causes a new branch to be created as if git-branch(1) were called and then checked out.
|
||
|
||
If -B is given, <new_branch> is created if it doesn’t exist; otherwise, it is reset. This is the transactional equivalent of
|
||
|
||
>git merge [branch]
|
||
|
||
merge the specified branch’s history into the current one
|
||
|
||
>git log
|
||
|
||
show all commits in the current branch’s history
|
||
|
||
## TRACKING PATH CHANGES
|
||
### Versioning file removes and path changes
|
||
=================================
|
||
|
||
Delete the file from project and stage the removal for commit
|
||
|
||
>git rm [file]
|
||
|
||
Change an existing file path and stage the move
|
||
|
||
>git mv [existing-path] [new-path]
|
||
|
||
Show all commit logs with indication of any paths that moved
|
||
|
||
>git log --stat -M
|
||
|
||
|
||
### History
|
||
```bash
|
||
history
|
||
1 git init
|
||
2 git status
|
||
3 git add Readme.md image.jpg
|
||
4 git status
|
||
5 git commit -m "First Commit"
|
||
6 git config --global user.name vl4dd
|
||
7 git config --global user.email ticus@kraland.net
|
||
8 git commit -m "First Commit"
|
||
9 git status
|
||
10 git log
|
||
11 git commit -m "Second commit"
|
||
12 git add Readme.md
|
||
13 git commit -m "Second commit"
|
||
14 git log
|
||
```
|
||
|
||
###
|
||
Checker le satus
|
||
> git status
|
||
|
||
Ajouter un element dans la branche
|
||
> git add Readme.md
|
||
|
||
Commit les changement
|
||
> git commit -m "First commit"
|
||
|
||
Show all commit
|
||
>git checkout
|
||
|
||
Merge
|
||
>git merge
|
||
|
||
## Setup
|
||
|
||
### Configuring user information used across all local repositories
|
||
|
||
>git config --global user.name “[firstname lastname]”
|
||
|
||
set a name that is identifiable for credit when review version history
|
||
|
||
>git config --global user.email “[valid-email]”
|
||
|
||
set an email address that will be associated with each history marker
|
||
|
||
>git config --global color.ui auto
|
||
|
||
set automatic command line coloring for Git for easy reviewing
|
||
|
||
### Saving your uncommitted work for a quick fix then getting it back
|
||
|
||
>git stash
|
||
|
||
temporarily stash your work since your last commit
|
||
|
||
>git stash pop
|
||
|
||
fetch your stashed work to continue it
|
||
|
||
$ git stash pop stash@{2}
|
||
|
||
in case you want to apply a specific Stash item (not the most recent one), you can provide the index name of that item in the "pop" option
|
||
|
||
### Rewriting history
|
||
|
||
>git commit --amend -m "New commit message"
|
||
|
||
replace the message of the last commit without altering the snapshot
|
||
|
||
>git commit --amend --no-edit
|
||
|
||
replace the latest commit with a commit that includes recents git add
|
||
|
||
>git rebase -i {branch}
|
||
|
||
take the precedent commit and add it to your branch
|
||
|
||
### Ignoring files
|
||
|
||
>touch .gitignore && echo {what you want to ignore} >> .gitignore
|
||
|
||
create a file and specify what (extensions, directories, files) to ignore in it
|
||
|
||
>git rm --cached {fileignored}
|
||
|
||
remove from the tracking index a file that should be ignored but wasnt because already tracked when the ignore rule was created
|