使用Git进行版本管理

一、Git简介

1、Git 和 SVN 比较

  • GIT是分布式的,SVN不是;
  • GIT把内容按元数据方式存储,而SVN是按文件;
  • GIT分支和SVN的分支不同,在SVN中就是版本库中的另外的一个目录;
  • GIT没有一个全局的版本号,而SVN有;
  • GIT的内容完整性要优于SVN;
  • Git 命令参考文档:http://www.runoob.com/manual/github-git-cheat-sheet.pdf

在这里插入图片描述

2、Git 安装配置

安装

配置

  • 安装好 git 后,配置用户和邮箱
  • global代表对当前的用户有效,system代表对所有的用户有效,不写代表对当前的项目有效(在linux环境下)
$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com
  • 常用的配置命令
要检查已有的配置信息: git config --list
直接查阅某个环境变量的设定:git config user.name

3、Git 工作流程(略)

4、Git 工作区–暂存区–版本库

  • 工作区:电脑里的项目目录;
  • 版本库:工作区有一个隐藏目录.git,是Git的版本库;
  • 暂存区:英文叫stage, 或index,一般存放在(.git/index)中;
  • 说明:git 中的 check 命令可能会导致暂存区和工作区的改变比较危险,谨慎使用;
    在这里插入图片描述

二、基本使用

1、git init

git init     #当前目录作为仓库
git init newrepo  #指定目录作为仓库,没有的话会创建一个

2、git add

  • 文件加入版本管理,支持单文件、多文件(之间用空格隔开)以及通配符批量 add
git add *.c          
git add README

3、git commit

git add > git commit -m '第一次版本提交'
git commit -am '备注'   #这个操作是添加提交一次性完成,不指定文件的话会添加提交所有的

4、git clone

git clone <repo>   #克隆到当前目录
git clone <repo> <directory>    #克隆到指定目录
git clone git://github.com/schacon/grit.git    #还支持 http 等协议,默认的名字为 grit 可以在后面指定名称

5、git status

  • 用来查看在你上次提交之后是否有修改,加参数 -s 能够获得简短的输出,不加则输出的信息比较详细

6、git diff

git diff  #命令显示已写入缓存与已修改但尚未写入缓存的改动的区别;
git status #显示你上次提交更新后的更改或者写入缓存的改动,git diff 显示这些改动具体是啥;

#有如下的应用:
	#查看未缓存的改动:git diff
	#查看已缓存的改动(add过的文件):git diff --cached
	#查看所有改动:git diff HEAD
	#简略显示修改信息:git diff --stat

7、git reset HEAD

  • 作用是取消之前 git add 添加

8、git rm

git rm <file>
git rm -f <file>  #强制删除,git add 之后只能强制删除,工作区和缓存区一起删除
git rm --cached <file>  #从git的缓存区删除,工作区的文件会保留,实测好像和移出版本管理是一个效果
git rm –r *  # 递归删除

9、git mv

git mv README  README.md    #必须要先添加版本管理才可以用 git 的 mv 和 rm 命令

三、分支管理

1、查看、创建、删除分支

git branch   #查看所有分支
git branch test    #创建一个分支
git branch -d test   #删除一个分支,D大写是强制删除分支

2、切换分支

  • 切换分支前一定记得提交,因为切换分支会清空暂存区,未提交的修改不会生效
git checkout master #分支切换
git checkout -b test #能够直接创建一个分支并直接切换到该分支下

3、合并分支

  • 正常合并
    git merge test此命令是将test分支合并到当前分支
  • 合并冲突
    冲突产生:主分支创建一个分支之后,主分支和分支中的同一个文件都进行了修改,则可能出现冲突
    解决方法:merge显示冲突之后,cat a.txt 查看两分支的不同之处,手动修改为相同之后,再 add commit 提交,即可完成合并

四、查看提交历史–标签

1、查看提交历史

git log 列出历史提交记录;
--oneline 选项来查看历史记录的简洁的版本;
--graph 选项查看历史中什么时候出现了分支、合并;
--reverse参数来逆向显示所有日志;
--author=Linus 指定查看某个作者的提交;
--since 和 --before, --until 和 --after 指定日期;
--no-merges 选项可以隐藏合并提交;

2、标签

  • 达到一个重要阶段,并希望永远记住那个特别的提交快照,可以使用 git tag 给它打上标签
git tag -a <tagname> -m "runoob.com标签"  #创建一个标签
git tag   #查看所有的标签

五、连接到GitHub

1、git 和 github 通过 SSH 连接

  • 使用以下命令生成SSH Key:ssh-keygen -t rsa -C "youremail@example.com"
  • 然后在 github 网站:account--settings--SSH and GPG keys 输入上个命令产生的用户目录 .ssh 目录下的 id_rsa.pub 文件中的全部内容
  • 最后用如下命令进行连接测试:ssh -T git@github.com

2、添加、查看、删除远程仓库

  • 一个仓库可以有多个别名
git remote add [shortname] [url]    添加远程仓库
git remote -v  查看当前的远程仓库
git remote rm origin2  删除远程仓库

3、提取和推送远程仓库

  • 提取远程仓库的内容:git fetch origin
  • 若远程仓库有更新,使用命令以下命令进行合并:git merge origin/master
  • 推送到远程仓库:push 前先要 commit
git add runoob-test.txt 
git commit -m "添加到远程"
git push origin master

4、其他注意事项

关于 checkout

git checkout a.txt        #是从暂存区恢复
git checkout HEAD a.txt   #是从版本库恢复数据

关于 rm 和 git rm 命令的区别

  • 普通的 rm 命令只作用于工作区;提交生效前先要通过 add 将修改放入暂存区;
  • git rm 命令作用于工作区和暂存区;

关于 git log 和 git reflog

log    #命令只能查看 commit 的记录;
reflog  #可以查看所有的记录,包括 commit、reset、merge;

本地删除文件后且进行了提交,怎么恢复

git reflog              #找到相应的 HEAD;
git reset --hard  XXXX  #通过 reset 命令恢复,其中最后的 XXXX 是 HEAD 的地址(或者键???);

关于 git pull

  • 冲突解决:将本地的内容和远程的内容改成一致的,再 add 和 commit 一下即可;
git pull = git fetch + git merge

本地删除文件后怎么从 github 恢复

git fetch origin                 # 先从远程仓库拉取;
git reset --hard origin/master    #将工作区、暂存区和本地仓库全部替换为远程仓库 origin 的 master 分支;后面如果 origin 仓库没有修改可以直接用这个命令进行恢复;

参考:http://www.runoob.com/git/git-tutorial.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值