作者持续关注 WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(WPS二次开发QQ群:250325397),摸鱼吹牛嗨起来!
目录
一、Git操作命令
1. git 版本库操作
- git init: 初始化仓库
- git clone https://github.com/xx/xx.git : 克隆代码
- git remote add origin https://github.com/xx/xx.git 设置远程git路径
- git remote set-url origin <url> : 修改仓库地址
- git remote -v : 查看远程仓库地址
- git push -u origin master(分支) : 上传代码到远程仓库
- git push : 提交所有
- git fetch : 拉取远程仓库,拉取远程仓库所有分支信息
- git fetch origin <分支名>: 拉取远程仓库特定分支信息
- git pull : 拉取所有
暂存区
- git add . :添加全部文件,将全部文件添加到暂存区, 相当于GUI的add操作
- git add -u: 更新提交记录(本地)
- git reset HEAD test.txt:暂存区撤销,撤销添加到暂存区的文件
- git add file.txt file2.text: 添加一个和多个文件,用空格分开文件名
- git commit - m “初始化提交” : 提交命令
- git commit --amend : 修改提交说明
- git cherry-pick <commitId1><commitID2>将指定的提交<commitId> 合并到当前分支, 会产生一个新的的提交记录 git cherry-pick 教程 - 阮一峰的网络日志 pick教程
- git cherry-pick <branchName>: 合并分支的最新(最近一次)提交
- git diff HEAD -- git01.txt :与版本库内容进行比较“----”:表示变动前的文件,“+++”:变动后的文件, 变动的位置用两个@作为起首和结束
- git status : 查看状态,可以查看所有文件变化
- git -version: 查看git版本,看git是否安装成功
2.git 配置
- git config --global user.name 'xx' : 配置一个全局的用户(xx)
- git config --global --repleace-all user.name “xx”: 替换已经设置了用户名
- git config --global user.email 'xxx' : 配置一个全局的邮箱(xxx)
- git config --global --list: 查看所有的配置,可以看到的用户名,邮箱配置
- git config --add --local user.name “xx” :设置当前仓库的用户名
- git config --add --local user.email “xxx” : 设置当前仓库的邮箱
- git config --local --list : 查看当前仓库的用户名和邮箱
- git rm --cached test.txt: 撤销误提交的test.txt文件
- git rm file.txt : 删除文件,删除file.txt文件
- git mv file1.txt file2.txt : 重命名,将file1.txt 重命名为file2.txt
- git mv file.txt home/file.txt :将文件移动到文件夹home下
git 日志操作
- git log: 查看提交记录,查看所有人的提交记录
- git log --oneline :查看简写的log日志
- git log --author=”用户名’ : 查看单个人提交记录, 没有任何显示,这说明没有这个人或提交记录//文件有变化的时候,如何查看文件的前后变化
- git log --pertty=oneline home/home.html : 查看文件变化的id(commit id)
- git log --graph --pertty=oneline : 查看分支合并图
- git log --oneline --graph : 查看版本路线
- git log -p home/demo.html : 查看文件具体修改的内容git show 提交id(commit id): 显示谁提交的,修改了哪些内容
3.git 还原操作
//操作失误的情况下,如何一键还原git diff : 找到不同git checkout -- home/home.html : 将文件回到上一次状态,(还原到上一次提交的状态),未实现文件追踪的时候git checkout 版本号 -- demo.html : 将指定文件回退到指定版本
git reset
- git reset HEAD home/home.html : 撤销追踪,已经实现了文件追踪,想回到上次提交的状态//回到上一版本,或者指定
- git reset --hard HEAD^ : 一个尖括号表示回到上一个版本,HEAD^^:回退到上上版本,有几个尖括号代表回退几个版
- git reset --hard 版本id :回退到指定版本
- git reset --hard: 重置head 和branch的时候,重置工作区 + 暂存区 会覆盖本地所有修改
- git reset --soft: 重置HEAD和Branch的时候,保留工作区 + 暂存区, 新修改添加到暂存区
- git reset --mixed: 保留工作区 + 清空暂存区, 所有修改都放到工作区
git revert
git - 在恢复后的命令栏中,git显示( master|REVERTING )你在revert中,可以执行以下任一操作:
- git revert --continue / --quit / --abort--continue 使用.git/sequencer中的信息继续进行中的操作。可用于在解决失败的cherry pick或revert中的冲突后继续。--quit 忽略正在进行的当前操作,可用于在失败的cherry pick或revert后,清除sequencer状态。--abort 取消操作并返回序列前状态。
git bash :进入某个目录:$ cd /f/gitlib/gitdemo 表示进入:F:\gitlib\gitdemo
git restore
- git restore 文件名: 撤销某个文件修改
- git resore app/test.java //撤销某个文件修改
//标签管理git tag v1.0 : 创建标签v1.0 ,默认增加到最新的一次commit上面git tag : 查看taggit tag v0.5 commitID : 给指定的提交增加tag v0.5git tag -d tagName : 删除标签
4. 分支操作
- git branch branchName : 创建分支git branch : 查看分支,*代表当前分支在哪个分支, 顺序安装首字母的顺序排序,并不是创建时间
- git branch --all/-a: 查看所有分支,本地分支和远程分支,remotes/origin/ xxx 为远程分支
- git reflog show --date=iso <branchName> : 查看分支创建时间
- git reflog --date=local --all :查看全部分支创建时间
- git push origin branch_name: 推送本地分支到远程(远程没有分支,则创建分支)
- git push --set-upstream origin master :
- git pull origin master : 拉取远程分支代码(新拉取、更新)
- git pull :拉取所有远程分支
- git fetch origin master: 拉取远程分支Head新,这样本地就可以找到分支信息
- git checkout -b local_branch origin/remote_branch: 拉取远程指定分支并在本地创建分支,创建并关联远程的分支
- git chekcout branchName : 切换到具体的分支
- git branch -d branchName : 删除分支,不能删除当前分支, 如果当前分支有提交的代码(commit)的情况, 不能删除
- git branch -D branchName : 强制删除本地分支
- git push origin --delete <branch_name> :删除远程分支
- git push origin : remote_branch: 删除远程分支(本地分支还在保留)
- git checkout -b branchName : 创建分支并切换到创建的分支: 创建+切换//合并分支: 先要切换到要合并的分支,然后执行合并命令
- git branch -m 旧名字 新名字 : 本地分支更名
- git branch -m 旧名字 新名字
- git diff branch1 branch2: 比较分支差异
- git merge branchName: 将branchName分支代码合并到当前分支//分支冲突
//方法1
- git merge --abort :只保留当前分支修改,忽略其它分支合并的内容(冲突内容)//方法2, 手动修改, + git add . + git commit + INSERT编辑中输入变更的说明,wq退出,然后,git commit -m git branch -av : 查看当前分支与远程分支的关系 git rebase: 合并分支另一种方法,Rebase 实际上就是取出一系列提交记录,“复制”它们,然后在另一个地方逐个的放下去。Rebase的优势是可以创造更线性的提交历史比如在bugFix分支上操作:git rebase dev : 相当于将bugFix的修改合并到dev分支上
如果想看 HEAD 指向,可以通过 cat .git/HEAD 查看, 如果 HEAD 指向的是一个引用,还可以用 git symbolic-ref HEAD 查看它的指向。但是该程序不支持这两个命令)
github扩展google访问助手,访问google应用商店Octotree插件
Enhanced gitHub 插件可以查看单个文件的大小,可以直接下载单个文件
gitZip for github插件可以直接下载某个文件夹: 双击出现下载图标
一些恢复操作(能救命的)git stash clear的恢复和找回第一步:
git log --graph --oneline --decorate $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )
第二步:git stash apply commitId -------找On前面的,如上图标注的
参考:git stash clear的恢复和找回_恢复 stash clear-CSDN博客
git忽略已经添加版本控制的文件今天使用git做maven项目的版本控制,刚开始搭建项目后,把所有文件全部提交了。已经提交的文件,gitignore中后配置也无效了。所以使用以下命令来操作,操作后要提交哦。1.执行 git rm -r -n --cached "target/" 展示要删除的文件预览列表2.执行 git rm -r --cached "target/" 删除文件的命令
二、实践应用场景
查看分支创建者
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n |grep "关键字"
根据关键字搜索关联分支----使用"grep"进行过滤
eg: 查看远程仓库 包含 “关键字”字符串的分支信息