目录
git的相关资料:
git
git-简明指南
git教程
Git Community Book 中文版
什么是Git
Git
是Linux
之父Linus Trovalds
,为管理Linux
内核代码而建立的,被认为是分布式``版本控制工具
中的顶级水准。==智能、友好、强健、高效。==
Git使用40个16进制的字符SHA-1 Hash来唯一标识对象,如
e98757d0598ab6eeaf1df0d87dd008260448bd80b
每一个“对象名”都是对“对象”内容做SHA1哈希计算得来的,(SHA1是一种密码学的哈希算法)。这样就意味着两个不同内容的对象不可能有相同的“对象名”。
git
的概念里总共有四种对象(object):
blob
:用来存储文件数据,通常是一个文件。(文本文件,二进制文件、链接文件)tree
(目录)commit
:一个“commit”只指向一个”tree”,它用来标记项目某一个特定时间点的状态。它包括一些关于时间点的元数据,如时间戳、最近一次提交的作者、指向上次提交(commits)的指针等等。(历史提交)tag
一个“tag”是来标记某一个提交(commit) 的方法。(指向一个固定的历史提交)
更详细的对象信息参考:
Git Community Book 中文版
配置环境
##### 查看本机的git
$which -a git
/usr/bin/git /*系统自带的git*/
/usr/local/git/bin/git
$git --version
git version 2.6.4 (Apple Git-63)/*系统自带的git*/
Git目录
Git目录
是为你的项目存储所有历史和元信息的目录 – 包括所有的对象(commits,trees,blobs,tags), 这些对象指向不同的分支。
这个叫.git
的目录在你项目的根目录下(这是默认设置,但并不是必须的). 如果你查看这个目录的内容, 你可以看所有的重要文件:每一个项目只能有一个Git目录
$>tree -L 1
.
|-- HEAD # 这个git项目当前处在哪个分支里
|-- config # 项目的配置信息,git config命令会改动它
|-- description # 项目的描述信息
|-- hooks/ # 系统默认钩子脚本目录
|-- index # 索引文件
|-- logs/ # 各个refs的历史信息
|-- objects/ # Git本地仓库的所有对象 (commits, trees, blobs, tags)
`-- refs/ # 标识你项目里的每个分支指向了哪个提交(commit)。
工作目录
Git
的工作目录
存储着你现在签出(checkout)来用来编辑的文件. 当你在项目的不同分支间切换时, 工作目录里的文件经常会被替换和删除. 所有历史信息都保存在 Git目录
中 ; 工作目录只用来临时保存签出(checkout) 文件的地方, 你可以编辑工作目录的文件直到下次提交(commit)为止.
配置环境
如果要设置安装的Git
我暂时还是选着系统自带的把
git下载地址
$vim .bash_profile
...
exoirt PATH=/usr/local/git/bin:$PATH
...
$source .bash_profile
Git常用命令
基础命令
clone 克隆远程仓库
init 初始化仓库
remote 连接远程仓库
pull 从远程仓库下拉获取新数据
push 将本地仓库新增或修改文件上传到远程仓库
add 添加文件或者修改文件,commit以及push之前使用
log 当前仓库提交过的日志信息
status 当前仓库版本状态
commit 提交到当前仓库中
branch 分支命令,相关增删查操作
checkout 使用远程仓库最后一个版本完全覆盖当前仓库内容/选择分支branch
diff 对比版本内容
merge 合并版本内容
输入完成之后可以输入如下命令查看用户信息:
$git config --list
初始化配置
#配置使用git仓库的人员姓名
$git config --global user.name "Your Name Comes Here"
#配置使用git仓库的人员email
$git config --global user.email you@yourdomain.example.com
#配置到缓存 默认15分钟
$git config --global credential.helper cache
#修改缓存时间
$git config --global credential.helper 'cache --timeout=3600'
$git config --global color.ui true
$git config --global alias.co checkout
$git config --global alias.ci commit
$git config --global alias.st status
$git config --global alias.br branch
$git config --global core.editor "mate -w" # 设置Editor使用textmate
$git config -1 #列举所有配置
#用户的git配置文件~/.gitconfig
输入完成之后可以输入如下命令查看用户信息:
$git config --list
查看、添加、提交、删除、找回,重置修改文件
$git help <command> # 显示command的help
$git show # 显示某次提交的内容
$git show $id
#git co -- <file> # 抛弃工作区修改
$git co . # 抛弃工作区修改
$git add <file> # 将工作文件修改提交到本地暂存区
$git add . # 将所有修改过的工作文件提交暂存区
$git rm <file> # 从版本库中删除文件
$git rm <file> --cached # 从版本库中删除文件,但不删除文件
$git reset <file> # 从暂存区恢复到工作文件
$git reset -- . # 从暂存区恢复到工作文件
$git reset --hard # 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改
$git ci <file>
$git ci .
$git ci -a # 将git add, git rm和git ci等操作都合并在一起做
$git ci -am "some comments"
$git ci --amend # 修改最后一次提交记录
$git revert <$id> # 恢复某次提交的状态,恢复动作本身也创建了一次提交对象
$git revert HEAD # 恢复最后一次提交的状态文
查看文件diff
$git diff <file> # 比较当前文件和暂存区文件差异
$git diffgit diff <$id1> <$id2> # 比较两次提交之间的差异
$git diff <branch1>..<branch2> # 在两个分支之间比较
$git diff --staged # 比较暂存区和版本库差异
$git diff --cached # 比较暂存区和版本库差异
$git diff --stat # 仅仅比较统计信息文
常用命令参考资料
git 命令整理
Git 常用命令整理
Git命令速查表
生成SSH Key
$ssh-keygen -t rsa -C "mayuanyi853@163.com"
GitHub 上的设置页面,点击最左侧 SSH and GPG keys :
点击右上角的 New SSH key 按钮:
需要做的只是在 Key 那栏把 id_rsa.pub 公钥文件里的内容复制粘贴进去就可以了(上述示例为了安全粘贴的公钥是无效的),Title 栏不需要填写,点击 Add SSH key 按钮就ok了。
查看 id_rsa.pub 文件的内容,执行以下命令:
““
$cd ~/.ssh
$cat id_rsa.pub
SSH key 添加成功之后,输入 **ssh -T git@github.com** 进行测试,如果出现以下提示证明添加成功了。
$ssh -T git@github.com
##### Git仓库
$git init
$git clone
用命令行创建一个新的存储库
```bash
$echo "# LearnToISO" >> README.md
$git init
$git add README.md
$git commit -m "first commit"
$git remote add origin https://github.com/mayuanyi853/LearnToISO.git
$git push -u origin master
命令行上一个现有的存储库
$git remote add origin https://github.com/mayuanyi853/LearnToISO.git
$git push -u origin master