Git 入门实践详解(末尾附git常用命令大全)

118 阅读6分钟

开篇必读:

如果你只是想来看看git命令的使用,又或者只是想快速解决你目前项目中遇到的问题,更或者你就是为了某个针对性的功能实现而来,我建议你跳过前面的部分直接去寻找你所需要的即可。

又恰巧你还不是那么匆忙,又有那么一点兴趣,我觉得你从头开始阅读,可能会显得更加从容不迫,亦会更加有趣。

好了朋友,你自己决定吧!

Git简介

场景复现:
如果你正在完成一份很重要的文档,在反复不停地修改中你发现有些内容目前冗余想删掉,又害怕以后有用;有些内容想要修改,但又不能直接替换还是害怕之后会用到...然后你很大可能会创建副本,从两个到三个···一直到N个。然后一周过后发现,自己也不记得每一个副本内容是什么了?
再或者,你把这份文件发送给了同事,之后你又进行了修改,然后你是不是得回想你再哪些地方做了修改告知对方?再或者你同事正好也需要编辑这份文档,又该怎么办呢?

是的,Git可以帮助你处理这些烦恼,并且这仅仅是Git最最最基础的功能了。Git可以说是目前世界上最先进的分布式版本控制系统(没有之一)。

Git的诞生

我总是对优秀系统的诞生故事乐此不疲的热爱着。

1991年Linus创建了开源的Linux,发展至今已经成为当今最大的服务器系统软件。即便是如此超神的Linus,也无法打破"一个人的能力总是有限的"这样的定论,在Linux的壮大过程中,有来自全世界各地的志愿者参与。

2002年以前(2002年是Linux十周年),世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过纯天然的手工方式合并代码!经过了长达十年的积累,代码库的庞大让Linus很难在进行手工维护了,与此同时社区的兄弟们也对此怨声载道。

也许你会质疑,为什么不把Linux代码放到CVS、SVN这样的本控制系统里面来管理呢?原因很简单,Linus不同意。不同意的原因也很简单,因为这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。至于有没有比CVS、SVN好用那么一丢丢(这是书上说的,具体好用多少我不知道【强颜欢笑.jpg】)的版本控制系统呢?答案肯定是有的,直白的讲是要花钱的,这当然与Linux的开源精神不符啦,所以坚决不用!

这个时候BitKeeper的东家BitMover公司出于人道主义,授权Linux社区免费使用他们的版本控制系统。然而故事才刚刚开始。

不喜欢“折腾”的程序员一定不是好程序员,2005年,牛人聚集的Linux社区就有这么一位“梁山好汉”,他就是开发Samba的Andrew!干起了试图破解Bitkeeper的协议的“壮举”,不料被BitMover公司发现(监控工作不是盖的,确实厉害)!结果就是愤怒的BitMover要收回Linux社区的免费使用权。

牛人的世界总是朴实无华,Linus默默的花了两周时间自己用C写了一个分布式版本控制系统,Git诞生!更牛逼的是一个月之内,Linux系统的源代码已经由Git管理了!什么是大神?什么是牛B?什么是朴实无华?你品,你细品!

2008年,Github上线,开源、免费提供Git存储,不火没天理。

好了,故事结束!历史的偶然告诉我们,不想受到威胁,自己就得绝对的牛X!

安装Git

长话短说:Git现在可以运行的平台有:Linux、Unix、Mac和Windows!

安装步骤:第一步、第二步、第三步······结束。

你以为我会说如何安装?你想多了,这么简单的事情我说出来不显得我很无聊吗?(因为懒【苦笑.png】),朋友辛苦移步git安装官网,介绍的很详细的。

Git常用命令

  1. git status -s -- 查看当前的状态

  2. git add xxx --- 添加目录到待提交区

  3. git commit -m "提交注释内容"

  4. git branch -- 查看当前分支

  5. git branch -a -- 查看远程分支

  6. git pull -- 更新代码到本地

  7. git push --提交代码到当前分支

  8. git branch -d "分支名" -- 删除当前分支

  9. 推送到远程分支 git push origin :xxx

  10. 创建新分支 -- git checkout -b dev

  11. develop 合并到master–> git merge develop

  12. git checkout -b dev origin/dev -- 切换当前分支 dev(本地名称) 、origin/dev(远程名称)

  13. git checkout master -- 切换当前已经存在的分支

  14. git push origin --delete 分支名称 -- 删除远程分支

  15. git branch -d 本地分支 -- 删除本地分支

  16. git log -- 查看提交日志

  17. cat .gitignore -- 查看忽略文件

  18. 查看某个提交的所有日志 qgit , 退出查看 Q

  19. 查看日志图形界面

  20. git log --graph --decorate --oneline --all

  21. git log --graph

  22. git log --graph --decorate --oneline --author='yuanbinbin'

  23. 强制推送 git push -f origin master

  24. 回滚到某个版 git reset--hard fgb8934g35f5sdv5sd

  25. 打分支

  • git tag -- 显示当前所有的分支

  • git tag v0.1.2-light -- 打轻量分支

  • git tag -a v0.1.2 -m "0.1.2版本" -- 打附注标签

  • // 为某个commit打tagex

  • git tag -a zygcago -m "zygcago" 13426b0bcc592d71039b71921bdf1bb7ce836619

  • git push origin --delete v0.1.2 (新版本>1.7)

  • git push origin :refs/tags/v0.1.2 (<1.7老版本)

  • git show v0.1.2 -- 查看标签信息

  • git tag -d v.0.1.2 -- 删除分支

  • git push origin v1.0 -- 推送当前分支

  • git push origin --tags --一次性推送所有分支

  • git branch --set-upstream-to=origin/远程分支 本地分支

  • -- 把本地公支跟远程权支相关联

  • git push origin --delete branchName -- 远程删除branch

  1. 合并分支
  • 首先切换到master分支上
  • git checkout master
  • git pull origin master -- 更新master分支
  • git merge dev -- 把dev合并到master
  • git status --- 查看合并状态
  1. 切换分支时保存
  • git stash
  • git stash pop
  1. 修改远程分支名称
  • git branch -m 旧分支名 新分支名
  • git push --delete origin 旧分支名
  • 将新分支名推上去 git push origin 新分支名
  • 将新本地分支和远程相连 git branch --set-upsteam-to origin/新分支名