zoukankan      html  css  js  c++  java
  • git使用介绍

    1、安装

    首先下载git软件安装,点此下载

    在安装完git之后,打开Git Bash的快捷方式,进入命令行模式。

    2、配置

    首先我们需要创建一个git仓库的文件夹。

    mkdir git
    

    接着创建一个你的工程文件夹,例如是project.

    cd git && mkdir project
    

    然后我们进入git文件夹,进行初始化操作。

    cd git
    git init
    git config --global user.name "yourname"
    git config --global user.email "youremail"
    

    此时将会在你的git文件夹下生成.git文件,该文件的作用是将会对你上传的代码文件进行取舍,将一些调试用的文件排除。

    3、下载

    此后,可以进入你的project文件夹,根据远程git仓库的地址,clone一组代码回来。

    git clone https://git.oschina.net/.../...git
    

    或者你可以把你的文件放在project文件夹下,然后,和远端git仓库中的代码进行合并。

    git pull https://git.oschina.net/.../...git
    

    4、上传

    当你修改完你project中的文件后,你需要首先将你的改动提交到你的本地的仓库中。

    git add .
    git commit -m "your comments"
    

    然后就可以push到你的远程的仓库中(在这之前,首先需要增加一个远程仓库的位置)。

    git remote add origin https://git.oschina.net/.../...git
    git push -u origin master
    

    此后,会让你填写你的 git@osc 的用户名和密码。

    5、版本恢复

    使用git最重要的就是版本的恢复了。使用的命令主要有reset和revert。

    使用之前使用需要了解一下git内部的实现过程。git主要分为三个部分,工作区,缓存区和本地仓库,这使得git区别于一般的版本控制软件。
    当前用户的更改处于工作区内,而当用户使用 git add 命令后则表示用户将当前工作区的更改提交给了缓存区,此时,更改的文件并不是最终的版本,缓存区中的文件依然可以进行操作和增减。而当用户使用 git commit命令时,才真正地将文件的更改提交了一个版本,进入了本地仓库。以后有空的话可以画个图说明。

    这就使得有三个空间可以让我们在文件出错的情况下,进行文件版本的恢复。

    首先 本地仓库--> 工作区和缓存区

    这是比较常用到的一个功能,情况:对当前的文件进行了编辑和存入了缓存区,但是由于谁把你代码改了,或者不知道哪里出现了问题,编译不通过了,可以使用这种方法直接将代码的版本恢复到上一次,或者之前的提交的版本上,使用的命令是 git reset。命令运行的格式如下,其中主要参数有hard,soft,mix三种。下面分别分析。

    git reset --参数 HEAD(or 提交版本的hash值)
    

    对于git reset --hard这个命令将会直接改变你的工作区和缓存区,将里面的文件内容变成和之前的版本一样的内容。正是所谓一删到底,彻底地把文件恢复了。

    对于git reset --soft这个命令将会将版本库中的内容退回到你想到的版本状态,将缓存区中从你想要的版本状态后的所有文件改动标记为changes to be committed,将工作区中比缓存区中多出的文件的改动变为untracked files;

    对于git reset --mix这个命令则是系统的默认参数,它的作用是将版本库中的内容退回到你想要的版本状态,将缓存区的内容也退回到你想要的版本状态,将工作区中的内容从你想要的版本后的所有的文件更改标记为untracked files;

    看着有混乱,但是总的来说,git reset使得版本库直接回到你想要的版本状态,但hard将使得工作区和缓存区也同样回去了,而soft使得缓存区没有直接回去,而是将之后的状态标记为未提交,并将工作区中未保存的状态表示为未存储,同理,
    mix命令则将缓存区也清空到了原版本状态,而将之后的更改在工作区内表示为为存储状态。

    这里,还得说下上面提到的HEAD,HEAD指针始终指向版本库中的最新版本,所以HEAD则表示当前版本库的最新版,HEAD表示上一版本,HEAD^表示上上一版本。如果你想回到一个具体的版本,你可以使用

    git reflog
    

    命令,来查看HEAD之前的更新,进而确定要恢复到的版本。

    使用git revert就更有意思了,这个命令不是将原来的commit丢弃掉,而是接着你的commit继续往上加,如果你revert到一个版本,那么git将会从当前状态一直将你之前的更改反向地操作一遍,直到到你要回到的版本状态,并提交产生一个新的版本,该版本在形式上是和原来的版本是一样的,但是其实际上经过反向操作而形成的版本。

    所以有人很奇怪,为什么有了reset还需要revert呢,这是因为使用的场合不同,reset只是将本地的版本进行更改,如果版本没有上传到远端,可以随意修改,但是revert则是继续增加新的版本,这样就算是文件上传到了远端,revert后进行push也还是没有问题的。

    其次 缓存区--> 工作区

    这里的意思是,文件修改后,add到缓存区了,还没有提交,现在对于缓存区的文件不想要了,或者当前文件改变后不正常,想从缓存区中搞点文件下来,这里需要进行一些操作。

    对缓存区的文件的操作有一些命令,删除:

    git rm --cached files
    

    同时,如果想把文件从缓存区内拿出来,则可以使用命令:

    git checkout files
    

    最后 工作区清空

    做了半天,发现没必要,同时git也没有存入缓存区,于是,使用一个命令解决掉你痛苦的一天吧:

    git clear -df
    

    一切恢复平静。

    另外,还需要注意的git建立分支,使用ssh的操作等以后更新吧。

    6、注意及其他

    5.1 需要更改你的分支名

    一般你的文件夹下你的分支名是master,而如果你要更改分支名的话。使用以下命令。

    git branch /* 查看当前的分支 */
    git branch hello /* 创建一个名为hello的分支 */
    git checkout hello /* 将当前的分支改为hello分支 */
    

    5.2 git 报错

    (错误1) Updates were rejected because the tip of your current branch is behind its remote counterpart. Merge the remote changes (e.g. ""git pull"") before pushing again.

    解决方法: 首先在当前的project下,进行一次

    git pull  https://git.oschina.net/.../...git
    

    然后再进行commit以及push操作。

    (错误2) warning: LF will be replaced by CRLF

    解决方法: 这是由于Windows和Linux的文件结束符不一致导致的。需要删除.git,并重新配置。

    rm -rf .git  
    git config --gobal core.autocrlf false
    

    接着就可以重新 init 了。

  • 相关阅读:
    字符串常量
    二维数组中的查找
    Codeforces 156B Suspects——————【逻辑判断】
    Codeforces 156 A——Message——————【思维题】
    Codeforces 639B——Bear and Forgotten Tree 3——————【构造、树】
    Codeforces 671 A——Recycling Bottles——————【思维题】
    Codeforces 550D —— Regular Bridge——————【构造】
    Codeforces 550C —— Divisibility by Eight——————【枚举 || dp】
    codeforces 638B—— Making Genome in Berland——————【类似拓扑排序】
    codeforces 675 C ——Money Transfers——————【思维题】
  • 原文地址:https://www.cnblogs.com/nearmeng/p/4043449.html
Copyright © 2011-2022 走看看