Git的使用

git的安装

由于我已经使用git将近有大半年的时间了,早已安装过,就没法上图说明,这里就不细说了

版本库(仓库Repo)相关

  • 概念:版本库(仓库)其实就是一个由git管理的文件夹,你在该文件夹
    中创建修改删除文件都有git监控
  • 创建方法:
  • 创建一个空的文件夹 $ mkdir testGit
  • 查看文件夹中现在没有任何文件 $ ls -a testGit
  • 把该文件夹转变成一个由git监管的文件夹:$testGit git init
  • 此时在查看该文件夹中就会有一个.git文件夹,说明此刻该文件夹就开始由git跟踪监控了
Git的使用_第1张图片
git仓库的创建
  • 对仓库内容修改:
向仓库中添加.gitignore文件
  • .gitignore文件作用:其中写了那些文件不需要有git追踪监控,git可以完全不管这些文件,并且你也没办法把这些文件push的远端仓库
  • .gitignore文件创建:在你的仓库中touch一个名字是.gitignore(千万不要忘记前面的. 这说明这个文件是一个隐藏文件不用ls -a是没办法看到的)
  • 向.gitignore文件中写入你想忽略的文件:两个方法
    1.在webstrom中安装.ignore插件,选中你写的项目类型自动添加内容到.gitignore文件中
    mac的使用方法:
    使用快捷建:ctrl + N :
    选定第一个

    在以下菜单中选中你的项目类型插件会自动为你添加.gitignore文件中的内容
    Git的使用_第2张图片
    Paste_Image.png

    举个例子:你向创建一个node项目
    首先你得选中jetBrains:因为我是用的是IDEA的编译器,而 jetBrains是生产IDEA各种编译器的公司,这些编译器在都会自动在你的项目中添加如同.idea这一类的文件,帮助你运行你的项目,选中后就会自动帮你在.gitignore文件中添加.idea这种文件
    Git的使用_第3张图片
    Paste_Image.png

    然后你要选中node:因为我这是node项目
    Git的使用_第4张图片
    Paste_Image.png

    ps:我经常写js项目使用npm包管理器,其中有一个巨大的node-modules文件夹一定不能上传到git远端库中,因此必须有.gitignore文件中添加node-module让他被git忽略
    Git的使用_第5张图片
    此时我的仓库使用npm init有npm包管理器管理

    Git的使用_第6张图片
    Paste_Image.png

    Git的使用_第7张图片
    2

仓库修改相关

  • 你在本地的所有修改只要没有做过任何add.commit.push所有的内容现在都在工作区,git监管你现在工作区的操作,通过git status可以查看工作区有哪些修改,现在红色字样的文件都是你在工作区的修改
Git的使用_第8张图片
Paste_Image.png

发现.idea竟然也被git监管了,赶紧在.gitignore文件中添加.idea

  • 这些修改通过git add 文件路径/.就可以被添加到暂存区,一下绿色字样的文件就是已经添加到暂存区的文件
Git的使用_第9张图片
Paste_Image.png

Git的使用_第10张图片
Paste_Image.png

此时暂存区有两个文件

  • 现在你就可以把暂存区中的所有内容作为一次commit一并添加入你当前分支生成一个commit节点
Git的使用_第11张图片
Paste_Image.png
  • 接着你好想把你的项目放到远端库中让很多人可以浏览
  • 你得先将本地仓库和你的远端仓库关联,但是你远端的仓库并不知道想跟他关联的主机是不是被允许的,此时你需要在你使用的这台电脑上产生一个秘钥,标志你这台电脑,并且用这个秘钥在远端配置,这样远端仓库就可以允许你这台电脑对他进行操作啦

向远程库提交本地仓库中的代码

  • 在你的远端github上创建一个新的Repo


    Git的使用_第12张图片
    Paste_Image.png
  • 选定SSh地址进行copy


    Paste_Image.png
  • ssh和http克隆区别
    这两种方式的主要区别在于:使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地就好了,但是每次fetch和push代码都需要输入账号和密码,这也是https方式的麻烦之处。而使用SSH url克隆却需要在克隆之前先配置和添加好SSH key,因此,如果你想要使用SSH url克隆的话,你必须是这个项目的拥有者。否则你是无法添加SSH key的,另外ssh默认是每次fetch和push代码都不需要输入账号和密码,如果你想要每次都输入账号密码才能进行fetch和push也可以另外进行设置

  • git remote add origin <你的远端仓库地址>

    Paste_Image.png

  • 这是我想push代码,把本地仓库放到远端

  • 第一次push需要设置好远程库的名字以及push的代码放到远程库的哪一个分支上 origin是远程库的默认仓库名字,因此第一次push需要写成如下样子

    Git的使用_第13张图片
    push

    git remote -v:查看你现在关联的远程仓库
    git remote add origin(可以起别的名字是远程仓库名字) master(也可以识别的分支):吧当前的本地库关联到远端仓库,给远端仓库起名字是origin,并且在远端创建一个master分支把这一次push的所有commit全部按照时间顺序加到master分支上
    git remote rm origin(可以是别的远程仓库):移除当前本地库关联的名字是origin的远程仓库(一个本地库可以关联多个远端仓库)

  • 以后的每一次push可以直接git push就是把代码push到origin 的master分支上,或者使用git push origin master每次push都设置好要push的位置

