Git和github

git的相关资料:

git
git-简明指南
git教程
Git Community Book 中文版

什么是Git

GitLinux之父Linus Trovalds,为管理Linux内核代码而建立的,被认为是分布式``版本控制工具中的顶级水准。==智能、友好、强健、高效。==
Git使用40个16进制的字符SHA-1 Hash来唯一标识对象,如

e98757d0598ab6eeaf1df0d87dd008260448bd80b

每一个“对象名”都是对“对象”内容做SHA1哈希计算得来的,(SHA1是一种密码学的哈希算法)。这样就意味着两个不同内容的对象不可能有相同的“对象名”。

git的概念里总共有四种对象(object):
  • blob:用来存储文件数据,通常是一个文件。(文本文件,二进制文件、链接文件)
  • tree(目录)
  • commit:一个“commit”只指向一个”tree”,它用来标记项目某一个特定时间点的状态。它包括一些关于时间点的元数据,如时间戳、最近一次提交的作者、指向上次提交(commits)的指针等等。(历史提交)
  • tag一个“tag”是来标记某一个提交(commit) 的方法。(指向一个固定的历史提交)
    git-object.png
    更详细的对象信息参考:
    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

发表评论