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 仓库地址 目录名 # 克隆项目到特定目录下
- 转载请注明来源:Git的使用
- 本文永久链接地址:http://www.hongxiaowei.com/xiaowei/145.html