Git婴幼儿使用手册【十分钟让你帅气的使用命令行和团队工作】
Git由来:......
Git使用的好处:......
如何使用Git:(以上会显得我们以下的是很纯纯的干货)
代码库有两个部分: 本地代码库;远程代码库;
本地代码库使用方法:
一、先创建一个文件,作为你的本地代码库,里面当然就是你项目的工程目录;
在终端里打开该文件,输入以下代码 ([xxxx] 内代表你要自主写入的名称)
# 在当前目录新建一个Git代码库
$ git init
# 新建一个目录,将其初始化为Git代码库
$ git init [project-name]
二、简单配置一下你的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
三、对暂存区的操作;
配置就这么完成了,接下来开始使用Git,使用前,我们先粗糙的说一下暂存区的概念:
1、暂存区的概念你可以理解成网购的购物车,你敲出来的代码就相当于你在浏览网站时所看到的货物,你总不能看一眼浏览列表,货物就到你家了吧。
2、我们先简单介绍一个命令,这个命令相当于打开京东,查看货物列表。(红红的就是你要买的产品)
# 检查状态
$ git status
3、我们再介绍一个命令,这个就牛X了,不仅可以看,这个命令可以直接让你加入购物车了,是不是很心动。
# 加入到暂存区
$ git add
4、如果你很土豪,大手一挥,说这些我都要了,就是买买买,那好再来一个命令,全部加入购物车。
# 全部加入暂存区
$ git add -A
四、提交到本地仓库;
你买的货物不能总在购物车是吧,我们这回就要付款,买回家了,也就是提交到我们自己的本地仓库。(msg是用户对这次提交的描述,你总要告诉你的小伙伴或是以后的自己,我这波操作都干了啥)
# 提交到本地仓库
$ git commit -m ["msg"]
OK,我们以上就是对本地仓库的操作,相信像我这样的婴幼儿选手也都学会了这波操作,当然你会问,我靠,这么牛掰的git你就说完了,当然!当然不是,以上还是为了让大家看到一个基本的流程,因为git的命令真的很多,别说十分钟,很多个十分钟我们也不能一一学会,但是这个流程明白了之后,大家就可以去一个一个的尝试那些命令,博客最后,会附上一篇软大神,哦不,阮大神的Git婴幼儿的命令清单。
好,接下来,就是我们从本地仓库,连接,以及操作远程仓库,并且如何与小伙伴共同开发的流程。
远程代码库相关使用方法:(可能我这个描述不是很准确,如果你不是很明白...那就不明白吗....反正没啥用)
一、本地仓库与远程仓库链接;
你本地的代码,要上传到远程仓库了;
1、如果不是代码,我们用什么?百度云盘啊,360云盘啊,网易云盘啊,这样子不仅可以节省了你本地电脑的空间,还大大的方便了共同协作啊,比如你的老铁说“同志,那个什么小泽什么玛丽什么亚的文学电影拷给我” 我们就直接给出一个地址,说“去下载吧”,这样是不是很方便,而且如果你的老铁也有这样的文学电影,也可以添加到里面,很方便我们也下载下来学习是不是,此处有一个[你懂得]表情;
2、那么换成代码呢 ? 我们当然也有类似云盘一样的库,比如github、gitlab、bitbucket之类的,大家网上搜一搜很多,但是这种仓库也分公有和私有,你想想啊,如果公有的是不是你的文艺电影就被别人看到了,所以我们大多时候使用的都是私有库,当然你觉想开源的一些代码,就要放在公有库里面了。至于选哪家大家自己决定,有的公开,有的私有,还有收费和免费之分,选好了,创建一个仓库就好。
3、接下来说的一个命令,可以让我们自己本地的仓库和远程仓库链接起来。(远程仓库地址栗子:https://github.com/igeekbar/awesome-project.git)
# 连接远程仓库
$ git remote add origin [你申请的远程仓库地址]
二、向远程仓库上传你的本地代码;
1、这个命令有两个参数,远程仓库的名字,以及分支的名字。
2、这里要简单说一下:
(1)一个项目可以同时拥有好几个远程仓库,为了区分通常会起不同的名字。通常主要的远程仓库被称为origin。
(2)Git主分支的名字,默认叫做master。它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发。
3、如果你没有特殊的设定,那么下面的命令就是 把本地的提交传送到远程仓库。
# 将本地代码上传合并到远程仓库
$ git push origin master
三、拉取远程仓库上的代码;
1、当你的朋友张大壮将他的文学电影上传到了远程仓库,如果你要下载下来学习,就要用到这个命令了。
2、其实我们这个第三步应该拿到上一步之前来说,一个正常的流程一定是这样 先拉取,再推上去,否则一旦你没有拉取代码,就将自己的代码上传上去,可能会产生冲突,所以我们在上传代码之前,一定要先拉取一下,将你小伙伴的代码拉取到本地,但是我们此次讲解的是新建,此时你的远程仓库空空如也,所以我们并不用拉取一下,可以直接上传。
3、讲一个坑:还是建议先拉取一下,因为博主我刚学习Git的时候,就没有拉取,按道理来说直接上传也没问题,但问题是博主我手欠的在远程仓库里创建了一个md,这样上传的时候因为文件数量不相同,所以造成了上传不上去,此时我们就要先拉取一下代码,将远程代码合并到本地,再由本地上传才会OK;(此时合并选择使用强行合并)
#从远程仓库拉取代码到本地
$ git pull origin master
#强行拉取合并代码到本地
$ git pull origin master --allow-unrelated-histories
四、克隆仓库;
1、可以将你知道地址的仓库内代码,下载到你的本地。
2、如果发生了上面 三 中的 3 所遇到的问题,可以不选择强行合并的方法,可以先使用该命令克隆到本地,然后再将你的代码拷贝到里面,再提交上去,也是没问题的。
# 克隆代码到本地仓库
$ git clone
五、分支操作;
1、学会了克隆代码到本地,我们就可以开始干活了,此时你和你的铁柱小伙伴共用了一个远程仓库,但是你们如果对一个分支做修改,很容易冲突,也不利于开发和提交,所以测试我们就要开始学习对分支的操作;
2、这个操作其实很简单,就像是拷贝远程仓库一样,不知道你们看过火影没,影分身术啊,立马拉出来一个新的鸣人,差不多就是这个道理。
3、每一个仓库的默认分支都叫master, 创建新分支可以给他命名。
# 创建一个新分支并且命名
$ git branch [banch_name]
4、我们成功检出了一个分支,接下来就是切换分支的操作,有的时候你并不是只在一个分支上操作,有可能一个分支还要检出一个分支。
5、除了常设分支以外,还有一些临时性分支,用于应对一些特定目的的版本开发。
* 功能(feature)分支
* 预发布(release)分支
* 修补bug(fixbug)分支
# 查看当前本地分支
$ git branch
# 切换到指定分支
$ git checkout [branch_name]
6、如果在分支上开发完成,就要合并到你本地的默认分支上,也就是第一个分支,master,之后再由master统一提交上去。(记得提交前要先拉一波)
# 合并分支
$ git merge [branch_name]
# 删除分支
$ git branch -d [branch_name]
OK,基本的团队合作就到这里了,是不是真的只用了十分钟。当然这些只是简单的流程,实际应用操作过程中,你还会遇到很多问题,我们以上也只是讲解了git使用的冰山一角,比如解决冲突、查看提交不同,回滚等等,我们可能会遇到。以上所讲,只希望给刚刚入门的同学一个简明的入口,师傅领进门,修行在个人,程序员这条路还是要自己一步步走下去,面对各种问题和新鲜技术都要不断的去学习,博主也是刚刚入门的小菜菜,希望可以和你们一起砥砺前行;
一些团队合作过程中可能会使用到的进阶技能:
一、对比两个提交之前的差别;
1、首先要分别知道你要对比的是谁和谁,到底是小泽什么玛利什么亚和苍什么井什么空到底谁比较文艺呢?你就要先知道他们的名字。
# 查看历史信息和id
$ git log
2、id很长,但是当使用它的时候你并不需要复制整个字符串,前几个字符就够了。
# 查看某一次提交更新了什么
$ git show [id]
# 查看两次提交的不同
$ git diff [id_1]..[id_2]
二、回滚
1、Git允许我们将某个特定的文件回滚到特定的提交,需要指定回滚到哪个提交(以id作为参数),以及文件的全路径。
# 将文件回滚到指定提交
$ git checkout [id] [file_name]
2、回滚提交,如果情况超级复杂,我们熬夜看了什么什么老师的文艺片后,精神不佳,一不小心提交错了,或是本次提交忘记加入某个文件,那么我们就需要使用命令来改正这次提交。
# 更改上次的提交
$ git commit --amend
3、如果是更复杂的情况,比如不是最新的提交出了问题,也不要着急,Git的回滚机制是很健全滴。
# 修改提交 最新的一次提交别名也叫HEAD
$ git revert HEAD
# 其他提交
$ git revert [id]
三、冲突
1、回滚的时候是很容易出现冲突的,什么是冲突呢,就是你的老铁赵铁柱很喜欢小泽什么玛利亚老师,而你喜欢苍井什么空老师,那么问题来了,当你们都上传了一个名字叫`我最爱喜欢的文艺片.mp4`的文件时,尴尬就出现了,冲突了,我最爱的只能有一个,此时Git就会报出你们的冲突。
2、不要怕,出现冲突了很简单,只需要你说服你的老铁赵铁柱不要再喜欢小泽什么玛利亚老师了,还是投入苍井什么空老师的怀抱吧,或是他说服你,或是你们同时喜欢上了郭德纲,那么这个冲突就解决了。
四、配置 .gitignore
1、这个就很好理解了,你提交代码的时候,一定是有一些代码不想提交到远程仓库的,比如build、node.js项目中的node_modules文件夹、.log等等,总之这些都可以再.gitignore做一个拦截,不让他们在我们git add -A时,被提交上去。
2、只需要你在代码工程根目录下,创建.gitignore文件,在文件中列出不需要提交的文件名、文件夹名,每个独占一行,.gitignore文件需要像普通文件一样add、commit和push。
3、举个栗子:(“/”说明是一个文件夹,里面的所有内容都被递归忽略)
*.log
build/
node_modules/
.idea/
my_notes.txt
Git婴幼儿使用手册【十分钟让你帅气的使用命令行和团队工作】的更多相关文章
- 十分钟用 Node 命令行工具打造 react-cli 脚手架
如果你有以下想法: 每次新开项目需要copy一堆文件/文件夹,太烦!想要快速建立工程 用了vue-cli.react-app,羡慕!想要自己做一个 你只需花十分钟时间,做一个Node命令行工具,打造属 ...
- 快速入门:十分钟学会Python
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- Python十分钟学会
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- 快速入门:十分钟学会Python(转)
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- PHP学习过程_Symfony_(3)_整理_十分钟学会Symfony
这篇文章主要介绍了Symfony学习十分钟入门教程,详细介绍了Symfony的安装配置,项目初始化,建立Bundle,设计实体,添加约束,增删改查等基本操作技巧,需要的朋友可以参考下 (此文章已被多人 ...
- WordPress多本小说主题–WNovel主题发布,十分钟搭建小说站! 现已更新至1.2版本
本文属于<WNovel主题操作手册>文章系列,该系列共包括以下 8 部分: WNovel主题使用手册之–主题安装及更新教程 WNovel主题使用手册之–小说管理 WNovel主题使用手册之 ...
- 如何消灭飞机的“黑色十分钟”,AI来帮忙
近年来,“AI的应用和落地”逐渐成了具化的关键词,它和很多事物很多行业结合在一起,形成了奇妙的“化学反应”.例如,在日常生活中,AI可以推送我们喜欢的新闻或视频,可以在拍照的时候识别场景提升照片的美感 ...
- 1.入门篇十分钟了解Spring Cloud
文章目录 Spring Cloud入门系列汇总 为什么需要学习Spring Cloud 什么是Spring Cloud 设计目标与优缺点 设计目标 优缺点 Spring Cloud发展前景 整体架构 ...
- 十分钟速成DevOps实践
摘要:以华为云软件开发平台DevCloud为例,十分钟简单体验下DevOps应用上云实践--H5经典小游戏上云. 本文分享自华为云社区<<DevOps实践秘籍>十分钟速成DevOps ...
随机推荐
- iBATIS结果映射
resultMap的元素是在iBATIS的最重要和最强大的元素.您可以通过使用iBATIS的结果映射减少高达90%的JDBC编码,在某些情况下,可以让你做JDBC不支持的事情. ResultMaps的 ...
- 20140331 HOG代码调试 Boost库安装
1.CUDAHOG代码调试 错误1: 错误提示:(main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall cudaHOG::cudaH ...
- 搞懂这7个Maven问题,带你吊打面试官!
Java技术栈 www.javastack.cn 优秀的Java技术公众号 作者:张丰哲 www.jianshu.com/p/20b39ab6a88c 在如今的互联网项目开发当中,特别是Java领域, ...
- mycat-zookeepr--mycatweb
##############################mycat镜像############################## 5-1 创mycat镜像 wget http://dl.myca ...
- shell 命令 查找命令find,grep
1.find 查找文件 [ find -name 文件名 ] 在当前目录及子目录中找这个文件 [ find -iname 文件名 ] 在当前目录及子目录中找这个文件,不区分大小写 [ find -na ...
- (转)protobuf-----Mac 机器安装
转自: https://blog.csdn.net/u014534808/article/details/80203018 安装之旅 1. 下载protobufprotobuf下载页面 在此页面选择合 ...
- JS函数 函数调用 函数定义好后,是不能自动执行的,需要调用它,直接在需要的位置写函数名。
函数调用 函数定义好后,是不能自动执行的,需要调用它,直接在需要的位置写函数名. 第一种情况:在<script>标签内调用. <script type="text/java ...
- redis通过命令传参以及主从复制
config set appendonly yes 临时生效 如果想永久生效的话,执行 config rewrite 并不是所有的都支持修改 config set bind ip 修改bind参 ...
- js 本地预览图片和得到图片实际大小
//填充预览图片 function adpter(file, upfile) { var imgName = new Date().getTime() + file.name.substr(file. ...
- 两个对象值相同 (x.equals(y) == true),但却可有不同的 hash code,这句话对不对?
不对,如果两个对象x和y满足x.equals(y) == true,它们的哈希码(hash code)应当相同.Java对于eqauls方法和hashCode方法是这样规定的: (1)如果两个对象相同 ...