diff --git a/IT/git.md b/IT/git.md deleted file mode 100644 index 407d07e..0000000 --- a/IT/git.md +++ /dev/null @@ -1,40 +0,0 @@ -# git - -## delete a file only from git repository - -`git rm -rf --cached` - -## delete a file from complete history - -be carefull can't push repo last time use - -`git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch logbook.md" HEAD` - -## example de déclencheur git - -```bash -#!/bin/bash -GIT_REPO=`pwd` -SITE_NAME=notebook -TMP_GIT_CLONE="/tmp/$SITE_NAME" -PUBLIC_WWW="/usr/share/nginx/html/$SITE_NAME" -# get branch name -if ! [ -t 0 ]; then - read -a ref -fi -IFS='/' read -ra REF <<< "${ref[2]}" -branch="${REF[2]}" - -if [ "master" == "$branch" ]; then -mkdir -p $TMP_GIT_CLONE -echo "download repo" -git clone --recursive $GIT_REPO $TMP_GIT_CLONE -cd $TMP_GIT_CLONE -export PATH="$HOME/.local/bin:$PATH" -make install -e BUILDDIR=$PUBLIC_WWW -echo "Cleaning up" -rm -Rf $TMP_GIT_CLONE -fi -exit - -``` diff --git a/IT/git/Rewrite_History.md b/IT/git/Rewrite_History.md new file mode 100644 index 0000000..b8b41e1 --- /dev/null +++ b/IT/git/Rewrite_History.md @@ -0,0 +1,47 @@ +# Rewrite Git History + +## Changing the Last Commit + +If you want to modify your last commit message: + +`git commit --amend` + +## Rewrite multiple Commit + +for that you need to use rebase in interactive mode like this: + +` git rebase -i HEAD^3 ` + +this will open an editor wit list of commit you need to modiy this with needed action to do + +### Reordering Commit + +ON this editor you can invert line to change commit order, git will reaply commit in wew order + +### Squash & fixup commit + +**Squash** option will merge will merge xommit with the previous and ad commit message in the new commit message + +**Fixup** do same thing put forgot commit message + +### Splitting a Commit + +you can do that with **edit** command + +git rebase will stop after apply commit where you hae put edit + +ad this moment you can process to a Head reset and commit when you want to add commit modification like ewample below + +```sh +git reset HEAD^ +git add README +git commit -m 'Update README formatting' +git add lib/simplegit.rb +git commit -m 'Add blame' +git rebase --continue +``` + +### delete + +**drop** will delete comite rebase will not apply modification during processing +to use by example if you have done a modifcation and a revert diff --git a/IT/git/git.md b/IT/git/git.md new file mode 100644 index 0000000..f004850 --- /dev/null +++ b/IT/git/git.md @@ -0,0 +1,66 @@ +# git + +## Add in staging only a part of modification done in a file + +`git add -p` + +this will ask if you want to add each modification with this option: + +- *y* - Yes, add this hunk +- *n* - No, don’t add this hunk +- *d* - No, don’t add this hunk and all other remaining hunks. Useful if you’ve already added what you want to, and want to skip over the rest +- *s* - Split the hunk into smaller hunks. This only works if there’s unchanged lines between the changes in the displayed hunk, so this wouldn’t have any effect in the example above +- *e* - Manually edit the hunk. This is probably the most powerful option. As promised, it will open the hunk in a text editor and you can edit it to your hearts content + +## delete a file only from git repository + +`git rm -rf --cached` + +## delete a file from complete history + +be carefull can't push repo last time use + +`git filter-branch --tree-filter 'rm -f passwords.txt' HEAD` + +## changing email adress + +``` +$ git filter-branch --commit-filter ' + if [ "$GIT_AUTHOR_EMAIL" = "schacon@localhost" ]; + then + GIT_AUTHOR_NAME="Scott Chacon"; + GIT_AUTHOR_EMAIL="schacon@example.com"; + git commit-tree "$@"; + else + git commit-tree "$@"; + fi' HEAD +``` + +## example de déclencheur git dans un dépot git + +```bash +#!/bin/bash +GIT_REPO=`pwd` +SITE_NAME=notebook +TMP_GIT_CLONE="/tmp/$SITE_NAME" +PUBLIC_WWW="/usr/share/nginx/html/$SITE_NAME" +# get branch name +if ! [ -t 0 ]; then + read -a ref +fi +IFS='/' read -ra REF <<< "${ref[2]}" +branch="${REF[2]}" + +if [ "master" == "$branch" ]; then +mkdir -p $TMP_GIT_CLONE +echo "download repo" +git clone --recursive $GIT_REPO $TMP_GIT_CLONE +cd $TMP_GIT_CLONE +export PATH="$HOME/.local/bin:$PATH" +make install -e BUILDDIR=$PUBLIC_WWW +echo "Cleaning up" +rm -Rf $TMP_GIT_CLONE +fi +exit + +```