1、 Git如何工作
Git支持本地项目管理,无需配合github或者gitee使用。(最开始接触github然后使用了git ,我一直错误的认为,git得结合github才有用,所以此处强调给自己看。)
git 的三个区(三棵树)。
第一个是你的 工作区(工作目录)
,它持有实际文件(平时在里面修改代码等);
第二个是 暂存区(Stage/Index索引)
,它像个缓存区域,临时保存你的改动;(通过 git add命令,从工作区 提交到暂存区)
第三个是仓库(Repository)
, HEAD
它指向你最后一次提交的结果。
(通过 git commit 从暂存区提交到仓库区)
【如何理解repository:版本库又名仓库,英文名 repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。】
Git 保存的不是文件的变化或者差异,而是一系列不同时刻的 快照 。
2、Git常见命令
(1 )、git init —— 初始化,把这个目录变成 Git
可以管理的仓库
在项目文件夹内下执行git init 后,目录下会出现一个名为 .git 的目录,该目录包含了资源的所有元数据,其他的项目目录保持不变(不像 SVN 会在每个子目录生成 .svn 目录,Git 只在仓库的根目录生成 .git 目录)。所有 Git 需要的数据和资源都存放在这个目录中。
- cd 项目文件夹
-
- git init
查看隐藏的.git文件内容:
ll –A -a/A 表示查看隐藏文件
ll .git/ 表示查看.git 下的文件列表显
<蓝色字体的,可能表示是 可见文件,白色字体的可能表示是 隐藏文件 >
例如:查看.git/config 内容
注意:.git目录是存放本地库相关的目录和文件,不要对其进行修改和操作。
2、如何将本地项目(工作区)提交到本地库(可记录变动,如代码修改等)呢?
1、git add . #上传到暂存区,但并未提交到本地库
2、git commit # 提交到本地库,才会有变动记录
git add用法
git add . #添加文件(项目中全部文件)用. 注意add后面有空格,
git add test1.txt #添加test1.txt文件
此命令将要提交的文件的信息添加到索引库中(将修改添加到暂存区),以准备为下一次提交分段的内容。
Git add . #将当前工作区中所有的文件修改,文件新增,文件删除添加到暂存区
Git add * #将当前工作区中所有的文件修改,文件新增添加到暂存区,没有文件删除
Git add –u #将当前工作区中所有的文件修改,文件删除添加到暂存区,没有文件新增
Git add –A
git commit用法
git commit -m "代码提交信息/简短备注信息" #实际提交改动(你的改动已经提交到了 HEAD,但是还没到你的远端仓库。)
其他常见命令:
Git status:用于显示工作目录和暂存区的状态。使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。
运行git status
命令时,将看到已更改文件的列表,并以红色显示。 这表明您的工作目录(由代码编辑器中的代码表示)与索引之间存在差异,索引表示来自特定提交(最常见的是最后一次提交)的文件版本。
Git log:用于显示提交日志信息
通过如下方式更优雅的显示(查看历史记录):
git log –-pretty=oneline
Git diff: 用于显示提交和工作树等之间的更改。此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。(默认是和暂存区文件进行比较)
Git rm:用于从工作区和索引中删除文件
Git reset: 用于将当前HEAD复位到指定状态。一般用于撤消之前的一些操作(如:git add,git commit等)。
基于索引值操作[推荐]
git reset --hard [局部索引值]
【Git 必须知道当前版本是哪个版本,在 Git 中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。】
git reflog
用来记录你的每一次命令
Gitk:图形化显示,清晰明了