Git 学习笔记

目录

安装配置

windows安装

配置

用户信息

查看配置信息

工作流程

工作区、暂存区和版本库 

创建仓库

git init

使用方法

git clone

 配置

基本操作

 创建仓库命令

 提交与修改

提交日志

 远程操作

分支管理 

查看提交历史

标签 

                  用户信息

查看配置信息

工作流程

工作区、暂存区和版本库 

创建仓库

git init

使用方法

git clone

 配置

基本操作

 创建仓库命令

 提交与修改

提交日志

 远程操作

分支管理 

查看提交历史

标签 


安装配置

windows安装

有个叫做 msysGit 的项目提供了安装包,可以到 GitHub 的页面上下载 exe 安装文件并运行:

安装包下载地址:Git for Windows

官网慢,可以用国内的镜像:CNPM Binaries Mirror

配置

Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。

这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:

  • /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
  • ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
  • 当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

 Windows 系统上,Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings\$USER。

此外,Git 还会尝试找寻 /etc/gitconfig 文件,只不过看当初 Git 装在什么目录,就以此作为根目录来定位。

用户信息

$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。

如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

查看配置信息

git config --list 
$ git config --list
http.postbuffer=2M
user.name=runoob
user.email=test@runoob.com

有时候会看到重复的变量名,那就说明它们来自不同的配置文件(比如 /etc/gitconfig 和 ~/.gitconfig),不过最终 Git 实际采用的是最后一个。这些配置我们也可以在 ~/.gitconfig 或 /etc/gitconfig 看到,如下所示:

vim ~/.gitconfig
[http]
    postBuffer = 2M
[user]
    name = runoob
    email = test@runoob.com

也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可,像这样:

git config user.name

工作流程

工作区、暂存区和版本库 

  • 工作区就是你在电脑里能看到的目录
  • 暂存区英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
  • 版本库工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库

  •  图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage/index),标记为 "master" 的是 master 分支所代表的目录树
  • 图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换
  • 图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容
  • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中
  • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树
  • 当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响
  • 当执行 git rm --cached <file> 命令时,会直接从暂存区删除文件,工作区则不做出改变
  • 当执行 git checkout . 或者 git checkout -- <file> 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动
  • 当执行 git checkout HEAD . 或者 git checkout HEAD <file> 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动

创建仓库

git init

Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变

使用方法

使用当前目录作为 Git 仓库,我们只需使它初始化。

git init

该命令执行完后会在当前目录生成一个 .git 目录。使用我们指定目录作为Git仓库。

git init newrepo

初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。

如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:

git add *.c
git add README
git commit -m "提交说明"

 以上命令将目录下以 .c 结尾及 README 文件提交到仓库中。

git clone

我们使用 git clone 从现有 Git 仓库中拷贝项目(类似 svn checkout)。克隆仓库的命令格式为:

git clone <repo>
git clone <repo> <directory>  # 克隆到指定的目录 repo为git仓库 directory为本地目录

 配置

git 的设置使用 git config 命令,显示当前的 git 配置信息。编辑 git 配置文件:

git config -e    # 针对当前仓库 
git config -e --global   # 针对系统上所有仓库

基本操作

Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。

Git 常用的是以下 6 个命令:git clonegit pushgit add 、git commitgit checkoutgit pull 

  •  workspace:工作区
  • staging area:暂存区/缓存区
  • local repository:版本库或本地仓库
  • remote repository:远程仓库
git init    # 初始化仓库
git add .   # 添加文件到暂存区
git commit  # 将暂存区内容添加到仓库中

 创建仓库命令

git init    # 初始化仓库
git clone   # 拷贝一份远程仓库,也就是下载一个项目

 提交与修改

git add .    # 添加文件到暂存区
git status   # 查看仓库当前的状态,显示有变更的文件
git diff     # 比较文件的不同,即暂存区和工作区的差异
git commit   # 提交暂存区到本地仓库
git reset    # 回退版本
git rm       # 将文件从暂存区和工作区中删除
git mv       # 移动或重命名工作区文件

提交日志

git log            # 查看历史提交记录
git blame <file>   # 以列表形式查看指定文件的历史修改记录

 远程操作

git remote    # 远程仓库操作
git fetch     # 从远程获取代码库
git pull      # 下载远程代码并合并
git push      # 上传远程代码并合并

分支管理 

几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

git branch                        # 列出分支
git branch (branchname)           # 创建分支
git checkout (branchname)         # 切换分支
git merge                         # 合并分支
git branch -d (branchname)        # 删除分支

git checkout -b (branchname)      # 创建新分支并立即切换到该分支

查看提交历史

git log            # 查看历史提交记录
git log --oneline  # 查看历史记录的简洁的版本
git log --graph    # 查看历史中什么时候出现了分支、合并
git log --reverse  # 参数来逆向显示所有日志
git log --author=  # 查找指定用户的提交日志
git log --before={3.weeks.ago}  # 查找指定日期的提交日志
git log --after={2010-04-18}
git log --since
git log --until
git log --no-merge # 隐藏合并提交

git blame <file>   # 以列表形式查看指定文件的历史修改记录

标签 

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。-a 选项意为"创建一个带注解的标签"。 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。

当你执行 git tag -a 命令时,Git 会打开你的编辑器,让你写一句标签注解,就像你给提交写注解一样。

git tag -a v1.0                # 打标签
git log --oneline --decorate   # 查看标签
git tag -a v0.9 85fc7e7        # 补充标签

git tag                                    # 查看标签
git show <tagname>                         # 查看标签信息
git tag -a <tagname> -m "runoob.com标签"   # 指定标签信息
git tag -s <tagname> -m "runoob.com标签"   # PGP签名标签
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值