Just a fancy alias
pushall = "!f(){ b=${1:-$(git rev-parse --abbrev-ref HEAD)}; for r in $(git remote); do echo \">>> pushing $b to $r\"; git push \"$r\" \"$b\"; done; }; f"
Welcome to my world
Just a fancy alias
pushall = "!f(){ b=${1:-$(git rev-parse --abbrev-ref HEAD)}; for r in $(git remote); do echo \">>> pushing $b to $r\"; git push \"$r\" \"$b\"; done; }; f"
A quicksolutiuon to this is to add MACs hmac-sha2-512,hmac-sha2-256
Host buggyhost.lan User git IdentityFile ~/.ssh/mykey CheckHostIP no MACs hmac-sha2-512,hmac-sha2-256
To create a new empty branch in Git, we can use the --orphan
command line option
git checkout --orphan
The command above creates the new empty branch and switches into it.
Once the empty branch s created, we can can delete files from the working directory, so they are not committed in to the new branch
git rm -rf .
Now you are in the empty branch without any inherited files or commits.
If you want to push your empty branch to a remote repository, do the following
git commit --alow-empty -m "Init" git push origin
Note, that if you try to merge another branch into the empty one, you will receive the error: fatal: refusing to merge unrelated histories
Use the --allow-unrelated-history
option to force the merge into the empty branch.
git merge --allow-unrelated-history
Ban all the attackers. Easier said than done. A website is constantly under attack as the whole server. One day I decided it was too difficult to maintain every single server and ban those attackers. Blocking IPs on the website level is too late. Also, it consumes a lot of resources. So I went for iptables. You can find it on github/JBlond/ban_em_all
DROP vs REJECT. Well, DROP is a bad option for debugging. Also, it is not the default behavior of the OS itself. Nothing is listing on a port? The OS sends a reject. Sadly I haven’t found a way to use REJECT when it comes to IPs. Using DROP on the other hand the automatic server/website scanners assume a firewall and it is more likely to continue the scan.
Over the time the local git branches may pile up and are no longer used after merging. A cleanup can help with that.
git branch | grep -v "master" | grep -v "development" |grep -v ^* | xargs git branch -D;
Have fun!
Delete all local branches but master and the current one
git branch | grep -v "master" | grep -v ^* | xargs git branch -D;
what did I do? aka git last commit
git diff @~..@
What did I do the last week?
git log --stat --since='1 Week Ago' --graph --pretty=oneline --abbrev-commit --date=relative
git log only the relevant merges
git log --all --graph --decorate --oneline --simplify-by-decoration
show all untracked files
git ls-files --others --exclude-standard
last tag
describe --tags --abbrev=0
How to set up git apache 2.4 on Windows
At my first shot I was abl to glone the repo but I wasn’t able to push into the repo. Setting the LogLevel to debug showed: AH01215: Service not enabled: ‘receive-pack’: C:/Program Files (x86)/Git/libexec/git-core/git-http-backend.exe
Googling suggested to enable WebDAV. I doubted that but tried it anyway. Trail and error! It did not work about. The git client showed a 403 -> an access or authentication error. The authentication triggered something in my mind. So I searched for the auth variable that git uses. Et voilà: Git uses the remote user in a different way.
SetEnv REMOTE_USER $REDIRECT_REMOTE_USER
The following set up is not secure, just for local testing. It requires a http authentication ;)
<VirtualHost *:80> ServerName git.local.apachehaus.de DocumentRoot "/Users/mario/work/git" CustomLog "C:\nul" common SetEnv GIT_PROJECT_ROOT /Users/mario/work/git SetEnv GIT_HTTP_EXPORT_ALL true SetEnv REMOTE_USER $REDIRECT_REMOTE_USER ScriptAliasMatch "(?x)^/(.*/(HEAD | info/refs | objects/(info/[^/]+ | [0-9a-f]{2}/[0-9a-f]{38} | pack/pack-[0-9a-f]{40}.(pack|idx)) | git-(upload|receive)-pack))$" "C:/Program Files (x86)/git/libexec/git-core/git-http-backend.exe/$1" <Directory "/Users/mario/work/git"> Options Indexes FollowSymLinks ExecCGI AllowOverride All Require all granted </Directory> <Directory "C:/Program Files (x86)/git/libexec/git-core/"> Options ExecCGI </Directory> <Directory /> Options Indexes FollowSymLinks ExecCGI Require all granted </Directory> </VirtualHost>