Git 学习笔记

Git

一、Git 工作流程

img

二、Git 基本概念

img

工作区是我们当下可以看到的目录结构,暂存区存放在.git目录的index文件中,也称索引,它和分支目录一起存放在版本库中。版本库是.git目录中的隐藏目录。

如上图所示HEAD事实上是一个指向分支的指针,objects是Git的对象库。

当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

当执行提交操作git commit时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master指向的目录树就是提交时暂存区的目录树。

当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

当执行 **git rm --cached ** 命令时,会直接从暂存区删除文件,工作区则不做出改变。

当执行 git checkout . 或者 **git checkout – ** 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。

当执行 git checkout HEAD . 或者 **git checkout HEAD ** 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

三、Git 创建仓库
1.初始化方法
git init <repo>

初始化完成后当前目录会生成.git目录。

需要纳入版本控制的文件要做如下处理

git add <filename>
git commit -m 'the first version'
2.克隆方法
git clone <repo>

如果我们需要克隆到指定的目录,可以使用以下命令格式:

git clone <repo> <directory>
3.仓库的配置

git 的设置使用 git config 命令。

显示当前的 git 配置信息:

$ git config --list
credential.helper=osxkeychain
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true

编辑 git 配置文件:

$ git config -e    # 针对当前仓库 

或者:

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

设置提交代码时的用户信息:

$ git config --global user.name <name>
$ git config --global user.email <email>

如果去掉 –global 参数只对当前仓库有效。

四、Git 基本操作
1.创建仓库命令

下表列出了 git 创建仓库的命令:

命令说明
git init初始化仓库
git clone拷贝一份远程仓库,也就是下载一个项目。
2.提交与修改

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

下表列出了有关创建与提交你的项目的快照的命令:

命令说明
git add添加文件到仓库
git status查看仓库当前的状态,显示有变更的文件。
git diff比较文件的不同,即暂存区和工作区的差异。
git commit提交暂存区到本地仓库。
git reset回退版本。
git rm删除工作区文件。
git mv移动或重命名工作区文件。
3.提交日志
命令说明
git log查看历史提交记录
git blame以列表形式查看指定文件的历史修改记录
4.远程操作
命令说明
git remote远程仓库操作
git fetch从远程获取代码库
git pull下载远程代码并合并
git push上传远程代码并合并
五、Git分支管理

列出分支

$ git branch

创建分支

$ git branch <branchname>

切换分支

$ git checkout <branchname>

也可以使用以下方法快速创建分支并切换

$ git checkout -b <branchname>

删除分支

$ git branch -d <branchname>

分支合并

$ git merge

如果出现两个分支的文件内容不一致会导致合并冲突(会在文件内容上体现),就需要我们手动去修改,然后告诉Git冲突已解决,例如:

$ git status -s
UU runoob.php
$ git add runoob.php
$ git status -s
M  runoob.php
$ git commit
[master 88afe0e] Merge branch 'change_site'

六、Git 提交历史
# 会显示版本名、作者、日期等信息
$ git log

# 只显示版本名和提交注释
$ git log -oneline

# 会显示分支、合并等
git log --graph

# 逆向显示所有日志
$ git log --reverse

#只想查找指定用户的提交日志
$ git log --author=<name>

# 你要指定日期,可以执行几个选项:--since 和 --before,但是你也可以用 --until 和 --after,例如:
$ git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges

# 查看指定文件的修改记录
$ git blame <file>

七、Git 标签

-a 选项意为"创建一个带注解的标签"。 不用 -a 选项也可以执行的,但它不会记录时间、作者。

$ git tag -a v1.0 

# 已经发布版本通过提交记录添加注解
$ git log --oneline --decorate --graph

查看所有标签

$ git tag

指定标签信息命令:

git tag -a <tagname> -m ""

PGP签名标签命令:

git tag -s <tagname> -m ""

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值