zoukankan      html  css  js  c++  java
  • git使用笔记

    安装git:

    在Windows上安装Git

    msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。

    安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

    install-git-on-windows

    安装完成后,还需要最后一步设置,在命令行输入:

    $ git config --global user.name "Your Name"
    $ git config --global user.email "email@example.com"
    

    因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。

    注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

    一:创建版本库的步骤:

    ①、创建一个空目录(也可以是一个已经存在的非空目录,但也要把当前操作路径转到该目录下也就是:$ cd test)

    $ git mkdir test   //创建一个空目录(test)

    $ cd test            //打开test目录

    $ pwd               //显示当前目录所在地址

    如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。

    ②、通过$ git init 命令将该目录变成git可以管理的仓库

    $ git init

    此时在当前目录下会多了一个.git的目录,这个目录是用来跟踪管理版本的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

    如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah 命令就可以看见。

    ③、把文件添加到版本库

         把你想要添加到版本库的文件(如readme.txt)放在当前(test)目录下(子目录也行)

        第一步:使用命令 $ git add <fileName>(如$ git add readme.txt ) 注意,该命令可重复使用,添加多个文件

                   如:$ git add file1.txt

                         $ git add file2.txt file3.txt

        第二步:使用命令 $ git commit -m "提交该版本的原因",完成。

    完整示例:

    二、对该目录的文件进行操作

       我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件。

      $ git status   命令可以告诉我们当前仓库的状态,是否有被修改,如果想看具体什么地方被修改过可以用$ git diff 命令

      $ git diff <file> 命令

      $ cat <file>命令可以查看当前文件的内容

      修改完成确定无误后可提交到本地仓库,使用 git add <file>, git commit

      

    小结

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

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

    三、版本回退

    ①、HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

         首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就  是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

    $ git reset --hard HEAD^ 回退到上一个版本
    $ git reset --hard 未来版本Id 回到未来的版本

    ②穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

    ③要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

    四、工作区和暂存区

        我们在电脑里操作的目录文件就是工作区,

    工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

    Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

    git-repo

    分支和HEAD的概念我们以后再讲。

    前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

    第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

    第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

    因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

    $ git diff HEAD -- <file>命令可以查看工作区和版本库里面最新版本的区别:

    文件每次修改,如果不add到暂存区,那就不会加入到commit中。

    $ git status 命令可以看到工作区和暂存区的状态,是否有被修改;

    Administrator@WIN-BUR58HCGOTD MINGW32 ~/learngit (master)
    $ git status
    On branch master
    Changes not staged for commit:    //说明暂存区的状态,这句话表明暂存区没有任何文件,若为(Changes to be committed:),则说明暂存区有文件

    (use "git add <file>..." to update what will be committed)
    (use "git checkout -- <file>..." to discard changes in working directory)

    modified: readme.txt                //说明工作区的状态,readme.txt文件有被修改

    no changes added to commit (use "git add" and/or "git commit -a")

    五、撤销修改

    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- <file>

    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

    六、删除文件

      场景一: $ rm <file>  在工作区中删除文件,相当于在工作区修改了文件

                  如果还没将该删除提交到state(暂存区),想要恢复删除的文件,可以用 $ git checkout --<file>

      场景二:$ git rm <file> 在工作区中删除了文件,并将 该删除提交到了state(暂存区),此时想要恢复该被删除的文件,分两步,第一步用命令 git reset HEAD <file>,就回到              了场景一,第二步按场景一才操作

      注意:命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改           的内容

    远程仓库

    在继续阅读后续内容前,请自行注册GitHub账号。由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:

    第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

    $ ssh-keygen -t rsa -C "youremail@example.com"

    你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

    如果一切顺利的话,可以在用户(C:UsersAdministrator)主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

    第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:

    然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

    github-addkey-1

    点“Add Key”,你就应该看到已经添加的Key:

    github-addkey-2

    为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

    当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

    最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。

    一、添加远程仓库

    首先在github创建一个和本地仓库相同名称的空仓库,

    然后将一个已有的相同名称本地仓库与之关联,用命令:$ git@github.com:zhxling/learngit.git  将zhxling换成你自己的GitHub账户名

    关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

                由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的                 master分支关联起来,在以后的推送或者拉取时就可以简化命令。

    此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

    二、从远程库克隆

          要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。如:

           $ git clone git@github.com:zhxling/2048.git

          Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

    分支管理

      一、创建与合并分支:      

              查看分支:git branch

              创建分支:git branch <name>

              切换分支:git checkout <name>

              创建+切换分支:git checkout -b <name>

              合并某分支到当前分支:git merge <name>

              删除分支:git branch -d <name>

    二、解决冲突

    当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

    git log --graph命令可以看到分支合并图。

  • 相关阅读:
    jQuery(Ajax)
    博文相关接口
    登录接口设计和实现
    CSS-层叠样式表
    Google Kaptcha 生成图形验证码
    IDEA中如何修改生成javadoc里默认的author
    maven项目resources文件在target找不到
    IDEA 获取 resources 下的文件
    免安装版 mysql5.7.zip 的配置记录
    从前端模块化 到 webpack 再到使用 vue文件
  • 原文地址:https://www.cnblogs.com/zhxling/p/5243963.html
Copyright © 2011-2022 走看看