git学习 快速入门 使用
1:git与svn的区别:
1)git可以分布式(什么是分布式自己百度),svn是需要一个服务器,客户端必须通过网络连接,如果断网了,那么svn就根本应用不了了,但是git可以在本地操作,离线操作,因为git有本地仓库。
2:git初体验
前言:(看看使用背景嘛?别急啊)一般刚进公司的程序员,肯定会说 :“小明” 你刚进公司 ,你先把我们公司的项目的代码从git上拉下来(哈哈)然后熟悉熟悉项目代码,此时这个时候作为一个流弊的程序员,要么用过git,(哈哈,那不慌) ,要么没用过git,但是听过也学习过只是没有实用场景(俗话说没吃过猪肉还没看过猪跑吗,哈哈~~,心里其实不慌,但是心里还是有点mmp),要么只用过svn,没用过git,也没听过git(那你需要慌一下,哈哈~~),不过只要你看到此篇文章 ,保证你不慌(此处有表情,哈哈~),好了不吹流弊了,讲了大半天都是废话,但是再容我说最后一句,作为一个流弊的程序员,掌握git 是要会滴,不然进公司,发现都在用git,就连你旁边QA小姐姐用的比你还溜,这个时候你可能会弱弱问一句旁边小姐姐,"git怎么用啊?",嗯,此时我又要需要多啰嗦几句,各位再稍等哈,第一如果你长得还可以,小姐姐又没有男朋友,那你们可以慢慢深入了解以及如何使用git了(哈哈~画面太美请容我笑一会,),第二 如果你长得帅,QA小姐姐又没有男朋友,git快速入门大可不必担心(哈哈~)第三 如果你长得很帅,都觉的可以匹敌吴燕租了,嗯,恭喜你,不管这个QA小姐姐有没有男朋友,git对于你来说,岂不是轻轻松松(偷笑一会~~);但是除了以上三种情况 ,可能就没有这么幸运了,刚好又遇到是一个高冷的QA小姐姐,不搭理你,而且git用的比你还溜 ,你说你作为一个流弊的程序员气不气,气不气,哈哈,哎呀妈呀,打字累死我了,我先喝口水,下面就来快速入门。
git常用命令和作用:git常用命令(详细作用以及如何使用后面会讲,稍安勿躁)
git clone | 克隆即将git上面的代码拉取到自己本地上 |
git status | 查看git中文件状态 |
git add | 追踪文件 |
git commit -m | 提交到本地仓库 |
git pull | 更新本地仓库,可能会产生冲突 |
git push | 推送到远程仓库 |
git checkout | 切换分支 / 回退某个文件到上一版本 |
git branch | 查看分支 / 创建分支 |
git log/git reflog | 查看日志 / 查看所有日志 |
git reset --hard HEAD | 回退到最新版本 |
git reset --hard 版本ID | 回退到某一个版本 |
git merge | 合并分支 |
- git clone 操作截图:1)刚进公司 我需要将项目代码从git上拉下来也就是clone下来:git clone 地址
首先你需要copy项目在git上面的地址 ,注意根据你公司,使用的是ssh,还是http,copy之后,你需要进入git命令
窗口(对了 ,这里最要的是你已经安装好了git,具体怎么安装,可以自行百度,一堆教程,都是傻瓜式教程,可以的)
2) 截个图:进入git的命令窗口
3)继续截图演示:使用git clone 来克隆代码
我们来看看 clone下的项目代码:
4)好了此时小明很高兴,于是就沉静在代码的海洋里了,小结:git clone 就是将已存在的git上面的代码拉取到本地,简单理解就是下载源码到本地 。
2. git add
场景:每天完成公司交给的任务,肯定会修改项目中代码或者新增加一些文件,下班前需要将代码进行提交。
1)假如你现在的项目你没有进行任何改变,一直是在最新的版本,那么使用git status 命令,你会发现显示,没有文件被改变,已经被提交,没有需要提交的
2) 但是现在你改了里面的代码,或者新增加一些文件,现在我 测试 即有修改代码 ,也新增了文件,然后使用git status 查看状态变化,
请看截图:修改和新增文件
再次使用git status 查看状态,可以看到它说person.java是新增的,没有被git 管理追踪,所以 需要git add person.java追踪该文件,又说 url.property被修改了 需要被提交
那我们按照它的提示 :先git add . (git add .和git add person 一样,只不过 .是将所有改变和新增加的文件进行追踪,后者是只追踪具体的,推荐使用 . ,因为方便)
git add之后,再次使用git status,查看状态:变绿了,那就对了,它说 这些修改和新增加的文件被追踪成功了,需要提交
小结:git add 追踪修改和新增加的文件
3. git commi -m 继续接着上面说,git add成功后 ,就要提交,ok ,我们在使用git commit -m 提交一次,每次提交要说明与一下,这次提交,你做的事情是什么,就相当于一段注释
提交成功后,我们再次使用git status 查看状态,如下截图,显示提交成功
4. git pull , 此时你提交成功了,但是注意 ,你这是提交到本地仓库,还没有提交到远程的仓库,所以最后你还需要git push 推送到远程仓库才可以,但是在push 之前,一定 一定 一定 要注意 ,先git pull ,重要的话说三遍,否则小手一抖把别人代码覆盖了,第二天 。。。。 。
截图请看 先pull ,pull之后一般会有两种结果: 先说第一种:alerady up-to-date表示已经和远程的是一致的(如下截图),这种结果就挺好的,不用想,下一步就是直接git push 到远程仓库
第二种:在你把代码推送到远程仓库之前,有人也修改了代码,并且赶在你之前推送到远程仓库的同一分支,这个时候,你git pull 会把别人修改的代码也更新到自己本地上了 ,放心不会覆盖你的代码 ,但是这里可能会出现冲突,冲突后面再说,如果没有出现冲突,并且pull 成功了 ,如果远程上有新的文件,那么pull之后也会更新到你的本地上。
5 git push 推送到远程仓库
推送成功 ,然后我们看一下远程仓库的提交记录
6. git branch 查看和创建分支
场景:一般项目发布时用的是master主分支或者其他主分支,专门用户最后项目发布的代码稳定的分支,一般我们不会再该主分支上进行修改,如果说,有新的需求,或者新的bug,我们一般会创建一个小分支出来,在小分支上进行代码的迭代,测试,然后最后稳定之后在合并到我们的主分支上,这样做的目的是在不破坏原有的已经稳定的源码之上进行开发,不仅保证项目的可持续的运行,也加快了,同事之间的协作开发。下面请看命名操作:
1)查看本地所有分支以及所在分支 git branch
2)查看所有分支,git branch -a 红色框起来是远程该项目的所有分支,前面有个*表示是当前分支
3)创建分支 git branch 分支名
4)查看新创建的分支 git branch -a,但是请注意,dadacz并不在远程分支上,即dadacz,并不在红色字体上,因为新的分支只是在本地创建的,只有你 提交,推送之后,远程仓库会自动创建该新的分支。
小结:好了 ,我们现在虽然会创建分支,但是怎么用呢?请看7小节
7、分支进阶之切换分支 :git checkout 分支名
现在我们就用上面的新的分支作为我的当前分支,那么就需要切换分支 git checkout dadacz
再次查看当前分支,可以看到*在dadacz分支上了,代表所在当前分支
ok,我们在新的分支上做了一些代码迭代开发,然后add ,然后commit ,commit会提交到当前分支,也就是新的分支,接下来然后pull ,最后push ,当push成功后,你会发现远程仓库就会多一个你在本地上新创建的分支,使用git branch -a 也可以看到
去我们的远程git上也能看到:
8、分支进阶之分支合并:git merge 要合并的分支名
场景:为什么合并,你在新分支开发,写完了,但是最后项目发布运行,可不是你那个新分支的代码,而是主分支的代码,所以,我们还需要将你的新分支上的代码合并到主分支上,最后测试通过才可以发布运行,注意:是将你新分支的代码 合并到 主分支:
1)、先切换到主分支上 :git checkout master,我这里主分支就是master
2)、 切换之后使用git merge dadacz 进行合并 ,但是发现合并失败 ,有冲突
好,接下来就讲解合并冲突 解决办法 ,当然也适用同事协作开发代码提交产生的冲突
9、冲突 解决办法:
像上面如图所示,表示合并失败,并且提示,有冲突文件,首先产生的冲突时你提交的文件修改内容和位置和远程上的不一样,
比如说A用户在User文件上加的代码如下:
然后提交到推送远程仓库上的某一个分支上
现在B用户也在User文件上加了代码,如下:
然后B用户准备提交并且推送到远程仓库了,但是这个时候git就蒙圈了,我去,同一位置这个是UserID,另一个是ID,我该怎么办啊,算了吧,我不让B用户推送到我远程仓库了,直接报出异常,提交失败,错误原因:user文件有冲突代码,请解决冲突,然后再提交过来吧。(合并冲突也是一样的原因)
ok,现在我们了解冲突如何产生了,接着上面冲突报错的截图讲解,我们发现报冲突异常了,怎么办,看看状态吧,哪些文件出现冲突了呢?使用git status:
可以看到红色的,并且有both ,说明该文件和远程仓库的该文件产生冲突了
现在知道是User出现冲突了,那么就去解决吧,打开User.java文件 ,它是这样的:
解决:就是相同取一样的,不一样的,取最合理的,最后可以取并集,比如说user的id是用userID还是id来表示呢,选一个合理的命令,删除不合理的,然后删掉冲突标识字符和标识 ,即<<<<<HEAD 和 ======和 >>>>>dadacz这些,最后我解决好冲突的User:
然后再次使用 git add .,git commit ,git push 主分支名,完成即可,这样合并也就成功了
小结:冲突并不可怕,找到冲突位置,然后解决即可 ,只是时间问题,所以代码敲的慢的小伙伴,可能会遭点罪奥!
10、版本回退 git reset ,查看日志记录 git log /git reflog
场景:比如错删文件并且已经提交了 ,但是可以是回退的,某个版本,撤销
下面先演示我删除
--------------------------------未完待续 后续更新 谢谢 -------------------------------------------