Git教程笔记

1Git基础说明

1.1Git与subversion的区别

  • Git只关注文件数据的整体内容是否发生改变,而不关心文件内容的具体差异
  • Git是分布式的版本控制系统,因此大多数的操作不需要网络环境
  • 所有保存在Git数据库中的东西都是通过对内容的SHA-1计算的hash值作为索引而不是靠文件名
  • 当把本地工作推送到服务器上时,Git必须服务器上的更新合并到本地后才能推送,而Subversion会在服务器端自动合并提交的更新

1.2Git文件状态变化表

对于任何文件,在Git内部只有三种状态:已提交(表示已经保存在本地数据库中),已修改(修改了某个文件)和已暂存(把已修改的文件放在下次提交时要保存的清单中)

Git文件状态变化表
初始状态 操作 目标状态
未跟踪 git add 未修改
未修改 编辑文件 已修改
已修改 git add 已暂存
已暂存 git commit 未修改
未修改 git rm 未跟踪

2Git获取帮助

  • git help <verb>
  • git <verb> –help
  • man git-<verb>

3Git的配置

3.1git配置存放点

git配置有三个级别的配置存放点,每个级别的配置会覆盖上层的相同配置

  • /etc/gitconfig

    其中的配置对整个系统起作用,通过git config –system来设定

  • ~/.gitconfig

    用户目录下的配置文件只适用于该用户,使用git config –global来设定

  • work-dirctory/.git/config文件

    这里的配置仅针对当前项目有效,使用git config来设定

3.2常用的git配置项

3.2.1用户名称和email

这两条配置很重要,git提交时都会引用这两条信息,说明是谁提交了更新.

git config --global user.name "darksun"
git config --global user.email "[email protected]"

3.2.2默认文本编辑器

当git需要你输入一些额外消息时,会自动调用一个默认外部文件编辑器.默认为操作系统指定的默认编辑器

git config --global core.editor emacs

3.2.3差异分析工具

Git可用理解kdiff3,tkdiff,meld,xxdiff,vimdiffgvimdiff,ecmerge和opendiff等合并工具的输出信息

git config --global merge.tool vimdiff

3.2.4查看配置信息

# 查看所有的配置项
git config --list               # 有时候会看到重复的变量名,说明它们来自不同的配置文件
# 直接查看某个变量的设定,只要把特定名称跟在后面即可.
git config user.name

3.2.5定义git命令的别名

# 设置别名
git config --global alias.co checkout # 设置git co为git checkout的别名
git config --global alias.visual "!gitk" # 设置git visual为执行命令gitk

4Git的使用

4.1Git的一般用法

###############初始化操作##############
# 1. 初始化当前目录,为git版本控制作准备
git init
git clone $仓库url              # 1. 克隆已有的仓库到本地

###############版本控制##############
# 2. 检查当前文件的状态
git status

# [编辑忽略文件清单]
# 在名为.gitignore的文件中列出要忽略的文件模式

# 3. 跟踪新文件,此时文件加入跟踪列表,但状态为未修改
git add $要跟踪的文件路径       # 若文件路径为目录,则递归跟踪目录下的所有文件.

# 4. 修改已跟踪文件
# 删除已跟踪文件
git rm
# 移动已跟踪文件
git mv $from_file $to_file      # 相当于mv $from_file $to_file;git rm $from_file;git add $to_file

# 5. 将已修改的文件放入暂存区
git add $要暂存的文件路径       # git add命令会根据目标文件的状态不同而产生不同的效果
# [查看暂存后那些文件进行了改变]
git diff                        # 比较的是当前文件和暂存区域快照之间的差异

# 6. 提交暂存区的快照
git commit                      # 使用-a选项可用跳过暂存这一步,自动把已经跟踪的文件暂存起来并提交
# [查看已经暂存起来的文件和上次提交时的快照之间的差异]
git diff --cached

# 7. 修改最后一次提交
git commit --amend              # 使用当前的暂存快照来替代最后一次提交
# 7. 取消最后一次暂存/取消对文件的修改
# 使用git status会提示怎么做

4.2远程仓库命令

同他人协作开发某个项目时,需要管理远程仓库,以便推送/拉取数据,分享各自的工作进展.

###############远程仓库操作##############
# 查看当前的远程仓库
git remote                      # 列出每个远程仓库的别名
git remote -v                   # 列出每个远程仓库的别名和对应的URL

# 添加远程仓库
git remote add $远程仓库别名 $远程仓库url

# 从远程仓库更新本地数据
git fetch $remote_name          # 从远程仓库拉取所有本地仓库没有的数据,但不会自动合并本地仓库的数据
git pull                        # 默认将远程仓库origin的master分支合并到当前的master分支

