1.百字前言:
git版本控制工具是并发式工作的终极解决方案,与之相似的svn常被用于局域网级别的团队协作,而git则主要用于因特网级别的团队协作,因而git的使用成为了最基本、每个程序员都应该掌握的技能。
git的基本原理并不复杂,作为版本控制工具,顾名思义,是将我们的文件改动按照版本保存在本地代码仓库和服务器端。以程序为例,代码的流动如下:
image2.最常见的git命令:
git add:严格的来讲stage area是一个形象的概念,git add只是把服从git版本控制的文件路径加入到了git负责的列表中,在下次操作时,这个列表中提及的所有文件都会被git处理。
git commit: 把程序(文件目录)下的所有git负责的列表中的文件的新版本(如果存在的话)改动存储到本地代码仓库(local repository)
git push: 把本地代码仓库的改动上传到服务器端
git pull: 把服务器端的最新代码拉取到本地代码仓库
git checkout:用本地代码仓库的最新代码覆盖本地的当前代码
git merge: 合并本地仓库的最新代码,和本地仓库的已有代码
3.从入门到拥有自己的github开源项目
step1 下载并安装git版本控制工具
或直接使用一些继承开发环境(Pycharm为例)
imagestep2 在github上创建自己的项目
picture 1
imagepicture 2
imagestep3 在github上得到仓库地址
image
这里http 和 ssh 是两种通信连接方式, 通常对于github而言,http要比ssh的稳定性高很多,建议使用,得到图片中的远端仓库(remote repository)地址
step4 连接本地和远端
method 1 command line
imageecho "# repoName" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/CallBridge/repoName.git
git push -u origin master
method 2 IDE(Pycharm for example)
image image
step 5 日常维护
command
git add path/file
git commit -m 'this version modified...'
git push [branchname]
或者:
image image4.git 常见中级和概念
base: 基点,每个基点代表一个version
imagebranch:上图的一条线段,不同的线段代表不同的branch
常常我们的实际开发中,不同的程序员或者小组负责了不同部分的开发,在某个功能或者模块完全实现之前,我们通常都不需要和其他程序员/小组融合代码,这个时候我们应该建立自己的branch。
git branch branchName
这个branch的第一个基点是:
image
内容和我们的当前branch相同
我们push的时候也可以选择push到远端的哪一个branch
慎之又慎:git rebase命令
git rebase有多种情况会被用到
1.我们这个项目有很多程序员来开发,可能我刚在自己的branch上完成我的功能,其他小组的进度都已经不知道快到哪里去了(不是仅仅局部、少量的变化,而是在这条分支上,基点已经产生了数量可观的增加),这个时候我得先commit自己的代码,再rebase到最新的基点,解决掉冲突,再checkout自己的代码,解决掉冲突,最后commit,提交
2.小组成员进行了一次错误的git pull操作,代码需要还原到某个版本
一位精通git的前辈曾这样说:只要没有rebase,push的时候小心点,看清自己提交到哪个分支了,git是很难出错的
但rebase错了,一些改动可能就找不回来了,所以没有把握一定不要rebase,一定不要rebase,一定不要rebase
Appendix:
网友评论