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常用命令
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 合并分支
   
  1.  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 

场景:比如错删文件并且已经提交了 ,但是可以是回退的,某个版本,撤销

下面先演示我删除 ,删除了person.java 然后提交


提交

可以看到我的项目现在已经没有person.java

但是现在我们发现删除错了 ,person.java 想要恢复 ;步骤:

1)先使用git log 或者 reflog 查看提交日志,可以看到有很多的提交日志信息 ,其中紫色框表示提交的版本ID ,HEAD@{0}表示最新提交版本,commit :xxxx 表示提交的日志信息

 

2)有了版本ID ,我们就可以回滚到任何一个git版本,使用git reset -- hard 版本ID即可 完成回退到某个版本:

    我们选择删除person.java文件之前的一个版本ID,回退到该版本id,如下截图:

   再次看项目中person.java文件恢复

  扩展:也可以使用git rest --hard  HEAD^ 表示回退到上一个版本 ,git rest --hard HEAD^^表示回退到上上一个版本,以此类推。

    但是还有有问题:我现在只想回退某一个文件,不想把整个项目回退,很简单 ,还是使用"git reset --hard 版本ID 文件名" 即可,例如: git reset --hard fd56gt2 person.java 那么git只会回退该文件到指定的版本 不会将整个项目回退 ,除此之外,还可以使用 "git checkout 版本ID 文件名" 也可以完成指定文件回退 

--------------------------------未完待续  后续更新  谢谢 -------------------------------------------

猜你喜欢

转载自blog.csdn.net/weixin_37751634/article/details/81542979