# 推送数据到远程仓库
git push                        # 默认将本地master分支推送到远程仓库的origin的master分支
git push $remote_name $branch_name # 将本地的分支$branch_name推送到远程仓库$remote_name中

# 重命名远程仓库别名
git remote rename $old_alias $new_alias

# 删除远程仓库别名
git remote rm $远程仓库别名

# 查看远程仓库信息
git remote show $remote_name

4.3tag命令

git中的标签有两种:轻量级的标签和带附注的标签

###############标签操作##############
# 添加轻量级标签
git tag $标签名

# 添加带附注的标签
git tag -a $标签名
git tag -a $标签名 -m $标签说明
git tag -s $标签名 -m $标签说明 # 使用GPG来签署标签
git tag -a $标签名 $早前某次提交的检验和(或者前几位字符) # 为早前的某次提交作tag

# 查看标签信息
git show $标签名

# 验证标签
git tag -v $标签名              # 调用GPG来验证签名,需要有签署者的公钥,存放在keyring中

# 推送tag
git push $remote_name $tag名称  # 推送标签到远程仓库
git push $remote_name --tags    # 一次推送所有的标签

4.4log命令

  1. git log选项

    选项 说明
    -p 按patch格式显示每个更新之间的更新
    –stat 显示更新的统计信息
    –shortstat 只显示–stat中最后的行数修改添加移除统计
    –name-only 仅在提交信息后显示已修改的文件清单
    –name-status 显示新增,修改,删除的文件清单
    –abbrecv-commit 近显示SHA-1的前几个字符,而非所有的40个字符
    –relative-date 使用相对时间显示
    –pretty=… 使用其他格式显示历史提交信息,可用选项包括oneline,short,full,fuller,format:格式标示符
    -n(n为数字) 仅显示最后提交的n条记录
    –since/–after 仅显示指定日期之后的修改
    –until/–before 仅显示指定日期之前的提交
    –author 仅显示指定作者相关的提交
    –committer 仅显示指定提交者相关的提交
  2. git log –pretty=format:格式说明符
    选项 说明
    %H 提交对象的完整hash字符串
    %h 提交对象的简短hash字符串
    %T 树对象的完整hash字符串
    %t 树对象的简短hash字符串
    %P 父对象的完整hash字符串
    %p 父对象的简短hash字符串
    %an 作者名字
    $ae 作者的email
    %ad 作者修订的绝对日期
    %ar 作者修订的相对日期
    %cn 提交者名字
    %ce 提交者的email
    %cd 提交的绝对日期
    %cr 提交的相对日期
    %s 提交说明

4.5分支命令

远程分支的格式一般为"远程仓库名/分支名"

# 新建分支
git branch $分支名              # 但并未切换到该分支

# 切换分支
git checkout $分支名
git checkout -b $分支名         # 新建并切换到分支处

# 跟踪分支:一种跟远程分支有直接联系的本地分支,在跟踪分支中输入git push 和git pull会自动推断相关的远程分支
git checkout -b $分支名 $远程仓库名/$远程分支名 # 新建指定分支,并绑定为指定远程分支的跟踪分支
git checkout --track $远程仓库名/$远程分支名    # 新建指定远程分支的跟踪分支

# 合并分支
git merge $分支名               # 将分支名的分支合并到当前分支处

# 删除分支
git branch -d $分支名           # 若指定分支包含当前分支未合并的工作,则删除会失败
git branch -D $分支名           # 强制删除分支

# 冲突的合并
git status                      # unmerged处显示哪几个文件有冲突
git mergetool                   # 使用自定义的图形化工具合并文件,当然也可以用vi来手工合并
git add $合并后的文件           # 将合并后的文件标记为冲突已解决

# 显示本地分支
git branch                      # 显示当前所有分支的清单
git branch --merge              # 查看那些分支已经合并入当前分支,这些分支可用被del了
git branch --no-merged          # 查看尚未合并的分支

# 推送分支
git push $远程仓库名 $本地分支名 # 推送指定本地分支到远程仓库中
git push $远程仓库名 $本地分支名:$远程分支名 # 推送指定的本地分支到远程仓库中,并命名为指定的远程分支名

# 删除远程分支
git push $远程仓库名 :$远程分支名 # 可用理解为将本地的空白分支推送到远程仓库覆盖远程分支

# 衍合,所谓衍合就是把一个分支里提交的改变在另一个分支里重放一遍
git rebase $分支                # 把指定分支的改变在当前分支重作一边形成新的版本
git rebase $主分支 $特征分支    # 把特征分支的改变在主分支中重做一边形成新的版本
git rebase master server client # 找出client分支从它与server分支的祖先相分离之后的改变在master分支上重新做一遍.
# 注意!!永远不要衍合那些已经推送到公共仓库的更新!!

