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命令可以看到分支合并图。

原文地址:https://www.cnblogs.com/zhxling/p/5243963.html