首页 > 应用开发 > IT综合 > 一看就会系列:几分钟入门从git到github?
开局先来一个故事吧,故事看完如果不想看枯燥无味的指令,没关系我已经把这篇文章的内容录制成了一个视频,点击文末 阅读原文就可以观看。或者说你已经熟练掌握git的使用了,可以直接跳到 总结部分( 一个好玩的游戏)去检验下你掌握的熟练程度。
很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢? 事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码! 你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。 不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。 安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。 Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的: Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。 Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。 历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。
本文使用的是win7平台。 Git可以在Linux、Unix、Mac和Windows这几大平台上安装了,可以根据自己的操作系统去官网下载。
介绍命令之前先来张图吧,所有的命令都是围绕张图的
Administrator@XCRBHXD05IEZEVS MINGW64 /d
$ mkdir gitstudy
Administrator@XCRBHXD05IEZEVS MINGW64 /d
$ cd gitstudy/
Administrator@XCRBHXD05IEZEVS MINGW64 /d/gitstudy
$ git init
Initialized empty Git repository
in
D:/gitstudy/.git/
执行完这个命令我们可以看到文件下面会多一个.git的文件夹,以后在这个文件夹下( 工作区)的都可以被git管理了。
$ echo > demo.txt
此时的demo.txt文件是带个蓝色?的,当我们执行git add - demo.txt后
那如果这个目录下面有几百个文件都要加到 暂存区怎么办? 此时可以使用git add . 这个命令可以把当前目录下所有文件加入 暂存区。
$ git status
$ git
commit -m
"第一次提交"
[
master (root-
commit)
22f0a2b] 第一次提交
1
file
changed,
1 insertion(+)
create
mode
100644 demo.txt
提交后demo.txt颜色是不是变绿了。
git commit -am"第三次提交"
如果新增了文件,必须使用分开的命令,不能用合并命令。
git
add .
git commit -m
'update'
$ git checkout -- demo.txt
git checkout .
git reset HEAD demo.txt
git reset HEAD
在使用本命令后,本地的修改并不会消失,而是回到了上面 未使用git add 缓存代码,继续使用用git checkout -- filename,就可以放弃本地修改。
git reset --hard HEAD^
git reset HEAD^
git reset --soft HEAD^
git revert e241441d8a85b2d89
git push -f
git rm demo.txt
git rm -f 4.txt
用命令git remote add origin git@
server-name:path/repo-name.git;关联远程仓库
关联之前肯定要在远程创建仓库
git remote add origin git@github.com:workit1/studygit.git
关联后,使用命令git push -u origin master第一次推送master分支的所有内容。
git push -u origin master
以后,每次本地提交后可以使用命令git push origin master推送最新修改到远程仓库。
git clone https://github.com/workit1/gitstudy.git
Administrator@XCRBHXD05IEZEVS MINGW64 /d/gitstudy (master)
$ git checkout -b feature_a
Switched to a
new branch
'feature_a'
基于master分支创建了feature_a分支并且切换到了feature_a分支。
git checkout master
git merge master
当有冲突的时候这里会个正在合并的状态
git merge --abort
git branch -d feature_a
实际项目中如果我们需要开发一个功能完整的流程是什么样的呢? 多数公司模式应该下面这样的流程吧。 1.先基于主干分支 拉出一个功能分支(feature_xx)进行开发。 2.开发完成后测试基于这个功能分支进行测试。 3.测试完成后,开发把功能分支合并到主干分支。 合并代码操作如下:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69923331/viewspace-2700529/ ,如需转载,请注明出处,否则将追究法律责任。