Git的使用

Git的四个组成部分

文件的几个状态

按大类划分,分为两种状态:

1、Tracked(已跟踪)

2、Untracked(未跟踪)

流程简述:

假设某个项目已加入版本控制系统

1.新建一个文件,该文件处于 Untracked 状态;

2.通过git add命令添加到缓存区,此时文件处于Tracked状态又或者说此时这个文件已经被版本控制系统所跟踪,而且他处于Staged(暂存)状态;

3.通过git commit命令把暂存区的文件提交提交到本地仓库,此时文件处于Unmodified(未修改)状态;

4.此时如果去编辑这个文件,文件又会变成Modified(修改)状态;

每次Commit时仓库中的数据结构

分为四个对象:

blob对象:存放文件数据;

tree对象:目录,内容为blob对象的指针或其他tree对象的指针

commit对象:快照,包含指向前一次提交对象的指针,commit相关的信通过索引找到文件快照。

tag对象:一种特殊的commit对象,一般对某次重要的commit加TAG,以示重要(方便找)

本地操作命令 

1.相关配置【git config】

区分global 和 local,前者代表 全局设置,就是设置了在整个系统中,

所有的带Git版本管理的项目都是这样的配置;后者代表 本地设置 即在某个项目

中独立的设置,后者优先级高于前者。比如全局设置的用户名是”Coder-pig”,本地

设置的是”Jay”,commit的时候author就是Jay而不是Coder-pig。

处理命令行,还可以直接修改对应文件:

全局配置文件:~/.gitconfig

本地配置文件:当前仓库/.git/config

# 安装完Git后第一件要做的事,设置用户信息(global可换成local在单独项目生效):

git config --global user.name "用户名" # 设置用户名

git config --global user.email "用户邮箱"   #设置邮箱

git config --global user.name   # 查看用户名是否配置成功

git config --global user.email   # 查看邮箱是否配置

# 其他查看配置相关

git config --global --list  # 查看全局设置相关参数列表

git config --local --list # 查看本地设置相关参数列表

git config --system --list # 查看系统配置参数列表

git config --list  # 查看所有Git的配置(全局+本地+系统)

获取帮助【git help】

git help 命令   # 如:git help init

创建本地仓库【git init】

git init 仓库名 # 创建一个新的带Git仓库的项目

git init # 为已存在的项目生成一个Git仓库

添加文件到暂存区/文件跟踪标记【git add】

可以使用git add 文件名,将工作空间的文件添加到暂存区,或批量添加文件

git add 文件名 # 将工作区的某个文件添加到暂存区  

git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件

git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件

git add . # 将当前工作区的所有文件都加入暂存区

git add -i # 进入交互界面模式,按需添加文件到缓存区 

让Git不Tracked特定文件【.gitignore文件配置】

将未tracked的文件添加到缓存区后,Git就会开始跟踪这个文件了!

对于一些比如:自动生成的文件,日志,临时编译文件等,就

没必要进行跟踪了,这个时候可以编写.gitignore文件,在里面

把不需要跟踪的文件或文件夹都写上,git就不会对这些文件进行跟踪!

另外.gitignore文件与.git文件夹在同级目录下!

如果不想自己写,可以直接到:https://github.com/github/gitignore 复制粘贴!

将暂存区内容提交到本地仓库【git commit】

git commit -m “提交说明” # 将暂存区内容提交到本地仓库

git commit -a -m “提交说明” # 跳过缓存区操作,直接把工作区内容提交到本地仓库

如果不加-m “提交说明”,git会让用你让默认编辑器(如vi)来编写提交说明

查看工作区与缓存区的状态【git status】

git status # 查看工作区与暂存区的当前情况

git status -s # 让结果以更简短的形式输出

差异对比(内容变化)【git diff】

git diff # 工作区与缓存区的差异

git diff 分支名 #工作区与某分支的差异,远程分支这样写:remotes/origin/分支名

git diff HEAD  # 工作区与HEAD指针指向的内容差异

git diff 提交id 文件路径 # 工作区某文件当前版本与历史版本的差异

git diff --stage # 工作区文件与上次提交的差异(1.6 版本前用 --cached)

git diff 版本TAG # 查看从某个版本后都改动内容

git diff 分支A 分支B # 比较从分支A和分支B的差异(也支持比较两个TAG)

git diff 分支A...分支B # 比较两分支在分开后各自的改动

# 另外:如果只想统计哪些文件被改动,多少行被改动,可以添加 –stat 参数

查看历史提交记录【git log】

git log # 查看所有commit记录(SHA-A校验和,作者名称,邮箱,提交时间,提交说明)

git log -p -次数 # 查看最近多少次的提交记录

git log --stat # 简略显示每次提交的内容更改

git log --name-only # 仅显示已修改的文件清单

git log --name-status # 显示新增,修改,删除的文件清单

git log --oneline # 让提交记录以精简的一行输出

git log –graph –all --online # 图形展示分支的合并历史

git log --author=作者  # 查询作者的提交记录(和grep同时使用要加一个--all--match参数)

git log --grep=过滤信息 # 列出提交信息中包含过滤信息的提交记录

git log -S查询内容 # 和--grep类似,S和查询内容间没有空格

git log fileName # 查看某文件的修改记录,找背锅专用

查看某行代码是谁写的【git blame】

推送本地仓库到远程仓库【git push】

首先建立好与本地仓库同名的远程仓库,然后复制下远程仓库的地址,比如:

git remote add origin https://github.com/xiaoweihong/gitlearn.git

键入下述命令关联本地与远程仓库

git remote add origin 远程仓库地址

可以键入下述命令可查看远程仓库状况

接着把本地仓库推送到远程仓库,这里的 -u参数 作为第一次提交使用,

作用是把本地master分支和远程master分支关联起来(设置默认远程主机),

后续提交不需要这个参数!

另外,如果想修改远程仓库地址,可键入:

git remote set-url origin 远程仓库地址

# 也可以先删除origin后再添加

git remote rm origin    # 删除仓库关联

git remote add origin 远程仓库地址 # 添加仓库关联

克隆远程仓库【git clone】

把项目推送到远程仓库后,其他开发者就可以把项目clone到本地

git clone 仓库地址 # 克隆项目到当前文件夹下

git clone 仓库地址 目录名 # 克隆项目到特定目录下
0
如无特殊说明,文章均为本站原创,转载请注明出处
  • 转载请注明来源:Git的使用
  • 本文永久链接地址:http://www.hongxiaowei.com/xiaowei/145.html

该文章由 发布

这货来去如风,什么鬼都没留下!!!