Git学习
最佳实践
查看配置:
git config --list
修改配置:
git config --global user.name xxxx
git config --global user.email xxxx@xxx.xxx
git命令缩写:
git config --global core.autocrlf false
git config --global core.eol lf
git config --global color.ui true
git config --global alias.sl "log --graph --decorate --pretty=oneline --abbrev-commit --all"
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset %C(bold blue)<%an>%Creset ---%C(yellow)%d%Creset %s %Cgreen(%cr)' --abbrev-commit"
git config --global alias.co checkout
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.df diff
git config --global credential.helper store
git config --global core.editor "vim"
git config --global https.proxy http://127.0.0.1:7890
git config --global https.proxy https://127.0.0.1:7890
git config --global --unset http.proxy
git config --global --unset https.proxy
添加和提交
git add [file] 添加文件
git add . 添加目录全部文件
git commit -m ""
git push
版本回退
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,
用命令git checkout -- file
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,
第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作
场景3:场景3:已经提交了不合适的修改到本地版本库时,想要撤销本次提交
git reset --soft HEAD^
git reset --hard HEAD^
分支管理
git checkout -b dev #创建分支
git add .
git commit -m ""
git checkout master #切换为主分支
git checkout dev #切换到dev分支
git checkout master #切换为主分支
git merge dev #在master上,合并dev分支的commit
git branch -d dev #在master上,删除分支
临时文件
git stash 暂存状态
git stash list 查看暂存列表
git stash clear 清空暂存列表
git stash drop stash@{0} 删除第一个暂存
git stash save "说明" 暂存未提交工作区
git stash pop 恢复
git stash apply
git stash apply 将缓存堆栈中的stash多次应用到工作目录中,但并不删除stash拷贝
git stash apply stash@{0} 指定使用哪一个stash
删除未合并的分支
T4分支已有改动,并且commit了
git branch -D T4
将分支推送到远程
git remote -v #查看远程库信息
git checkout -b T5
git push origin T5
查看远程分支和删除远程分支
#查看所有分支
git branch -a
#查看远程分支
git branch -r
#删除
git push origin -d ABC
拉取远程分支
git checkout -b dev origin/dev #拉取远程分支
提交一些文件后
git checkout -b dev #创建分支
git add .
git commit -m ""
然后
git push origin dev #推送到dev分支
git branch --set-upstream-to=origin/dev dev 将远程和本地分支建立联系
打标签
git checkout master ##切换到主分支
git tag v1.0 #打好v1.0标签
git tag # 查看所有标签
git log --oneline
git tag v0.9 [f52c633] # 忘记打标签,补打标签,f52c633为commit id
git tag -d v0.9 #删除标签
git push origin v0.9 #推送标签到远程
git push origin :refs/tags/v0.9 #删除远程分支的tag
或者
git push origin --delete v0.9 #删除远程分支的tag
拉取并且合并
从远程master合并到feature分支,并且和本地的commit进行合并
git pull origin master --rebase
从远程仓库中拉取所有最新的更新,包括标签
git fetch --tags
使用 git checkout 命令切换到指定的标签
git checkout <tag_name>
如果你想要将标签赋值给本地分支
git branch <branch_name> <tag_name>
解决每次提示输入密码问题
git config --global credential.helper store
解决Windows和Linux环境换行符问题
warning: LF will be replaced by CRLF warning: LF will be replaced by CRLF in xxxxx The file will have its original line endings in your working directory.
git config --global core.autocrlf false
提交排行榜
git log --pretty='%aN' --since="2022-09-01" | sort | uniq -c | sort -k1 -n -r
代码统计
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --since ==2022-09-01 --until=2022-09-30 --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