ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

git常用命令和复杂知识点详解

git常用命令和复杂知识点详解 假设实验文件为test.txt实验分支为bra01查看工作区状态git status / git status --long //查看工作区整体状态git status -s / git status --short //以缩减格式查看工作区整体状态git status -v / git status --verbose //在工作区整体状态后展示已暂存文件文本变化差异git status -v -v //在工作区整体状态后展示包括未暂存文件文本变化差异git status test.txt //查看test.txt状态查看提交历史git log //默认格式查看提交历史git log --authorName //查看某个作者的提交git log --stat //默认格式附加简略统计信息git log -p / git log -u / git log --patch //默认格式附加文件变化内容信息git log --graph //默认格式附加点线图提供和分支相关信息git log -3 //查看最近的3次提交查看本地仓库head变化历史git reflog //本地仓库head变化后都会记录在reflog命令里左侧显示命令执行后的commit ID,右侧显示让仓库head变化的命令内容当本地仓库从新版本回退到旧版本后再想回退到新版本的话需使用reflog查看新版本的commit ID查看文件改动git diff //查看所有未缓存文件改动git diff --stat //查看所有未缓存文件改动的摘要git diff test.txt //查看指定未缓存文件改动git diff --cached //查看所有已缓存文件改动git diff --cached test.txt //查看指定已缓存文件改动git diff head //查看所有未缓存和已缓存文件改动git diff head^ head //查看上次提交相对于上上次提交的改动删除未跟踪文件git clean -f / git clean -nf //删除untracked文件 / 查看删除的文件名git clean -fd / git clean -nfd //删除untracked文件和目录 / 查看删除的文件名git clean -xfd / git clean -nxfd //删除untracked文件和目录和ignored文件 / 查看删除的文件名添加操作git add test.txt //添加test.txt到暂存区git add . //添加当前目录下所有改动的文件到暂存区撤销添加git reset //撤销添加到暂存区的所有文件git reset test.txt //撤销添加test.txt到暂存区提交操作git commit -m description //将已add文件提交到本地仓库git commit -a -m description //自动add已跟踪文件, 然后提交到本地仓库git commit --amend -m desc //用一次新的提交覆盖上一次提交产生新的commit id//相当于git reset --soft HEAD^;git commit -m desc; 可在git reflog里找到被覆盖的commit id撤销提交git reset --hard head^ //回退到上个版本上面回退版本的reset命令属于git reset[mode] [commit]模式这里介绍下用法mode选项用来控制是否修改工作区和暂存区, 不会动未跟踪文件--soft //只回退版本不修改工作区, 把重置所带来的新的差异放进暂存区。应用情况上次commit的文件或message错误可用git reset --soft head^后再重新提交--hard //重置工作区和暂存区应用情况让工作区暂存区本地仓库都回退到上个版本git reset --hard head^--mixed //默认的模式重置暂存区不修改工作区-------------------------------------------------------------------------------------------------------------------git revert --no-edit head //提交head版本的逆向操作, 自动生成提交描述git reset和git revert的区别git reset是根据指定的模式让工作区和暂存区变为commit id的状态移动head指针到commit idgit revert是创建commit id的逆向提交中和commit id的提交head指针前进文件回滚1.文件a已修改未addgit checkout a2.文件a已修改未commitgit reset test.txtgit checkout a3.文件a已commitgit reset --hard head^远程仓库操作git clone url //克隆远程仓库到本地git remote //查看远程仓库默认origingit remote -v //查看远程仓库及urlgit remote show origin //查看远程主机详细信息git pull //更新并合并,相当于git fetch git merge fetch_head或origin/mastergit pull --rebase //更新并变基,相当于git fetch git rebase fetch_head或origin/master,有unstaged状态文件无法执行此命令git fetch //更新远程仓库副本,不会更新工作区可通过git diff head origin/master查看差异git push //推送本地仓库到远程仓库git push origin bra01 //将本地分支bra01推送到远程仓库git push origin --delete bra01 //删除远程分支bra01临时存储git stash //临时存储工作区和暂存区内容可用于之后在本地分支恢复git stash save des //临时存储并增加描述git stash list //查看临时存储清单git stash pop //将临时存储栈顶应用至本地分支并删除栈顶记录git stash apply stash{2} //应用指定名字的贮藏git stash drop stash{0} //删除指定名字的贮藏git stash clear //清空临时存储清单git stash --all //贮藏包括未跟踪的文件分支理解git分支就是一个副本可分为本地分支和远程分支创建本地分支方法通过1个本地分支 或 1个远程分支 创建创建远程分支方法将当前本地分支push到远程无法通过已有的远程分支直接创建新远程分支分支的要素一从哪个分支创建分支的要素二从哪个commit创建跟踪分支本地分支与远程分支之间的配对关系它决定了pull、push、status等命令默认和谁交互克隆一个仓库时它通常会自动地创建一个跟踪origin/master的master分支分支操作git branch //查看本地分支git branch -r //查看远程分支git branch -a //查看所有分支git branch -vv //查看分支跟踪关系最后一次提交id和msggit branch bra01 //创建分支git checkout bra01 //切换分支git checkout -b bra01 //创建并切换分支git checkout -b bra01 origin/bra01 //从远程分支检出一个本地分支并创建跟踪关系git branch -D bra01 //强制删除分支(删除前需切换到其他分支)git push origin --delete bra01 //删除远程分支git merge bra01 --no-edit //合并分支bra01到当前分支使用自动生成的提交信息git branch -u origin/bra01 / git branch --set-upstream-to bra01 / git push --set-upstream origin bra01 //建立本地分支和远程分支的跟踪关系tip:只有建立了跟踪关系的本地分支可以执行简略的git push和git pullgit rebase bra01 //变基操作合并分叉的提交历史变基目的为了使推送到远程仓库的提交不产生分叉。实际情况是只要本地的提交产生分叉推送后就会使远程仓库的记录也产生分叉。换言之只要消除了本地提交的分叉就可以消除远程仓库的分叉。应用原则(git官方文档原文)总的原则是只对尚未推送或分享给别人的本地修改执行变基操作清理历史从不对已推送至别处的提交执行变基操作。先来看一个没有用到变基的例子master和branch1分支有共同的提交节点c0,branch1进行了一次提交c1,master进行了一次提交c2切换到master分支后执行合并命令git merge branch1 --no-edit执行git log --oneline --graph查看提交日志产生了分叉git push推送到远程仓库。本例远程仓库使用的是gitblit可见远程仓库的日志和本地仓库的日志一样也产生了分叉。变基就是为了消除本次提交产生分叉的情况(对于远程仓库已存在的分叉记录建议不要管了)关于通过gitblit搭建远程仓库可以参考上一篇文章传送门通过gitblit搭建git远程仓库的步骤_gitblit设置远端服务器-CSDN博客再来看同样需求使用变基而不是合并的例子master和分支branch2有相同提交节点c4,master提交了c5,branch2提交了c6,切到master分支后执行git rebase branch2若没有冲突则变基成功通过git log --graph --oneline查看日志如下没有了分叉提交到远程仓库后也没有分叉。
返回列表