就是你平时存放项目代码的地方
暂存区是工作区用来提交更改(commit)前可以暂存工作区的变化(用于临时存放你的改动),事实上它只是一个文件,保存即将提交到文件列表信息
安全存放数据的位置,这里面有你提交到所有版本的数据,受版本控制
三者也可以如下理解,
(1)在工作目录中添加、修改文件;
(2)将需要进行版本管理的文件放入暂存区域;(git add file)
(3)将暂存区域的文件提交到git仓库。(git commit -m "描述信息")
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
git reset --files 用来撤销最后一次git add files,你也可以用git reset撤销所有暂存区域文件。(操作对象是HEAD)
git checkout --file 把文件从暂存区域复制到工作目录,用来丢弃本地修改。
1.git config -l |
(也可以是git config --list,查看现在的git环境详细配置)
查看不同级别的配置文件
#查看系统config git config --system --list #查看当前用户(global)配置 git config --global --list |
2.git config --global user.name "your name"
git config --global user.email "your email"
|
(设置你的用户名称和e-mail地址)
注意:传递了--global 选项,就可以只做一次这个设置,处理你在系统中所做的一切操作。如果你希望在一个特定的项目中使用不同的名称或e-mail地址,你可以在该项目中运行该命令而不要--global选项。 总之--global为全局配置,不加为某个项目的特定配置。
3.git config [--local|--global|--system] section.key value git config [--local|--global|--system] --unset section.key |
(添加、删除配置项 )
(a)创建全新仓库
# 在当前目录新建一个Git代码库
$ git init
|
当然如果使用如下命令,可以把创建目录与仓库一起完成:
|
(b)克隆远程仓库
# 克隆一个项目和它的整个代码历史(版本信息)
|
比如我们要克隆的远程仓库托管在github上,地址为:https://github.com/liyifeng1994/ssm.git
版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态
git add
状态变为Staged
.Modified
. 如果使用git rm
移出版本库, 则成为Untracked
文件git add
可进入暂存staged
状态, 使用git checkout
则丢弃修改过, 返回到unmodify
状态, 这个git checkout
即从库中取出文件, 覆盖当前修改git commit
则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify
状态. 执行git reset HEAD filename
取消暂存, 文件状态为Modified
4.2.2
#查看指定文件状态
git status [filename]
#查看所有文件状态
git status
|
# 添加指定文件到暂存区
$ git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
$ git add [dir]
# 添加当前目录的所有文件到暂存区
$ git add .
|
当执行如下命令时,会直接从暂存区删除文件,工作区则不做出改变(停止跟踪文件但不删除)
#直接从暂存区删除文件,工作区则不做出改变
git rm --cached <file>
|
移除所有未跟踪文件
#移除所有未跟踪文件
#一般会加上参数-df,-d表示包含目录,-f表示强制清除。
git clean [options]
|
#只从stage中删除,保留物理文件
git rm --cached readme.txt
#不但从stage中删除,同时删除物理文件
git rm readme.txt
#把a.txt改名为b.txt
git mv a.txt b.txt
|
#显示WorkSpace中的文件和暂存区文件的差异
git diff [files]
|
---a表示修改之前的文件,+++b表示修改后的文件
#比较暂存区的文件与之前已经提交过的文件
git diff --cached
#比较repo与工作空间中的文件差异
git diff HEAD~n
|
如果仓库中已经存在文件f4.txt,在工作区中对f4修改了,如果想撤销可以使用checkout,签出覆盖
检出命令git checkout是git最常用的命令之一,同时也是一个很危险的命令,因为这条命令会重写工作区
#用暂存区中filename文件来覆盖工作区中的filename文件。相当于取消自上次执行git add filename以来(如果执行过)的本地修改
$ git checkout -- filename
|
通过add只是将文件或目录添加到了index暂存区,使用commit可以实现将暂存区的文件提交到本地仓库。
# 提交暂存区到仓库区
$ git commit -m [message]
# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]
# 提交工作区自上次commit之后的变化,直接到仓库区,跳过了add,对新文件无效
$ git commit -a
# 提交时显示所有diff信息
$ git commit -v
|
#撤销上一次的提交 |
#查看提交历史
git log
#查看指定文件的提交历史
|
如果文件还是未跟踪状态,直接删除文件
删除已提交文件,-f 强制删除,物理删除了,同时删除工作区和暂存区中的文件
#撤销删除 git checkout -- <file>... |
分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
# 列出所有本地分支
$ git branch
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
# 新建一个分支,并切换到该分支 $ git checkout -b [branch] # 切换到指定分支,并更新工作区
$ git checkout [branch-name]
# 切换到上一个分支
$ git checkout -
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
|
通过命令行可以深刻的理解Git,Git GUI或IDE插件却可以更加直观操作Git,常用的Git GUI有如下这些
由全球开发人员交友俱乐部提供的强大工具
老牌的Git GUI管理工具了,也号称是最好用的Git GUI工具。强大,功能丰富,基本操作和高级操作都设计得非常流畅,适合初学者上手,支持Git Flow。
小乌龟,SVN的超广泛使用也使得这个超好用的Svn客户端成了几乎每个开发人员的桌面必备软件。小乌龟只提供Windows版本,提供中文版支持的。
-------------此次博客就写完了,虽然总结的内容很多,写的也很累,但收获颇多,使自己又掌握新的一项技能,最后相信,一分耕耘一分收获。
原文:https://www.cnblogs.com/jyd0124/p/git1.html