Git教程笔记,布布扣,bubuko.com

时间: 2024-08-06 07:54:47

Git教程笔记的相关文章

[k]廖雪峰Git教程-笔记

-------------------------- 廖雪峰Git教程-------------------------- 01:安装Git在Windows上安装Git,官网下载,然后按默认选项安装即可;右键菜单->“Git Bash”->弹出一个命令窗口;安装完成后,还需要最后一步设置,在命令行输入:$ git config --global user.name "Your Name"$ git config --global user.email "[emai

git教程笔记(二)

1.首先进入自己的项目文件 在GitHub上申请一个自己的账户信息.创建一个Repository.然后复制仓库的地址在gitbush中进行clone gitbush中进行远程clone 2.gitbush经常使用的一些命令 1).cd : 改变目录.2).cd . . 回退到上一个目录,直接cd进入默认目录3).pwd : 显示当前所在的目录路径.4).ls(ll): 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细. 5).touch : 新建一个文件 如 touch i

廖雪峰Git教程学习笔记(一)

作者及其背景:仔姜,大三学生,幼儿园英语水平,熟系Linux文件基本操作(最基础的) 文章内容或许有些疏漏之处还望各位大佬见谅,如果构成侵权或出现其他问题,请联系我邮箱:[email protected],如果需要更全的知识请移步廖老师Git教程 学习内容来源:廖雪峰Git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 感谢廖雪峰老师提供的教程 正文开始: Git简介 什

git使用笔记(一)入门

By francis_hao    Nov 17,2016 本来是想把git的使用笔记写在一个文件里,但是越写越长,最后也不得不分开了.这样也好,每一篇一个侧重,可以写的详细一点. 初学乍练 在linux系统执行下面的命令,查看是否已经安装了git,若没有安装则需要到http://git-scm.com/download/ 上下载并安装. $ git –versiongit version 1.8.3.1 git基本配置 配置的设置是一次性的工作,这些设置会在全局文件(用户主目录下的.gitco

Git 学习笔记

Git 学习笔记 本文整理参考廖雪峰的 Git 教程, 整理 Git 学习笔记, 用于 Git 常用命令速查:常用命令用彩色标注! Git学习笔记 $ git config --global user.name "Your Name" 配置本机所有仓库的用户名 $ git config --global user.email "[email protected]" 配置本机所有仓库的Email地址 $ git init 初始化一个Git仓库 $ ls -ah 查看隐

版本控制——Git 使用笔记,以及Windows搭建Git服务器

Git和Github的关系 链接:http://www.zhihu.com/question/21907548/answer/95284202 来源:知乎 Git是一款免费.开源的分布式版本控制系统 Github是用Git做版本控制的代码托管平台 相当于本地.公司服务器.Github网站服务器都装Git做版本控制,只不过Github的服务器强大些,对全球用户托管的项目用Git做版本控制! 正是由于Github用Git做版本控制,所以可以轻松的记录项目的变迁史,然后有了下图 git是一张弓,git

Git学习笔记(六)分支管理

学习廖雪峰老师的Git教程的笔记,以供自己以后复习查看. ★★★★★ 创建.合并.删除分支.     ★创建分支 git branch branchName --------创建分支               git checkout branchName -----切换到分支           上面两条命令可以合并为:git checkout -b branchName 创建并切换到分支 ★合并分支               git merge branchName -------合并指

imooc’s html 基础教程笔记

imooc’s html 基础教程笔记 imooc’s html 基础教程 第一章 Html介绍 1.1 Html和CSS的关系 1.2认识html标签 1.3 标签的语法 1.4 认识html文件基本结构 1.5 认识head标签 1.6了解HTML的代码注释 2.1语义化,让你的网页更好的被搜索引擎理解 2.2 标签,网页上显示的内容放在这里 2.3 开始学习标签,添加段落 2.4 了解标签,为你的网页添加标题 2.5 加入强调语气,使用strong和em标签 2.6 使用span标签为文字

Git学习笔记(三)版本回退

学习廖雪峰老师的Git教程的笔记,以供自己以后复习查看. ★★★★★使用 git log 命令可以查看文件改动的日志.(或者添加 --pretty=oneline让每一条返回结果在一行显示) 黄颜色的命令行 commit 后面的十六进制字符串是系统通过SHA1计算得到的 commit id . 在git中 HEAD 表示当前版本.上个版本是 HEAD^ ,再上一个版本是 HEAD^^  --. 当数量很大的时候,用 ~:比如往上数100个版本→HEAD~100. ★★★★★ 版本回退 版本回退命