开篇必读:
如果你只是想来看看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常用命令:
- git status -s -- 查看当前的状态
- git add xxx --- 添加目录到待提交区
- git commit -m "提交注释内容"
- git branch -- 查看当前分支
- git branch -a -- 查看远程分支
- git pull -- 更新代码到本地
- git push --提交代码到当前分支
- git branch -d "分支名" -- 删除当前分支
- 推送到远程分支 git push origin :xxx
- 创建新分支 -- git checkout -b dev
- develop 合并到master–> git merge develop
- git checkout -b dev origin/dev -- 切换当前分支 dev(本地名称) 、origin/dev(远程名称)
- git checkout master -- 切换当前已经存在的分支
- git push origin --delete 分支名称 -- 删除远程分支
- git branch -d 本地分支 -- 删除本地分支
- git log -- 查看提交日志
- cat .gitignore -- 查看忽略文件
- 查看某个提交的所有日志 qgit , 退出查看 Q
- 查看日志图形界面
-
git log --graph --decorate --oneline --all git log --graph git log --graph --decorate --oneline --author='yuanbinbin'
-
- 强制推送 git push -f origin master
- 回滚到某个版 git reset--hard fgb8934g35f5sdv5sd
- 打分支
-
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
-
- 合并分支
-
首先切换到master分支上 git checkout master git pull origin master -- 更新master分支 git merge dev -- 把dev合并到master git status --- 查看合并状态
-
- 切换分支时保存
-
git stash git stash pop
-
- 修改远程分支名称
-
git branch -m 旧分支名 新分支名 git push --delete origin 旧分支名 将新分支名推上去 git push origin 新分支名 将新本地分支和远程相连 git branch --set-upsteam-to origin/新分支名
-