forked from vincent/notebook
71 lines
1.9 KiB
Markdown
71 lines
1.9 KiB
Markdown
# git
|
||
![git](../img/git.jpg)
|
||
## Clone with submodule recurse
|
||
|
||
add *--recurse-submodules* to clone command
|
||
|
||
## 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
|
||
|
||
```
|