Git由来:......node
Git使用的好处:......git
如何使用Git:(以上会显得咱们如下的是很纯纯的干货)程序员
代码库有两个部分: 本地代码库;远程代码库;github
本地代码库使用方法:bash
1、先建立一个文件,做为你的本地代码库,里面固然就是你项目的工程目录;ide
在终端里打开该文件,输入如下代码 ([xxxx] 内表明你要自主写入的名称)gitlab
# 在当前目录新建一个Git代码库
学习$ git init测试
# 新建一个目录,将其初始化为Git代码库
网站
$ git init [project-name]
2、简单配置一下你的git,别紧张,入门等级彻底是简单的配置;
Git的设置文件为.gitconfig
,它能够在用户主目录下(全局配置),也能够在项目目录下(项目配置)
# 设置提交代码时的用户信息 $ git config [--global] user.name "[name]" $ git config [--global] user.email "[email address]"
# 编辑Git配置文件 $ git config -e [--global]
# 显示当前的Git配置 $ git config --list
3、对暂存区的操做;
配置就这么完成了,接下来开始使用Git,使用前,咱们先粗糙的说一下暂存区的概念:
一、暂存区的概念你能够理解成网购的购物车,你敲出来的代码就至关于你在浏览网站时所看到的货物,你总不能看一眼浏览列表,货物就到你家了吧。
二、咱们先简单介绍一个命令,这个命令至关于打开京东,查看货物列表。(红红的就是你要买的产品)
# 检查状态 $ git status
三、咱们再介绍一个命令,这个就牛X了,不只能够看,这个命令能够直接让你加入购物车了,是否是很心动。
# 加入到暂存区 $ git add
四、若是你很土豪,大手一挥,说这些我都要了,就是买买买,那好再来一个命令,所有加入购物车。
# 所有加入暂存区 $ git add -A
4、提交到本地仓库;
你买的货物不能总在购物车是吧,咱们这回就要付款,买回家了,也就是提交到咱们本身的本地仓库。(msg是用户对此次提交的描述,你总要告诉你的小伙伴或是之后的本身,我这波操做都干了啥)
$ git commit -m ["msg"] # 提交到本地仓库
OK,咱们以上就是对本地仓库的操做,相信像我这样的婴幼儿选手也都学会了这波操做,固然你会问,我靠,这么牛掰的git你就说完了,固然!固然不是,以上仍是为了让你们看到一个基本的流程,由于git的命令真的不少,别说十分钟,不少个十分钟咱们也不能一一学会,可是这个流程明白了以后,你们就能够去一个一个的尝试那些命令,博客最后,会附上一篇软大神,哦不,阮大神的Git婴幼儿的命令清单。
好,接下来,就是咱们从本地仓库,链接,以及操做远程仓库,而且如何与小伙伴共同开发的流程。
远程代码库相关使用方法:(可能我这个描述不是很准确,若是你不是很明白...那就不明白吗....反正没啥用)
1、本地仓库与远程仓库连接;
你本地的代码,要上传到远程仓库了;
一、若是不是代码,咱们用什么?百度云盘啊,360云盘啊,网易云盘啊,这样子不只能够节省了你本地电脑的空间,还大大的方便了共同协做啊,好比你的老铁说“同志,那个什么小泽什么玛丽什么亚的文学电影拷给我” 咱们就直接给出一个地址,说“去下载吧”,这样是否是很方便,并且若是你的老铁也有这样的文学电影,也能够添加到里面,很方便咱们也下载下来学习是否是,此处有一个[你懂得]表情;
二、那么换成代码呢 ? 咱们固然也有相似云盘同样的库,好比github、gitlab、bitbucket之类的,你们网上搜一搜不少,可是这种仓库也分公有和私有,你想一想啊,若是公有的是否是你的文艺电影就被别人看到了,因此咱们大多时候使用的都是私有库,固然你觉想开源的一些代码,就要放在公有库里面了。至于选哪家你们本身决定,有的公开,有的私有,还有收费和免费之分,选好了,建立一个仓库就好。
三、接下来讲的一个命令,可让咱们本身本地的仓库和远程仓库连接起来。(远程仓库地址栗子:https://github.com/igeekbar/awesome-project.git)
# 链接远程仓库
$ git remote add origin [你申请的远程仓库地址]
2、向远程仓库上传你的本地代码;
一、这个命令有两个参数,远程仓库的名字,以及分支的名字。
二、这里要简单说一下:
(1)一个项目能够同时拥有好几个远程仓库,为了区分一般会起不一样的名字。一般主要的远程仓库被称为origin。
(2)Git主分支的名字,默认叫作master。它是自动创建的,版本库初始化之后,默认就是在主分支在进行开发。
三、若是你没有特殊的设定,那么下面的命令就是 把本地的提交传送到远程仓库。
# 将本地代码上传合并到远程仓库
$ git push origin master
3、拉取远程仓库上的代码;
一、当你的朋友张大壮将他的文学电影上传到了远程仓库,若是你要下载下来学习,就要用到这个命令了。
二、其实咱们这个第三步应该拿到上一步以前来讲,一个正常的流程必定是这样 先拉取,再推上去,不然一旦你没有拉取代码,就将本身的代码上传上去,可能会产生冲突,因此咱们在上传代码以前,必定要先拉取一下,将你小伙伴的代码拉取到本地,可是咱们这次讲解的是新建,此时你的远程仓库空空如也,因此咱们并不用拉取一下,能够直接上传。
三、讲一个坑:仍是建议先拉取一下,由于博主我刚学习Git的时候,就没有拉取,按道理来讲直接上传也没问题,但问题是博主我手欠的在远程仓库里建立了一个md,这样上传的时候由于文件数量不相同,因此形成了上传不上去,此时咱们就要先拉取一下代码,将远程代码合并到本地,再由本地上传才会OK;(此时合并选择使用强行合并)
#从远程仓库拉取代码到本地
$ git pull origin master
#强行拉取合并代码到本地
$ git pull origin master --allow-unrelated-histories
4、克隆仓库;
一、能够将你知道地址的仓库内代码,下载到你的本地。
二、若是发生了上面 三 中的 3 所遇到的问题,能够不选择强行合并的方法,能够先使用该命令克隆到本地,而后再将你的代码拷贝到里面,再提交上去,也是没问题的。
# 克隆代码到本地仓库
$ git clone
5、分支操做;
一、学会了克隆代码到本地,咱们就能够开始干活了,此时你和你的铁柱小伙伴共用了一个远程仓库,可是大家若是对一个分支作修改,很容易冲突,也不利于开发和提交,因此测试咱们就要开始学习对分支的操做;
二、这个操做其实很简单,就像是拷贝远程仓库同样,不知道大家看过火影没,影分身术啊,立马拉出来一个新的鸣人,差很少就是这个道理。
三、每个仓库的默认分支都叫master, 建立新分支能够给他命名。
# 建立一个新分支而且命名
$ git branch [banch_name]
四、咱们成功检出了一个分支,接下来就是切换分支的操做,有的时候你并非只在一个分支上操做,有可能一个分支还要检出一个分支。
五、除了常设分支之外,还有一些临时性分支,用于应对一些特定目的的版本开发。
* 功能(feature)分支
* 预发布(release)分支
* 修补bug(fixbug)分支
# 查看当前本地分支
$ git branch
# 切换到指定分支
$ git checkout [branch_name]
六、若是在分支上开发完成,就要合并到你本地的默认分支上,也就是第一个分支,master,以后再由master统一提交上去。(记得提交前要先拉一波)
# 合并分支
$ git merge [branch_name]
# 删除分支
$ git branch -d [branch_name]
OK,基本的团队合做就到这里了,是否是真的只用了十分钟。固然这些只是简单的流程,实际应用操做过程当中,你还会遇到不少问题,咱们以上也只是讲解了git使用的冰山一角,好比解决冲突、查看提交不一样,回滚等等,咱们可能会遇到。以上所讲,只但愿给刚刚入门的同窗一个简明的入口,师傅领进门,修行在我的,程序员这条路仍是要本身一步步走下去,面对各类问题和新鲜技术都要不断的去学习,博主也是刚刚入门的小菜菜,但愿能够和大家一块儿砥砺前行;
一些团队合做过程当中可能会使用到的进阶技能:
1、对比两个提交以前的差异;
一、首先要分别知道你要对比的是谁和谁,究竟是小泽什么玛利什么亚和苍什么井什么空到底谁比较文艺呢?你就要先知道他们的名字。
# 查看历史信息和id
$ git log
二、id很长,可是当使用它的时候你并不须要复制整个字符串,前几个字符就够了。
# 查看某一次提交更新了什么
$ git show [id]
# 查看两次提交的不一样
$ git diff [id_1]..[id_2]
2、回滚
一、Git容许咱们将某个特定的文件回滚到特定的提交,须要指定回滚到哪一个提交(以id做为参数),以及文件的全路径。
# 将文件回滚到指定提交
$ git checkout [id] [file_name]
二、回滚提交,若是状况超级复杂,咱们熬夜看了什么什么老师的文艺片后,精神不佳,一不当心提交错了,或是本次提交忘记加入某个文件,那么咱们就须要使用命令来改正此次提交。
# 更改上次的提交
$ git commit --amend
三、若是是更复杂的状况,好比不是最新的提交出了问题,也不要着急,Git的回滚机制是很健全滴。
# 修改提交 最新的一次提交别名也叫HEAD
$ git revert HEAD
# 其余提交
$ git revert [id]
3、冲突
一、回滚的时候是很容易出现冲突的,什么是冲突呢,就是你的老铁赵铁柱很喜欢小泽什么玛利亚老师,而你喜欢苍井什么空老师,那么问题来了,当大家都上传了一个名字叫`我最爱喜欢的文艺片.mp4`的文件时,尴尬就出现了,冲突了,我最爱的只能有一个,此时Git就会报出大家的冲突。
二、不要怕,出现冲突了很简单,只须要你说服你的老铁赵铁柱不要再喜欢小泽什么玛利亚老师了,仍是投入苍井什么空老师的怀抱吧,或是他说服你,或是大家同时喜欢上了郭德纲,那么这个冲突就解决了。
4、配置 .gitignore
一、这个就很好理解了,你提交代码的时候,必定是有一些代码不想提交到远程仓库的,好比build、node.js项目中的node_modules文件夹、.log等等,总之这些均可以再.gitignore作一个拦截,不让他们在咱们git add -A时,被提交上去。
二、只须要你在代码工程根目录下,建立.gitignore文件,在文件中列出不须要提交的文件名、文件夹名,每一个独占一行,.gitignore文件须要像普通文件同样add、commit和push。
三、举个栗子:(“/”说明是一个文件夹,里面的全部内容都被递归忽略)
*.log
build/
node_modules/
.idea/
my_notes.txt