git 版本控制工具
生成ssh公钥
ssh-keygen -o
cat ~/.ssh/id_rsa.pub初始配置
git config --global user.name "xxx"
git config --global user.email "xxx"常用指令
git remote -v
git remote add origin https://...
git commit --amend
git rebase -i HEAD~3
git push origin --delete branchName
git branch -M newName
git symbolic-ref --short -q HEAD // 在ci中获取当前分支名,如果是gitlab,直接用系统环境变量: CI_COMMIT_REF_NAME
git status -s // 检测当前工作区或者暂存区是否有内容,一般是在脚本中判断当前工作区是否干净查找某个文件的删除记录
前提是知道文件路径:
git log -1 --stat -- ./src/views/some.js
误删除恢复
误删除、丢失commit或者drop,如果知道commitId,直接cherry-pick就行。
如果没有commitId,解决办法:
git fsck --lost-found >> 1.txt或者git fsck --unreachable >> 2.txt,将所有被删除的commitId汇总起来- 用脚本输出commit信息:
#!/bin/sh READFILENAME="1.txt" #上步文件名【1.txt dangling commit,2.txt对应unreachable commit】 RETFILENAME="./详情.txt" #筛选结果文件名 while read -r line do VAR=`echo $line | awk '/dangling commit/ {print $3}'` if [ $VAR ]; then git show $VAR >> $RETFILENAME echo "-------------------------------------\n" >>$RETFILENAME #每条记录用---分割开 fi done < $READFILENAME - 查询结果文件,一般通过commit时间就可以快速定位到指定的提交。
- 找到丢失的commit之后,直接用
git stash apply xxxxx就行。
获取个人一段时间内的commit
切到master分支,用这个命令筛选7月以来自己本项目的commit输出到txt,准备述职有可能用得上:
git log --author="李大力" --oneline --pretty=format:"%h - %an, %ad : %s" --date=format-local:'%Y-%m-%d %H:%M:%S' --after=2023-06-30 --no-merges > 1.txt
填名字的地方也可以用邮箱代替