git简单使用


1.Git安装

  • 在Linux上安装Git

先查看系统有没有安装git,如下表示没有安装

$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git

安装

新版本的Debian或Ubuntu Linux 使用sudo apt-get install git

老版本的Debian或Ubuntu Linux 使用sudo apt-get install git-core

其他Linux版本,可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./configmakesudo make install这几个命令安装就好了。

  • Moc OS 上安装Git

方案1: 安装homebrew,然后通过homebrew安装Git,具体参考homebrew文档

方案2(推荐): 安装Xcode即可,Xcode已经集成Git

  • Windows上安装Git

直接从Git官网下载安装程序,然后按默认安装即可

  • 安装完成后进行设置

进入git bash输入:

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

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


2.创建版本库

  • 概述

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

注意: 版本控制系统只能跟踪文本文件的改动,而图片丶视频丶word等二进制文件只能知道文件变动了,但是具体变动了什么内容,版本控制系统并不知道

  • 创建空目录
$ mkdir repositoryName
  • 初始化

通过git init命令把这个目录变成Git可以管理的仓库,创建完成后多了一个.git隐藏目录

$ git init
  • 把文件添加到版本库
  1. 将文件放入版本库respositoryName目录下,如readme.txt
  2. 使用命令git add把文件添加到Git仓库,没有任何显示表示添加成功
$ git add readme.txt
  1. 用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file"

-m后面输入表示本次提交的说明

可以使用git add添加多次,最后再使用git commit提交


3.版本控制

  • 常用查看命令

git status 查看仓库当前状态

git diff 查看difference

git log 查看版本提交日志

git reflog 查看你的每一次命令

  • 版本回退

git reset --hard HEAD^ 回退到上一个版本,HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^表示上上一个版本,HEAD~100表示往上100个版本

git reset --hard <commit id> 回退到指定的提交版本,commit id可以通过git loggit reflog查看

注意: 版本号commit id 只需写前几位能定位到唯一版本即可

  • 撤销修改

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

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

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

  • 删除文件

场景1: 确实要删除版本库中的文件,使用git rm <fileName>,并且git commit

场景2: 如果删除错了,可以把误删的文件恢复到最新版本,使用git checkout --<fileName>


4.远程仓库

  • 查看远程仓库

git remote 查看远程仓库信息(git中默认远程仓库名字为origin)

git remote -v 查看远程仓库详细信息

如下: fetch表示可以抓取的远程仓库,push表示可以推送的远程仓库

$ git remote -v
origin  [email protected]:michaelliao/learngit.git (fetch)
origin  [email protected]:michaelliao/learngit.git (push)
  • 添加远程仓库(Github为例)
  1. 关联Github仓库
$ git remote add origin [email protected]:yourGithubName/repositoryName.git

注意: yourGithubName是你的github账户名,repositoryName是你的github仓库名

​ 添加完成后Git中默认的远程仓库的名字就是origin

  1. 把本地仓库的内容推送到远程仓库
$ git push -u origin master

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

  • 从远程仓库上克隆
$ git clone [email protected]:yourGithubName/repositoryName.git

yourGithubName是你的github账户名,repositoryName是你的github仓库名

注意: Github给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。

使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https


5.分支管理

  • 创建分支

git checkout -b hexo 创建hexo分支并切换到hexo分支

git branch hexo               创建hexo分支
git checkout hexo          切换到hexo分支
  • 查看分支

git branch 查看所有分支,当前分支前面会有一个*

  • 合并分支
git merge hexo                把hexo分支合并到当前分支
git merge --no-ff -m "merge with no-ff" hexo    合并分支时禁用Fast forward模式

注意: Git默认使用fast forward模式,此模式下删除分之后,会丢掉分支信息

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

  • 删除分支
git branch -d hexo            删除hexo分支
git branch -D hexo            强制删除hexo分支(可不合并直接删除)
  • 推送分支

git push origin master 将本地master分支推送到远程仓库origin上的master分支

  • 抓取分支

git pull 抓取远程仓库的新提交

  • 存储工作现场

git stash 把当前工作现场存储起来

git stash list 查看存储的工作现场如stash@{0}

git stash apply                将当前的工作现场恢复到存储的工作现场
git stash apply stash@{0}     恢复到指定的工作现场

git stash drop 删除存储的工作现场

git stash pop 恢复到存储的工作现场并删除

  • Bug分支使用
git stash                    把当前工作现场存储起来,可等以后恢复现场后继续工作
git checkout -b bug01        创建一个分支bug01当作bug修复分支,然后在该分支修复bug
git checkout master            切换到master分支
git merge --no-ff -m "merged bug fix 01" bug01        删除bug01分支

6.标签管理

  • 创建标签

git tag v1.0 创建一个新标签(在当前分支的最近的commit位置)名字为v1.0

git tag <name> <commit id> 在对应的commit位置创建一个标签

  • 查看标签

git tag 查看所有标签

  • 删除标签

git tag -d v1.0 删除本地标签v1.0

git push origin :refs/tags/v1.0 删除远程仓库标签v1.0

  • 推送标签到远程仓库
git push origin v1.0            推送标签v1.0到远程仓库
git push origin --tags            推送所有标签到远程仓库

文章作者: Bryson
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Bryson !
评论
 上一篇
下一篇 
  目录