Git工程开发实践(三)——Git常用操作

发布时间:2020-09-24 13:30:47 来源:51CTO 阅读:2646 作者:天山老妖S 栏目:软件技术

Git工程开发实践(三)——Git常用操作 一、Git仓库操作 1、Git仓库创建

git init
在当前目录中初始化Git仓库
git init [project-name]
创建一个新目录并初始化仓库
初始化git仓库会默认创建一个mater分支,创建名为.git的子目录,内含初始化Git仓库中所有的骨干文件,此时仓库中的文件还没有被跟踪。
通过git add命令来实现对指定文件的跟踪,然后执行git commit提交。

git add . git commit -m 'initial project version'

.git仓库目录如下:
A、HEAD:当前处于哪个分支
B、config:项目的配置信息
C、description:项目描述信息
D、index:索引文件(暂存区)
E、hooks/:系统默认钩子脚本目录
F、logs/:各个refs的历史信息
G、objects/:git仓库的所有对象(commit,tree,blog,tag)
H、refs/:标识目录中每一个分支指向哪个commit

2、Git仓库克隆

Git克隆仓库的命令格式: git clone [url]
当执行git clone命令的时候,默认配置下远程Git仓库中的每一个文件的每一个版本都将被拉取下来。所有本地分支默认与远程主机的同名分支,并建立追踪关系。
克隆Git的可链接库libgit2的命令如下:
git clone https://github.com/libgit2/libgit2
在当前目录下创建一个名为libgit2的目录,并在目录下初始化一个.git目录,从远程仓库拉取下所有数据放入.git目录,然后从中读取最新版本的文件的拷贝。
如果指定本地创建的仓库名字变为libgit,可以使用:
git clone https://github.com/libgit2/libgit2 libgit
git clone是一个封装了其它命令的命令,执行git clone命令会执行以下操作:创建一个新目录,切换到新的目录,然后git init来初始化一个空的Git仓库,然后为指定的URL添加一个(默认名称为origin)远程仓库(git remote add),再针对远程仓库执行git fetch,最后通过git checkout将远程仓库的最新提交检出到本地的工作目录。
git clone支持四种协议,HTTP(S)、SSH、Git、本地文件协议。
git clone -o newname [url]
从url克隆仓库时指定创建目录为newname
二、Git文件操作
1、Git文件状态

Git工程开发实践(三)——Git常用操作


Untracked: 未跟踪,文件在工作目录中,但没有加入到仓库,不参与版本控制。通过git add将状态变为Staged。
Unmodified: 文件已经加入版本库,未修改,即版本库中的文件快照内容与工作目录中完全一致。如果被修改,变为Modified;如果使用git rm移出版本库,则成为Untracked。
Modified: 文件被修改,并没有进行其它操作。通过git add可进入暂存staged状态,使用git checkout则丢弃修改,返回到unmodified状态。git checkout即从版本库中取出文件,覆盖当前修改。
Staged: 暂存状态。执行git commit则将修改同步到版本库中,此时版本库中的文件和本地文件一致,文件为Unmodified状态。执行git reset HEAD filename取消暂存,文件状态为Modified。
文件状态的查看可以使用如下命令:
git status [filename]
查看指定文件状态
git status
查看所有文件状态

2、Git添加文件与目录

git add将工作目录的变化添加到暂存区,以备下次提交。
git add [file1] [file2] ...
添加指定文件到暂存区
git add [dir]
添加指定目录到暂存区,包括子目录

git add . 添加新文件和被修改文件到暂存区,但不包括被删除文件 git add -u 提交被修改和被删除文件到暂存区,不包括新文件 git add -A 添加工作目录的所有变化到暂存区 3、Git删除文件与目录

git rm --cached <file>
直接从暂存区删除文件,工作区则不做改变
git reset HEAD <file>...
如果已经用add把文件加入暂存区,先需要从暂存区中撤销;
当执行git reset HEAD命令时,暂存区的目录树会被重写,被当前分支指向的目录树所替换,但工作区不受影响。
git clean [options]
移除所有未跟踪文件,-d表示包含目录,-f表示强制清除。
git rm filename
删除暂存区、工作目录中的文件

4、Git文件差异查看

git diff用于查看工作目录中的文件和暂存区文件的差异
git diff [files]
当暂存区中没有文件时,比较工作区中的文件与上次提交到版本库中文件的差异;当暂存区中有文件时,比较当前工作区中文件与暂存区中文件的差异。
git diff --cached
比较暂存区的文件与已经提交过的文件
git diff HEAD~n
比较某个历史版本与工作目录中的文件差异

5、Git检出

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。