Git---版本控制器(本地仓库操作)

git-分布式版本控制器

分布式和集中式的区别:
集中式版本控制:版本库集中在一台服务器上,每次开发都需要先从服务器上获取最新版本,开发完成需要提交再把新的版本发回服务器。例如SVN。
分布式版本控制:本地电脑中有一份完整的版本库,需要多人合作时只需把自己修改的推送到服务器上,对方拉取就好。

有不知道的命令可以查阅手册:Git命令的使用手册(verb为需要查找的命令)

$ git help <verb>
$ git <verb> --help
$ man git-<verb>

Git仓库生成

每次的修改都是版本的更新,所以我们需要一个版本库来记录这些信息。

$ git init
# Git初始化的命令,用于新建版本库

执行初始化命令后,目录中会产生新的目录

.git/

这个版本库会默认记录当前目录中任何文件的改动。如果删除这个版本库,之前记录的信息都会缺失。


上文已经提到如何在现有目录初始化仓库。如果想要获得一份已经存在了的Git仓库拷贝,就要用git clone命令,克隆的是该Git仓库服务器上的几乎所有数据。执行时,默认配置下远程Git仓库中的每一个文件的每个版本都会被拉取下来。

$ git clone [url]

如果想在克隆远程仓库时自定义本地仓库文件,则使用命令

$ git clone [url] [自定义名字]

本地Git仓库操作

基本本地Git仓库概念了解

工作目录下的文件只有两个状态:已跟踪和未跟踪。(是否add)

检查当前文件状态

$ git status
$ git status -s || git status --short  //更为紧凑的提示

显示情况:

  • 工作目录很干净,在上次提交代码后没更新过

    On branch [分支名]
    nothing to commit,working directory clean
    
  • 有未跟踪的文件(新建了文件)

    On branch [分支名]
    Untracked files:(......)
    
  • 有文件处于暂存状态

    On branch [分支名]
    Changes to be committed:(处于暂存状态的文件...)
    

Git本地仓库有三种状态

  • 已提交(committed)– 数据已经安全的保存在本地数据库中
  • 已修改(modified)– 修改了文件但还没保存在数据库中
  • 已暂存(staged) – 对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中

Git三个本地工作区域

  • Git仓库 - Git 用来保存项目的元数据和对象数据库的地方
  • 工作目录 - 对项目的某个版本独立提取出来的内容
  • 暂存区域 - 是一个文件,保存了下次将提交的文件列表信息

基本Git工作流程:

  1. 在工作目录中修改文件。(编写代码)
  2. 暂存文件,将文件的快照放入暂存区域。(暂存代码)
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。(提交更新代码)

(本地磁盘–>暂存区域–>本地Git仓库)

跟踪新文件或者把已跟踪的文件放到暂存区(添加内容到下一次提交中)

$ git add 文件名
提交更新(放在暂存区域的快照)
$ git commit //启动编辑器输入提交说明
$ git commit -m '注释'
$ git commit -a -m '注释'  //调过使用暂存区域,把所有已跟踪的文件的更新直接提交到本地仓库

额外一些附属操作

移除文件
git rm 文件名   //连带从工作目录中删除
git rm --cached 文件名  //删除Git仓库中(包括暂存区域)的文件,但是不删除工作目录里的文件
查看提交历史
$ git log //按提交时间列出所有的更新,最近的更新排在最上面
$ git log -p //显示每次提交的内容差异
$ git log -2 //最近两次的提交
$ git log --stat //简略的统计信息

比较工作目录中 当前文件(还未在暂存区域的) 和 暂存区域 快照(已经add的,并非上次提交的)之间的差异

$ git diff

查看已暂存的将要添加到下次提交里的内容

$ git diff --cached

忽略无需加入Git管理的文件
创建 .gitignore的文件,列出要忽略的文件模式

撤销操作

有时提交完了才发现有几个文件没加,或者注释写错了(像我经常觉得自己注释写的不好。。),可以尝试重新提交。

$ git commit --amend

来个例子

$ git commit -m '第一次提交信息xxxxx'  //先提交了
$ git add aaa.js   //发现有个文件没提交,加进去
$ git commit --amend  //重新提交,覆盖上一次的提交

不过讲道理我是不建议取消的。宁愿重新commit。特别害怕数据丢失。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值