从远程库拉取

  • 如果你看到一个很好的项目想拿下来git clone <项目的http/ssh地址>,如果你clone项目的github配过你这台电脑的秘钥,那么你可以采用ssh地址clone,这样你就具有修改代码并且push代码的权利,如果没有配过秘钥,你只能使用http地址clone,但是这种clone方式不能像远程仓库中push代码
    • 这是从我的仓库使用ssh方式clone代码


      Git的使用_第14张图片
      Paste_Image.png
  • 这是从别人的仓库使用ssh


    Git的使用_第15张图片
    Paste_Image.png

    Git的使用_第16张图片
    Paste_Image.png
  • 从别人的仓库中使用http地址clone


    Git的使用_第17张图片
    你需要有别人的github密码才能push
  • 如果此时你和别人一起开发,当你在写代码的时候,别人已经向仓库中提交了一次代码,这是master分支上多了一个节点,但是你本地却停留在上一个节点,这是你本地代码就跟远端代码不一样了,如果此时你push,git就会提醒你当前代码不是最新的,你要使用git pull --reb把远端代码拉下,和本地代码在工作区合并在一起
  • git pull=git fetch+git merge:使用git fetch吧远端的origin master整个拿到本地,然后使用git merge:把本地master上没有的节点+这次commit的节点合并解决冲突在本地成为一个新的commit节点,此时你可以push到远端
  • git pull --reb=git fetch+git rebase:使用git fetch吧远端的origin master整个拿到本地,然后使用git rebase:把远端有但是本地没有的节点先加到本地mater中,然后把这次的第一个commit节点加到master中如果有冲突解决冲突,然后在使用git rebase --continue把下一个commit节点加进来在解决冲突,直到git rebase --continue没有错误冲突,此时你就可以push代码了

版本回退相关

  • 你工作区做了某些修改,这是你不想要工作取得修改了,你可以使用
    git checkout <文件路径>一旦checkout你的修改一定绝对完全找不回来了!!曾经写过好多代码你不小心checkout的我好辛酸!!
    此时工作区的代码会被checkout到:
  • 1.如果现在暂存区有没有commit的代码,那么回到暂存区状态
  • 2.如果暂存区没有代码,回到最近的一次commit状态

  • 新添加的文件是没办checkout掉的,你可以直接手动删除这个文件


    Git的使用_第18张图片
    Paste_Image.png
  • git checkout:你可一看到红色字样没有了

    Git的使用_第19张图片
    Paste_Image.png

  • 如果此时你把某些修改add后放进了暂存区,但是你不想要这些修改了,你可以使用git reset HEAD <文件路径>:从暂存区撤销这个文件的这次add,让这次修改回到工作区

    Git的使用_第20张图片
    Paste_Image.png

    Git的使用_第21张图片
    Paste_Image.png

  • 撤销某次commit,你可以使用git log查看那次commit的号码,
    然后直接使用git reset --hard HEAD指针指向最近的一次commit,HEAD^代表上一次commit,HEAD^^上上次,因此你也可以采用git reset --hard HEAD^:会退到上一次commit

    Git的使用_第22张图片
    git log

    git reset --hard commitID

    Git的使用_第23张图片
    git log new

  • 撤销某次commit还可以使用git reset --soft ,这种方式会使得你的回到上次commit但是把这次commit的内容放进stage中,就是出现绿色字样

  • git reflog和git log前者你可以看到你所有的commit(包含被reset掉的commit)并且是按照操作顺序排序的。后者你只能看到当前有的commit

评论相关

  • 如果你想向别人的仓库提交一次pull request
  • 从github上fork别人的仓库,此时你的仓库中就会多一个你刚刚从别人仓库中拿过来的仓库】在你的远程仓库中


    Git的使用_第24张图片
    Paste_Image.png

    Git的使用_第25张图片
    Paste_Image.png
  • 如果你想给别人的代码提交一个issue,进入到别人的仓库中点击new issue


    Git的使用_第26张图片
    Paste_Image.png

    Git的使用_第27张图片
    Paste_Image.png

    写好提交即可

  • 如果你想给某一次pull request评论


    Git的使用_第28张图片
    Paste_Image.png
  • 如果你想给某一次commit评论
  • 你可以点开某一次commit然后会在你鼠标经过的的每一行有一个小加号


    Git的使用_第29张图片
    Paste_Image.png

    点击一个就可以评论了

分支相关

未完待续。。。

林老师教育我们讨论一个问题的时候不要没事拉分支,所以我就没怎么扩展以后遇到问题再慢慢补充吧~

你可能感兴趣的:(Git的使用)