Git的使用

git的安装

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

版本库(仓库Repo)相关

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

    在以下菜单中选中你的项目类型插件会自动为你添加.gitignore文件中的内容
    Paste_Image.png

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

    然后你要选中node:因为我这是node项目
    Paste_Image.png

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

    Paste_Image.png

    2

仓库修改相关

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

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

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

Paste_Image.png

此时暂存区有两个文件

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

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

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


    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需要写成如下样子

    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代码


      Paste_Image.png
  • 这是从别人的仓库使用ssh


    Paste_Image.png

    Paste_Image.png
  • 从别人的仓库中使用http地址clone


    你需要有别人的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掉的,你可以直接手动删除这个文件


    Paste_Image.png
  • git checkout:你可一看到红色字样没有了

    Paste_Image.png

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

    Paste_Image.png

    Paste_Image.png

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

    git log

    git reset --hard commitID

    git log new

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

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

评论相关

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


    Paste_Image.png

    Paste_Image.png
  • 如果你想给别人的代码提交一个issue,进入到别人的仓库中点击new issue


    Paste_Image.png

    Paste_Image.png

    写好提交即可

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


    Paste_Image.png
  • 如果你想给某一次commit评论
  • 你可以点开某一次commit然后会在你鼠标经过的的每一行有一个小加号


    Paste_Image.png

    点击一个就可以评论了

分支相关

未完待续。。。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 1,https://git-for-windows.github.io/ 下载windows 版 git 2,安装...
    loveqin阅读 5,002评论 1 3
  • 1.设置 初次使用需要设置姓名和邮箱git config --global user.name "git用户名"g...
    jrg陈咪咪sunny阅读 718评论 0 1
  • 版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文...
    破晓霜林阅读 278评论 0 1
  • 来到新公司了,代码管理由SVN切换到了git,于是学习了一下git。发现一篇不错的文章,特意clone写来,以供参...
    久林的技术随笔阅读 892评论 1 9
  • 昨天,我没有发送文章,深表歉意,不仅仅是对你们,更是对自己。 “文章写的好了,自然就有人看了”,一个同学这样对我说...
    抠脚小姐姐阅读 265评论 2 0