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中的同名变量。

用户信息

$ git config --global user.name "JohnDoe"
$ git config --global user.email johndoe@example.com

文本编辑器

$ git config --global core.editor emacs

差异分析工具

$ git config --global merge.tool vimdiff

查看配置信息

$ git config --list

查阅某个环境变量的设定,只要把特定的名字跟在后面即可

$ git config user.name

获取帮助

$ git help <verb>
$ man git -<verb>

git基础

目录初始化

$ git init

检查当前文件状态

$ 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  #命令自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支

推送到远程master分支

$ 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

获取git 日志

git log --pretty=oneline

推送所有标签:

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 push --delete origin devel

这样一来,下面的两条命令完全等同:
$ git unstage fileA
$ git reset HEAD fileA

分享标签
git push origin [tagname]

签署标签
如果你有自己的私钥,还可以用GPG来签署标签,只需要把之前的-a 改成 -s (-s Signed)
验证标签
git tag -v [tag-name] (-v verify)

当要指定存储的目录时
$gi tclone git://github.com/schacon/grit.gitmygrit

Git支持许多数据传输协议。之前的例子使用的是git://协议,不过你也可以用
http(s)://或者user@server:/path.git表示的SSH传输协议。我们会在第四章详细介
绍所有这些协议在服务器端该如何配置使用,以及各种方式之间的利弊。

工作目录的文件有两个状态:已跟踪和未跟踪

原文地址:https://www.cnblogs.com/kaishi/p/7252067.html