git 学习笔记
Posted Xiaox-xin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git 学习笔记相关的知识,希望对你有一定的参考价值。
git
第一章
vcs:版本控制系统
cvcs:集中化的版本控制系统
dvcs:分布式版本控制系统
git只关心文件数据的整体是否发生变化,而大多数其他系统则只关系文件内容的具体差异
三种状态:
在git内都只有三种状态:已提交(commmitted),已修改(modified),已暂停(staged).
git管理项目时:
文件流转的三个工作区域:git的本地数据目录,工作目录,以及暂存区域。
初次运行git前的配置
git提供一个叫做git-config的工具,专门用来配置或读取相应的工作环境变量。变量可以放在三个不同的地方,
1. /etc/gitconfig文件:系统中对所有用户都普遍适用的配置。若使用gitconfig时
用--system选项,读写的就是这个文件。
2. ~/.gitconfig文件:用户目录下的配置文件只适用于该用户。若使用gitconfig时
用--global选项,读写的就是这个文件。
3. 当前项目的git目录中的配置文件(也就是工作目录中的.git/config文件):这
里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以
.git/config里的配置会覆盖/etc/gitconfig中的同名变量。
用户信息
$ gitconfig --global user.name "JohnDoe"
$ gitconfig --global user.email [email protected]
文本编辑器
$ gitconfig --global core.editor emacs
差异分析工具
$ gitconfig --global merge.tool vimdiff
查看配置信息
$ git config --list
查阅某个环境变量的设定,只要把特定的名字跟在后面即可
$ git config user.name
获取帮助
$ git help <verb>
$ man git -<verb>
第二章
git基础
当前目录初始化
$ git init
当前目录有几个文件想要纳入版本控制
$ git add *.c
$ git add README
$ git commit -m ‘initialprojectversion‘
当要指定存储的目录时
$gitclonegit://github.com/schacon/grit.gitmygrit
Git支持许多数据传输协议。之前的例子使用的是git://协议,不过你也可以用
http(s)://或者[email protected]:/path.git表示的SSH传输协议。我们会在第四章详细介
绍所有这些协议在服务器端该如何配置使用,以及各种方式之间的利弊。
工作目录的文件有两个状态:已跟踪和未跟踪
检查当前文件状态
$ git status filename
忽略某些文件
创建一个名为.gitignore的文件,列出要忽略的文件模式
$ cat.gitignore
*.[oa]
*~
查看具体修改了什么地方,可以用git diff 命令
提交更新
$ git commit
$ git commit -m "test"
跳过使用暂存区域
$ git commit -a
给git commit加上-a选项,Git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add步骤
移除文件
git rm
移动文件
$ git mv file_from file_to
git mv就相当于运行了下面三条命令:
$ mvR EADME.txt README
$ git rm README.txt
$ git add README
查看提交历史
$ git log
我们常用-p选项展开显示每次提交的内容差异,用-2则仅显示最近的两次更新
修改最后一次提交
$ git commit --amend
查看当前的远程库
$ git remote -v
添加远程仓库
$ git remote add pb git://github.com/paulboone/ticgit.git
$ git fetch pb
从远程仓库抓取数据
$ git fetch [remote-name]
fetch命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支
git pull 命令自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支
$ git push origin master
查看远程仓库信息
$ git remote show origin
远程仓库的删除和重命名
$ git remote rename pb paul
移除对应的远端仓库
$ git remote rm paul
打标签
$ git tag -a v1.4 -m "test" (-a annotated)
$ git show v1.4
签署标签
如果你有自己的私钥,还可以用GPG来签署标签,只需要把之前的-a 改成 -s (-s Signed)
验证标签
git tag -v [tag-name] (-v verify)
获取git 日志
git log --pretty=oneline
分享标签
git push origin [tagname]
如果要推送所有标签
git push origin --tags
Git命令别名
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
$ git config --global alias.unstage ‘reset HEAD --‘
这样一来,下面的两条命令完全等同:
$ git unstage fileA
$ git reset HEAD fileA
以上是关于git 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章