https://git-scm.com/book/zh/v2
git与其它版本控制工具最大的不同:
1
git保存的是每个文件的快照,当文件有修改时,保存一份新的快照以及这个快照的索引;
不同版本都存在一份当前版本所有文件的快照;
当需要对比的时候,是对比快照;
而其他的版本控制工具,每个版本中保存的是diff文件。
2
分布式版本控制系统与集中式版本控制系统,分布式版本控制系统在每台主机上都存储了完整的版本信息,不需要网络也可以完成大部分的操作,如版本对比,局域网代码库管理等。
基本的 Git 工作流程如下:
-
在工作目录中修改文件。
-
暂存文件,将文件的快照放入暂存区域。//命令:git add
-
提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。//命令:git commit 或者可以跳过步骤2,使用git commit -a 暂存和提交所有有更新的文件
-
推送到远程仓库。// 命令:git push [remote-name] [branch-name]
-
可以通过命令 git status查看当前git仓库的状态。
-
删除文件(本地删除后,使用git rm filename将删除信息添加到暂存区域,之后git commit就可以提交删除了)
.git 目录:
config
文件包含了项目特有的配置选项,info
目录保存了一份不希望在 .gitignore
文件中管理的忽略模式 (ignored patterns) 的全局可执行文件。hooks
目录保存了客户端或服务端钩子脚本。
HEAD
及 index
文件,objects
及 refs
目录是 Git 的核心部分。
objects
目录存储所有数据内容
refs
目录存储指向数据 (分支) 的提交对象的指针
HEAD
文件指向当前分支
index
文件保存了暂存区域信息。
常用命令
- git add file1 // 添加file1到暂存区,git add * 可以添加当前目录下所有有修改或新增的文件到暂存区
- git commit -a -m "commit file" //提交暂存区的修改到git库
- git status // git库的状态
- git branch test // 创建test分支
- git branch -d test// 删除test分支,-d只能删除已经被当前分支合并的分支,-D可以用来强制删除
- git checkout test //切换到test分支
- git merge -m "merge branch-test to master" test //将test分支的修改merge到主线
- git init // 将一个目录git初始化
- git clone url // 从远程仓库下载
- git remote add origin url //将本地仓库与远程仓库关联,origin为远程仓库名,可以修改,rul是远程仓库地址,如https://github.com/testGit/project.git
- git push origin master // 将本地仓库同步到远程仓库
- git log //查看commit历史,回车往下翻,q退出,具体参数参考 git help log
- git diff // 比较修改或提交的文件内容,git diff --cached 可以查看暂存区与上次提交之间的差别
- git pull url 分支名 // 将url对应的git库的某个分支合并到当前分支中 (如果没有url和分支名,默认clone源为远程仓库)
- git tag 别名 commit号 // 给某个commit号码取别名,方便操作
- git reset --hard 6fcfc89(commit号码前8位,可以使用git reflog查看)或者 git reset --hard HEAD^ //回退git库到某个版本或者上一个版本(^标示向前一个,^^标示向前两个)