Git是分布式的,这意味着它并不依赖于中心服务器,任何一台机器都可以有一个本地版本的控制系统,我们称之为仓库。如果是多人协作的话,你需要还需要一个线上仓库,用来同步信息。这就是GitHub, BitBucket的工作。git命令是一些命令行工具的集合,它可以用来跟踪,记录文件的变动。比如你可以进行保存,比对,分析,合并等等。这个过程被称之为版本控制。已经有一系列的版本控制系统,比如SVN, Mercurial, Perforce, CVS, Bitkeepe等等。
在Linux上安装
打开控制台,然后通过包管理安装
centos:yum install –y git
ubuntu:apt –get install git
在Mac上安装
OS X – 最简单的方式是使用homebrew安装,命令行执行Shell
brew install git
在Windows上安装
推荐使用git for windows,它包括了图形工具以及命令行模拟器
首先如下图:(点击next)
第二步:文件位置存储,可根据自己盘的情况安装
第三步:安装配置文件,根据自己需要的都选上,下一步
第四步:不创建启动文件夹,下一步:
然后是是否配置Path的配置,选择中间一个,可以通过 Windows命令行(CMD)调用 git 命令。 然后点击下一步
第一个不用配置path
第二个需要配置path
第三个
选择回车换行的格式。默认即可.(检出时转换为Windows风格,提交时转换为Linux风格.)
配置行结束标记,保持默认“Checkout”
默认安装
安装过程:
使用Git,桌面快捷方式界面如下,打开就可以使用
配置Git(使用了 --global 选项,那么该命令只需要运行一次)
git config --global user.name "yixuan"
git config --global user.email "yixuan@qq.com"
git 常用命令一览表
git init 初始化仓库,如果初始化成功,执行了 git init命令的目录下就会生成 .git 目录。这个 .git 目录里存储着管理当前目录内容所需的仓库数据。
git status 查看仓库的状态,工作树和仓库在被操作的过程中,状态会不断发生变化。在 Git 操作过程中时常用 git status命令查看当前状态,可谓基本中的基本。
当文件太多时,进入某个文件夹,使用git status . 可以只查看这个文件夹中的git状态。
git add 向暂存区中添加文件,如果只是用 Git 仓库的工作树创建了文件,那么该文件并不会被记入 Git 仓库的版本管理对象当中。要想让文件成为 Git 仓库的管理对象,就需要用 git add命令将其加入暂存区(Stage 或者 Index)中。暂存区是提交之前的一个临时区域。
git add xx命令可以将xx文件或目录添加到暂存区
git add -A .来一次添加所有改变的文件。注意 -A 选项后面还有一个句点. git add -A表示添加所有内容
git add . 表示添加新文件和编辑过的文件不包括删除的文件
git add -u 表示添加编辑或者删除的文件,不包括新添加的文件。
git commit 保存仓库的历史记录
格式 git commit -m description,例 git commit -m "提交描述"。windows下,请注意使用双引号,否则可能出现错误:error: pathspec 'commit'' did not match any file(s) known to git.
如果想要记述得更加详细,请不加 -m,直接执行 git commit命令。执行后编辑器就会启动。在编辑器中记述提交信息的格式如下:
第一行:用一行文字简述提交的更改内容
第二行:空行
第三行以后:记述更改的原因和详细内容
将提交信息按格式记述完毕后,请保存并关闭编辑器,以 #(井号)标为注释的行不必删除。随后,刚才记述的提交信息就会被提交。
中止提交 如果在编辑器启动后想中止提交,请将提交信息留空并直接关闭编辑器,随后提交就会被中止。
只要按照上面的格式输入,今后便可以通过确认日志的命令或工具看到这些记录。
在以 #(井号)标为注释的 Changes to be committed(要提交的更改)栏中,可以查看本次提交中包含的文件。
git 提交出现这个错误:fatal: Unable to create ‘project_path/.git/index.lock’: File exists.
解决方案:需要删除.git\index.lock,在cmder中无法删除,可以使用git bash。
git log 查看提交日志,包括可以查看什么人在什么时候进行了提交或合并,以及操作前后有怎样的差别。
只显示提交信息的第一行 可以在 git log命令后加上 --pretty=short
只显示指定目录、文件的日志 只要在 git log命令后加上目录名,便会只显示该目录下的日志。如果加的是文件名,就会只显示与该文件相关的日 志。
显示文件的改动 如果想查看提交所带来的改动,可以加上 -p 参数,文件的前后差别就会显示在提交信息之后。
查看更改前后的差别 git diff命令可以查看工作树、暂存区之间的差别。在没把文件加入暂存区时,使用git diff会显示暂存区和工作树之间的差别
及没把修改文件加入暂存区前,使用git diff进行比对,如果已经把修改的文件加入暂存区了,使用git diff是无法比对的。
查看工作树和最新提交的差别 git diff HEAD查看本次提交与上次提交之间有什么差别, HEAD 是指向当前分支中最新一次提交的指针。
即指git add添加到暂存区的文件和上次提交(工作树)文件的差别
不妨养成这样一个好习惯:在执行 git commit命令之前先执行git diff HEAD命令,查看本次提交与上次提交之间有什么差别,等确认完毕后再进行 提交。
比对文件更改前后差别,没添加暂存区时使用git diff,添加暂存区后使用git diff head
比较本地分支和远程分支的差别 git log 本地分支名.. 远程主机名/远程分支名,可以加-p参数比较具体修改
git diff命令总结:
working tree:就是你所工作在的目录,每当你在代码中进行了修改,working tree的状态就改变了。
index file:是索引文件,它是连接working tree和commit的桥梁,每当我们使用git-add命令来登记后,index file的内容就改变了,此时index file就和working tree同步了。
commit:是最后的阶段,只有commit了,我们的代码才真正进入了git仓库。我们使用git commit就是将index file里的内容提交到commit中
git diff:是查看working tree与index file的差别的。
git diff --cached:是查看index file与commit的差别的。
git diff HEAD:是查看working tree和commit的差别的。(你一定没有忘记,HEAD代表的是最近的一次commit的信息)
查看简单的diff结果,可以加上–stat参数:git diff --stat