首页 > 代码库 > git使用方法

git使用方法

window安装git,
  下载图形安装包,一路下一步
  下载地址: git-for-windows.github.io

  windows版git集成了一个bash,在这个shell中使用git命令

linux安装就更简单了

 

git简单使用
1 新建一个目录,进入到目录中
  git init 创建一个git仓库,成为git可以管理的仓库

2 将文件放到新建的目录中,子目录中也可以
  git add test.txt 将文件添加到仓库中
  注意: windows下不要用notepad创建一个txt文件,他会在文件头添加0xefbbbf字符,
  用notepad++ 代替记事本,保存为utf-8 without BOM

3 将文件提交到仓库中
  git commit -m "any description"


4 查看仓库当前的状态
  git status


5 查看提交版本历史记录
  git log

  40个字节的十六进制数是commit id (也就是版本号),每提交一个新版本,实际上Git就会把它们自动串成一条时间线。

6 回退版本
  git reset
  git必须知道当前版本是哪本版本,用HEAD表示当前版本,HEAD^表示上一个版本,
  HEAD^^表示上上个版本,往上多少个版本就写多少个^,或者HEAD~#,#表示多少个版本

  git reset --hard HEAD^ (--hard参数)
  git log 参看现在版本库,发现上面一个版本库没有了,那又要回到上一个版本可以吗?

  git reset --hard 哈希值的前几位
  命令窗口没有关掉可以顺着往上找,记得每次提交产生的哈希值吗,这个命令使得git会根据前几位去找版本号,可能会找到多个版本号,就无法确认了,那就多再多写几位。
  在版本之间穿梭,只需要commit id就可以。当回退到以前的版本,关闭了git bash时,git log会找不到最新版本的commit id。git 提供了一个命令git reflog记录了每一次

  的命令,就能找到每一次操作的版本号。
  git reflog

 

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

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

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

 

git原理
1 工作区
  在电脑上的方文件的目录,我新建一个test目录用git init初始化未仓库,这个目录就是工作区

2 版本库
  工作区中有一个隐藏的目录 .git , 是git的版本库
  版本库中有一个称为stage的暂存区,还有git自动创建的第一个分支master,一个指向master的HEAD指针

  把文件添加到版本库中,是分了两步:
  git add 把修改后的文件添加到暂存区中
  git commit 把暂存区中所有内容添加到仓库中的当前分支中


  文件的三种状态:
  1) 已修改,在工作区中对文件做了改动,但没有git add到暂存区中 git status 显示为红色的"modified"

  2) 已暂存,将已修改的文件放到暂存区,这个时候文件处于已暂存,git status 显示绿色的‘modified‘

  3) 已提交,所有文件git commit后,文件提交到版本库中,处于已提交状态,git status 显示nothing to commit, work tree clean

3  撤销修改
  git checkout -- test.txt 将test.txt文件在工作区的修改全部撤销,有两种情况
  1) test.txt 修改后没有放到暂存区,那就和上一次放到版本库中是一模一样的
  2) test.txt 修改后放到了暂存区后,又修改了,现在撤销就回到放入暂存区状态

  总结: 撤销总是回到上一次放到暂存区或版本库

  1 如果修改了工作区文件,想放弃工作区修改,用git checkout -- test.txt
  2 如果修改了还提交道版本库中,怎么办? 版本回退
  3 如果已经放到到暂存区,想放弃修改,怎么办? 两步 (重点)
  1) git reset HEAD test.txt
  2) 按照1来做


4  删除文件
  在目录中直接删除文件,工作目录中和版本库中不一样,git会知道删除了文件,git status告诉删了那些文件

  1) 确实要删掉版本呢库中文件 git rm,然后 git commit
  2) 如果删错了,把删掉的文件找回来, git checkout -- test.txt

  git checkout 这个命令看撤销命令,实际上是替换,将暂存区或版本库中状态替换到当前工作区

 

 

5  添加远程仓库
  github.com是对远程git仓库进行托管的网站,首先注册个账号,在github创建仓库,然后关联到本地仓库,每次将本地仓库的修改推送到github仓库中

  1) 创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,没有那就手动创建
  ssh-keygen -t rsa -C uoloc@qq.com 然后一路回车,在主目录下有.ssh目录,里面有
  id_rsa是私钥,id_ras_pub是公钥

  2) 将公钥添加到github中的SSHKey中,这个公钥是用来区分电脑的,github仓库可以关联
  多台电脑,将每个电脑的SSHKey添加进去就可以想远程推送了

  3) 将本地库关联远程库
  git remote add origin git@github.com:uolo/test.git
  origin是默认远程库的名字

  4) 把本地代码推送到远程
  git push -u origin master
  加上了-u参数,git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

  第一次使用git push或者git clone连接github时,会得到一个警告,ssh验证github
  的key的指纹是否来自github服务器,输入yes再回车就可以

 

6  从远程仓库中克隆
  git clone git@github.com:uolo/test.git 从远程test中库可容到本地
  注意 github支持的协议有多种,克隆的地址有多种,比如 https://github.com/uolo/test.git 也可以,github支持https协议,这种地址更加好记


分支管理

...


版本回退

...

 

安全隐患

git使用方法