标签归档:git

git stash 贮藏

# 贮藏
git stash
# 贮藏时添加 message
git stash save "message"
# 贮藏时包含所有修改,同 --all
git stash -a
# 贮藏时包含未暂存的修改,同 --include-untracked
git stash -u
# 出栈第一个贮藏,应用到工作目录
git stash pop
# 应用贮藏内容到工作目录
git stash apply
# 贮藏堆栈列表
git stash list
# 丢弃贮藏 stash@{0}
git stash drop stash@{0}
# 清空 stash
git stash clear
# 查看贮藏的 diff
git stash show [stash@{0}]
# 查看贮藏的全部 diff,同 --patch
git stash show -p
# 从贮藏创建新分支
git stash branch new_branch_name

git 拉取所有分支的办法

git clone xxx
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all

nginx 代理 gitlab 时的 413 问题

git push 时出现:

Counting objects: 80, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (75/75), done.
fatal: The remote end hung up unexpectedly
Writing objects: 100% (80/80), 42.70 MiB | 12.01 MiB/s, done.
Total 80 (delta 47), reused 0 (delta 0)
error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large
fatal: The remote end hung up unexpectedly
Everything up-to-date

可以先尝试

git config --global http.postBuffer 524288000

同时检查 nginx 配置,在 nginx.confhttp 中添加:

client_max_body_size 100m;

100m 值取决于报错的大小。

利用 git 统计代码贡献

git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done

怎么让git记住密码

git如何push时不输入密码?

git config --global credential.helper store

更换账号时删除本地凭证

git config --global --unset credential.helper

git 分离头指针的合并方法

处于头指针分离状态时,所作的修改不能被任何一个分支所跟踪,因此不能保证所作的提交会永久保存,当reflog中含有该日志过期后,这个提交随时都会从版本被中清除。挽救的办法是将分离状态的提交merge到master中来。

git checkout master
git merge 分离指针

此时可以看到我们已经通过merge合并到master中来了。