GIT命令集合
正文
一、配置和日志
配置信息 git config --list //查看当前配置信息 git config -e [--global] //编辑当前(全局)配置信息 git config --global user.name "xxx" //设置全局的用户名xxx git config --global user.email x@y.com //设置全局的邮箱为x@y.com git clone [url] //从对应的url直接拉取对应的git代码 日志查看 git log //查看日志 git log --oneline //--pretty=oneline --abbrev-commit 合用的简写oneline会将每个提交放在一行显示 git log -p //按补丁格式显示每个提交引入的差异。diff形式 git log -n //查看n条提交记录 git log --after(--before) '2021-05-23' //查看时间之后(之前)的提交日志 git log --stat //输出每次提交文件增删改的统计数据。 git show (-n) //查看提交的(后n条)具体diff记录,默认只会输出最头上一条。比git log -p要全一些 git show (hash) //查看指定的记录的diff。可结合git log --oneline中的hash值来查看 git status [-s] //查看在你上次提交之后是否有对文件进行再次修改(-s简短输出)
二、暂存区与提交
添加到暂存区 git add [file1] [file2] ... //添加指定的file1,file2文件到暂存区 git add [dir] //添加指定目录到暂存区,包括子目录 git add . //添加当前目录下的所有文件到暂存区,提交新的(new)和被修改(modified),不包括被删除(deleted) git add -u //提交被修改(modified)和被删除(deleted)文件,不包括新文件(new) git add -A //提交所有变化是 . 和 -u的和 git add -i . //交互式拣选操作.([r]revert)输入序号n,删除添加到索引库的文件.([u]pdate)... 将暂存区内容添加到本地仓库 git commit -m [message] //提交暂存区到本地仓库中,提交信息为message git commit [f1] [f2]... -m [message] //提交暂存区的指定文件到仓库区 git commit --amend //追加提交,它可以在不增加一个新的commit-id的情况下将新修改的代码追加到前一次的commit-id中 提交到远程仓库 git push <远程主机名> <本地分支名>:<远程分支名> //从将本地的分支版本上传到远程并合并 git push origin [master:]master //将本地的 master 分支推送到 origin 主机的 master 分支 git push --force[-f] origin master //如果本地版本与远程版本有差异,但又要强制推送可以使用 --force ,或者是-f。谨慎使用 git push --delete[-d] origin master //删除远程分支
删除 git rm [-f] [fileName] //将fileName文件从暂存区和工作区中删除。-f强制删除 git rm --cached [fileName] //将fileName文件从暂存区域移除,但仍然希望保留在当前工作目录中 git rm -r [fileName | dirName] //递归删除文件或文件夹
三、分支操作
git branch [-r] [-a] //查看分支,没有参数查看本地。-r查看远程分支,-a查看远程和本地 git branch [-d] [-D] dev //-d删除dev分支。如果在分支中有一些未merge的提交,那么会删除分支失败,可以使用-D强制删除 git push origin --delete [branchname] //删除远程分支branchname git remote update origin --prune //更新下本地的git分支保持和远程分支一致 git merge [branch1] //将分支branch1合并大当前分支 git merge --squash [branch1] //从当前分支与branch1分支的共同结点开始,将branch1分支的所有commit压缩,合并成一个新的改动需要创建一个新的commit,让分支更加整洁和清晰。 git rebase [branch1] //当前分支以branch1切的分支。当前branch1在切分支时,之后的提交也作为当前分支的基准.例如:master分支切分出了test1分支,test1开发完成之后准备重新rebase master,此时发现有第三者在master分支上(在test1开发的时间内)提交有a,b,c三个commit,那么rebase会将master上a,b,c三次提交也作为当前test1的切分基准. git rebase -i HEAD~3 //将当前分支的最近3次commit进行压缩合并。pick:保留该commit(缩写:p);reword:保留该commit,但我需要修改该commit的注释(缩写:r);edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e);squash:将该commit和前一个commit合并(缩写:s);fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f);exec:执行shell命令(缩写:x);drop:我要丢弃该commit(缩写:d) git rebase -i [commit id] //合并从当前head到指定commit id的提交
四、其他高级
版本回退 git reset [--soft|--mixed|--hard] [HEAD] //命令用于回退版本,可以指定退回某一次提交的版本。--mixed 为默认用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变;--soft 回退到某个版本,只回退了commit的信息,不会恢复到index file一级;--hard 彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉; git reset HEAD~2 //回退到两个版本前。在还没有进行提交的时候,如果还想要回到头部,可以结合git reflog,再次git reset到头部的commitID git reset [commit id] //回退到指定版本号(不包括该提交)之前的所有提交 git revert [commit id] //撤销commit-id的操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交 git revert HEAD //撤销上一次提交,并生成一个新的提交 暂存操作 git stash [save "save message"] //暂存当前分支未提交内容并添加备注,方便查找。只有git stash 也可以,但查找时不方便识别。 git stash list //查看stash了哪些存储 git stash show [-p] [stash@{$num}] //默认显示第一个存储做了哪些改动(-p以patch form方式展示)。如果显示第二个存贮:git stash show stash@{1} git stash apply //应用某个存储,但不会把存储列表中删除。默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1} git stash pop //命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,默认为第一个stash@{0}。如果希望删除并使用第二个同上。 git stash drop stash@{$num} //丢弃stash@{$num}存储,从列表中删除这个存储 git stash clear //删除所有缓存的stash git cherry-pick [commit id] //将其他分支指定的提交(commit)应用于当前分支。多个提交为git cherry-pick A B或者是git cherry-pick A..B,A到B的提交都应用
五、GIT实战汇总
1,忽略提交的文件
git update-index --assume-unchanged [filePath] //忽略每次都不想提交的文件 git update-index --no-assume-unchanged [filePath] //取消忽略不提交的文件 git ls-files -v | grep '^h' //查看忽略的文件列表 git ls-files -v | grep '^h' | awk '{print $2}' //提取忽略的文件路径 git ls-files -v | grep '^h' | awk '{print $2}' |xargs git update-index --no-assume-unchanged //取消所有被忽略的方法
2,删除远程仓库的文件或文件夹
git rm -r --cached 文件/文件夹名称 git commit -m "提交说明" git push origin [-f] master //如果push报错可采用-f强制
3,强制覆盖本地仓库
git fetch --all git reset --hard origin/master git pull //或简写为 git fetch --all && git reset --hard origin/master && git pull
4,git修改分支名
git branch -m oldbranch newbranch //oldbranch原分支名;newbranch新分支名称。基于原分支切新分支 git push --delete origin oldbranch //删除远程原分支oldbranch git push origin newbranch //将本地新分支newbranch推送到远程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
2020-05-23 docker简述与安装