zoukankan      html  css  js  c++  java
  • 快速上手Git

    本文主要摘录于廖雪峰的Git教程,个别地方做了可能不恰当的修改或补充,主要方便自己回顾。查看更详细内容请移步廖老师博客。同时,感谢廖老师写出这么好的入门指导。

     (有彩蛋!!!)

    一、热身 

    1.初始化一个Git仓库。先进入到一个本地目录下,然后使用git init命令将目录初始化。

    2.添加文件到Git仓库,需要2条命令:

    1)使用命令git add <file>,可反复多次使用,添加多个文件,也可一次添加多个文件。

    2)使用命令git commit -m "日志内容"进行提交。


    二、进入状态

    1.要随时掌握工作区的状态,使用git status命令。

    2.如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

    :cat <file> ,是一个linux命令,表示由第一行开始显示文件内容。类似的还有tac:从最后一行开始显示;head:查看头几行;tail:查看尾几行,等等。


    三、玩点高级的: 版本回溯

    1.HEAD指向的版本就是当前版本,上一版本是HEAD^,每上一版本加一个^符号。使用命令“git reset --hard HEAD^”,回溯到上一版本。使用命令“git reset --hard 版本号”,回溯到具体版本。
    版本号不用写全,写前4、5位就可以了。

    2.用“git log <file>”查看某一文件从第一次提交到当前版本的提交历史,以便确定向前回溯到哪个版本。省略文件名,表示命令对该目录下所有文件生效。

    3.用“git reflog <file>”查看某一文件的命令历史(提交、回溯),以便确定向后回溯到哪个版本。

    :当前版本不一定是最后提交的版本。

    补充内容:(以下来自segmentfault用户xiaochao)

    git不能把单独的某个文件恢复到指定的版本,如果要这要做,可以这样:
    1)git reset 版本号,这时候,会产生一个和版本号对应的分支
    2)git checkout到这个分支,把要恢复的文件拷贝走
    3)git checkout到原来的分支,把文件再拷贝回来,覆盖掉现在的文件,然后git add,git commit

    四、再说add与commit

    1.每次修改文件后,commit之前,都要先对修改的文件进行add操作。如果不先add到暂存区,那么无法commit。

    2.在某一次修改文件后,add到暂存区。然后又做了第二次修改,第二次修改后没有add操作。这样commit,只会将第一次的修改提交,第二次所做的修改不会被提交。


    五、后悔药

    场景1:当你误改了工作区某个文件的内容,想将文件回退到修改之前的样子时,用命令git checkout -- <file>。(注意“--”不能少)

    场景2:当你误改了工作区某个文件的内容,并且将其add到了暂存区,想将文件回退到修改之前的样子时,分两步,第一步用命令git reset HEAD <file>/文件夹,这样文件就回到了工作区(即撤销add)
    ,第二步按场景1操作即可。

    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回溯内容,不过前提是没有合入到远程库。如果已push到远程库,想要回溯版本。先回退本地库,再git push -f合入到远程库。(注意:本地库回溯后,版本将落后远程库,必须使用强制推送覆盖远程库,否则无法合入到远程库)

    六、删除文件

    1.git checkout其实是用本地版本库里的文件替换工作区/暂存区的文件,无论工作区/暂存区的文件经过修改还是删除,只要版本库中还有,都可以进行还原。还原后的文件可以回溯到任意版本。

    2.命令git rm用于删除版本库中的文件。删除后并且commit,就真的从本地版本库删除了。(如果一个文件已经被提交到版本库,那么你永远不用担心在工作区和暂存区误删,但是要小心,误删之前做的修改如果没有add/commit是无法找回的。)


    七、远程版本库

    1.要关联一个远程版本库,使用命令git remote add origin git@server-name:path/repo-name.git。

    2.关联后,使用命令git push -u origin master第一次合入master分支的所有内容到远程版本库。此后,每次本地提交后,只要有必要,就可以使用命令git push推送最新修改。如果github上的文件比本地版本库的版本新,那么push之前会提示先pull。执行git pull会进入vim让填comment,不填直接:q退出即可,然后就可以push了。

    (同理:如果一个文件已经被合入到远程版本库,那么你永远不用担心在本地版本库误删,当然,这只是我目前的理解,不一定准确。)

    最后彩蛋,是我绘制的一张简易的git工作流程示意图:-)

    彩蛋2,推荐一本《GitHub入门与实践》,作者大塚弘记,我刚看了一半,非常好的入门书。

    知识共享许可协议
    本作品采用知识共享署名 4.0 国际许可协议进行许可。

  • 相关阅读:
    Android下加载GIF图片
    拍照、相册及裁剪的终极实现(一)——拍照及裁剪功能实现
    阿里巴巴矢量库
    ActiveAndroid 管理数据库
    利用box-shadow制作loading图
    适用于移动端的地址选择器
    常用的不易记忆的css自定义代码
    关于js中一个对象当做参数传递是按值传递还是按引用传递的个人看法
    JavaScript之函数柯里化
    CSS3实现图片渐入效果
  • 原文地址:https://www.cnblogs.com/fortunel/p/6551108.html
Copyright © 2011-2022 走看看