git 简单命令
git流程:本地工作区(本地文件) -> git add 缓存区 -> git commit 本地仓库 -> git push 远程仓库
git init (git初始化本地仓库,执行后会生成.git 文件,如果你没有可能被隐藏了)
git remote -v (查看本地仓库关联远程厂库地址)
git remote add origin 远程仓库地址 (本地厂库关联远程厂库)
git remote rm 远程仓库名 (删除本地厂库和远程厂库的关联)
git checkout -- server/app.js (撤销某个文件的修改, server/app.js 为要撤销修改的文件地址)
git checkout 分支名称 (切换本地分支)
git checkout -b 分支名称 (检出分支并切换到检出分支上,拉去分支并切换到拉去的新的分支上)(等同于git branch dev // 拉去分支 git checkout dev // 切换分支)
git checkout -b mq_bug_20180524 origin/mq_bug_20180524 (从远程仓库签出分支)
git branch dev (创建名为dev的分支,创建分支时需要是最新的环境,创建分支但依然停留在当前分支)
git checkout dev (切换本地分支到dev)
git branch -d dev (删除本地分支)
git branch (不带参数:列出本地已经存在的分支,并且在当前分支的前面用"*"标记)
git branch -r (查看远程版本库分支列表)
git branch -a(查看所有分支列表,包括本地和远程)
git branch -vv (可以查看本地分支对应的远程分支)
git branch -m oldName newName (给分支重命名)
git push origin --delete branchName (删除远程分支
,该指令也会删除追踪分支)
git status (查看本地仓库的状态)
git add -A 或 git add . (提交本地仓库工作区所有文件到缓存区)
git reset HEAD (撤销缓存区文件到工作区:用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变 )
git commit -m '详细描写提交内容' (提交本地缓存区文件到本地仓库中)
git reset HEAD~1 (撤消上次commit提交内容回到工作区)
git reset commitId (撤销某次提交,某次提交之后的内容回到工作区)
git reflog (⬆️ reset会修改HEAD的指向,不会有新的历史记录,一旦reset HEAD~xxx,HEAD就会指向历史commit,之后的commit其实还在,但看不到了,如果在此基础上有新的提交,就真的丢弃了HEAD之后的提交, git reflog 可以看到reset之前的提交commit log,如果要恢复,只需要再次git reset 4665343c就可以了)
git push origin 远程仓库名称 (提交本地仓库文件到远程仓库)
git fetch (命令用于从远程获取代码库,因为git仓库有可以有很多分支,git pull命令只是拉去远程当前分支并合并,如果别人新建了一个分支你本地不显示需要git fetch拉去一下才可以看到)
git tag 标签名 (当前分支最近一次提交打一个标签,本地分支)
git tag -a v1.0(-a 选项意为"创建一个带注解的标签"。 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。 我推荐一直创建带注解的标签,当你执行 git tag -a 命令时,Git 会打开你的编辑器,让你写一句标签注解,就像你给提交写注解一样。)
git tag -a <tagname> -m "runoob.com标签" (-a 选项意为"创建一个带注解的标签",-m 为注释内容)
git tag -d v1.0.0 (删除本地tag)
git push origin --delete v1.0.4(删除远程tag)
git push --tags (推送tag到远端)
git reset a4e215234aa4927c85693dca7b68e9976948a35e xxx // 只回退某个指定文件到指定版本
git reset --hard // 撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交(例如:merge了某个分支发现有冲突,不想提交可执行改操作)
git reset --hard commitId(通过git log可查看提交的commitId) // 回退到指定版本且删除缓存区、工作区的文件,reset方法是重置HEAD只想 commentId版本
git reset --hard commitId 后续提交操作 // 重置HEAD到commitId之后,git push 无法推送到远端,因为本地分支和远程分支不一样会提示你git pull,可以使用 git push -f master 表示将目前自己本机的代码库推送到远端,并覆盖 *谨慎使用*
git push -f master (当使用reset之后本地分支版本落后于远程分支,git会提示你pull,可以使用 git push -f 强制覆盖,谨慎使用)
git revert HEAD // 撤销倒数第一次提交,撤销也会作为一次提交
git revert commitID (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交
git diff origin/master (对比本地分支和远程分支的区别)
git log (查看提交日期)
git stash (能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。git stash 详解: https://blog.csdn.net/stone_yw/article/details/80795669)
git stash 应用场景:
1 当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容。
2 由于疏忽,本应该在dev分支开发的内容,却在master上进行了开发,需要重新切回到dev分支上进行开发,可以用git stash将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可。
总的来说,git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。
版权声明:本文为CSDN博主「淹不死的水」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/stone_yw/article/details/80795669
根据某个提交记录检出新的分支
通过checkout 跟上commitId 即可创建制定commit之前的本地分支
git checkout commitId -b 本地新branchName
上传到远程服务器
依然通过push 跟上你希望的远程新分支名字即可
git push origin HEAD:远程新branchName
根据某个提交记录检出新的分支
(1) git revert 和 git reset区别
git revert 撤销某次操作,此次操作之前和之后的 commit 和 history 都会保留,并且把这次撤销作为一次最新的提交。git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。
git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区。除了默认的 mixed 模式,还有 soft 和 hard 模式。
reset三种模式区别和使用场景
区别:
-
--hard:重置位置的同时,直接将 working Tree工作目录、 index 暂存区及 repository 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区。
-
--soft:重置位置的同时,保留working Tree工作目录和index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files)。所以效果看起来就是工作目录的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。
-
--mixed(默认):重置位置的同时,只保留Working Tree工作目录的內容,但会将 Index暂存区 和 Repository 中的內容更改和reset目标节点一致,因此原节点和Reset节点之间的【差异变更集】会放入Working Tree工作目录中。所以效果看起来就是原节点和Reset节点之间的所有差异都会放到工作目录中。
git merge 分支名 (merge的分支提交会记录会在最后,会有一个merge的提交记录,包含所有merge改变的文件,都在回滚方便)
git rebase 分支名(变基的分支的提交记录,会插到当时创建分支时的时候,不会有一个统一的合并记录)
有时间整理一下git命令的使用理解