$ git init               当前目录建立GIT可以管理的仓库(版本库),生成一个.git的隐藏文件夹

$ git add <filename>        将工作区的文件修改添加到版本库的暂存区

$ git commit -m "tips"          将暂存区的所有修改添加到分支上,tips是本次提交的备注,方便查看

$ git status             本地工作区与分支的代码比较,工作区文件与版本库比较的状态

(modified 文件被修改 ; deleted 工作区文件被删除 ; Untracked 文件未跟踪,版本库没有 ; new file 文件add到暂存区,还未添加到分支  )

$ git diff <filename>          比较工作区和版本库的文件,文件内容具体哪些不同

$ git log              版本库状态信息,git commit的记录信息,便于跟踪提交每次都有哪些修改

$ git reset --hard <版本号>       版本库回退到某个版本的状态

$ git reset --hard HEAD^       回退到当前版本的上一个版本,撤销上次的提交,HEAD指向当前版本的指针

$ git reflog             记录你的每一次git命令,便于跟踪

$ git checkout --<filename>      工作区的文件回退到最近一次add或commit时的状态,删除掉的文件也可还原回来

$ git reset HEAD <filename>     撤销暂存区的文件的修改,然后再checkout撤销工作区的修改

$ git rm <filename>         将删除消息提交到暂存区,commit后版本库的文件会被删除

$ git checkout -b <name>      创建新的分支name,-b会将当前工作分支切换到dev,相当于下面两条命令

$ git branch <name>         创建新的分支name

$ git checkout <name>        切换当前工作分支为name

$ git branch             查看所有分支,前面带*号,表明是当前所在分支

$ git merge <name>          合并name分支到当前分支

$ git branch -d <name>        删除分支name

$ git log --graph           查看分支合并图

$ git stash             保存当前分支工作现场

$ git stash pop           恢复保存的工作现场 

$ git branch -D <name>       强行删除分支(丢弃分支的所有提交) 

$ git remote -v           查看远程库信息

$ git pull              抓取远程的新的提交(推送前最好先pull一下,免得覆盖别人的代码)

$ git push origin branch-name    从本地推送分支  

$ git checkout -b branch-name origin/branch-name在本地创建远程分支对应的分支

$ git brach --set-upstream branch-name origin/branch-name建立本地分支和远程分支关联

$ git tag <name>          在当前分支打一个标签

$ git tag              查看所有标签

$ git tag -a <tagname> -m "balabala"    指定标签信息

$ git tag -s <tagname> -m "balabala"     用PGP签名标签

$ git tag -d <tagname>        删除一个本地的标签

$ git push origin <tagname>     推送一个本地标签到远程分支

$ git push origin --tags        推送全部未推送过的本地标签

$ git push origin : refs/tags/<tagname>删除一个远程标签

<<<<<<<<<<<<<<<<<OVER>>>>>>>>>>>>>>>>>>>>>>>>>        

  HEAD指针严格来说不是指向提交的,而是指向master主分支的,每一次提交主分支就多一个节点,master指向最新提交,HEAD指向master,就能确定当前分支为主分支和当前分支的最新提交节点。

  当我们创建分支dev时,GIT创建一个dev的指针,指向master相同的提交,再把HEAD指向dev,表示当前工作节点在dev分支上。当我们在dev分支提交时,dev指向新的提交(红色节点),master指针不变,这样就确保了两个分支能同时存在,HEAD指向工作区当前在哪个分支上工作。

  当我们要合并两个分支时,就需要将两个分支的提交内容合并,当主分支没有新的提交时,只需要将master分支指向dev指向的提交节点,即可完成合并,但当两个分支都有各自不同的提交时,GIT小心的合并各自提交的修改,遇到冲突(即两个分支提交都对同一个文件修改)时,需要人工去解决冲突(人工合并文件)。

最新文章

  1. memcache占用CPU过高的解决办法
  2. 墙裂推荐4款js网页烟花特效
  3. java中对象产生初始化过程
  4. java中的foreach循环
  5. spinner与arrays.xml的使用
  6. MySQL 命令行导出、导入Select 查询结果
  7. 如何去除内联元素(inline-block元素)之间的间距(转载)
  8. 顺丰快递单号查询api对接(全代码)
  9. 杀死进程 kill -9
  10. CF #404 (Div. 2) B. Anton and Classes (贪心)
  11. 消息中间件--ActiveMQ&amp;JMS消息服务
  12. Java四大名著下载大全(中文+英文)
  13. 自己用的Xshell配色方案
  14. 【Android基础】利用Intent在Activity之间传递数据
  15. PHP源码阅读(一):str_split函数
  16. 搭建SpringBoot+dubbo+zookeeper+maven框架(三)
  17. ZOJ 1940 Dungeon Master【三维BFS】
  18. 为DBNavigator的按钮加中文
  19. html特殊字体显示
  20. [日常工作]GS使用安装盘修改密码后的处理

热门文章

  1. 压缩/批量压缩/合并js文件
  2. SOA架构设计
  3. 安卓开发:Android Studio自动import
  4. 修改环境变量后,导致一些常用命令失效,如ll,ls,vi不能用
  5. 批处理设置IP
  6. Android9 http网络请求的问题
  7. 【C语言】函数调用的简单例子
  8. QBImagePickerController 不可选择照片流中照片
  9. rapidxml编写xml文件(一)
  10. 04-Docker-Container管理操作