Git知识积累

  • 创始人: Linus Torvalds
  • Git官网:http://git-scm.com
  • 优势:分布式版本控制管理
  • 快照存取,不记录不同版本之间具体的修改内容。
  • Git快照存取
  • 文件三种状态:已提交(committed),已修改(modified),已暂存(stagged)Git文件的三种状态
  • Git资源目录:.git
    • 所有的版本控制信息存储在此目录,工作目录中的内容也是从此目录提取的。
  • 帮助命令:git help [command]
  • 初始化:git init [directory]
    • 添加具体目录,对该目录进行初始化,若未添加,默认当前目录。
  • 设置例外文件:.git/info/exclude
    • 若在该文件中添加“mytest/”,git将会自动排出mytest文件夹。
  • 设置追踪忽略的文件:.gitignore
    • 若添加“db/*.db”,将自动不对db目录下所有.db后缀的文件进行追踪。
  • 简单设置Git:git config
    • 设置基本信息
      • git config --global user.name "your name"
      • git config --global user.email "your email"
      • git config --global color.ui true (设置log信息高亮显示)
    • 设置命令别名
      • git config --global alias.st status
      • git config --global alias.co checkout
      • git config --global alias.mylog "log --pretty=format: '%h %s [%an]' --graph"
      • git config --global alias.br branch
      • git config --global alias.ci commit
    • 查看设置信息
      • 全部:git config --list
      • 具体:git config user.email
  • 添加:git add [-A] [directory or filename]
    • [-A]:对所有添加,修改以及删除的操作放入暂存区。
    • 填写目录,将自动添加目录下所有可被追踪的文件。
    • 填写文件路径,将只添加选择的文件。
    • 添加当前目录下所有文本文件:git add '*.txt' 
    • 添加docs目录下所有文本文件:git add docs/*.txt
  • 删除:git rm  [filename]
    • 从本地目录中删除文件。
    • 删除暂存区的文件(只是从git目录中删除,本地资源并未删除):git rm --cached filename
  • 查看所在分支状态:git status [-s]
    • [-s]:是否简略显示
  • 查看差异信息: 
    • 未放入暂存区:git diff
    • 放入暂存区:git diff --staged
    • 查看文件差异:git diff filename1 filename2
    • 查看当前状态与最后一次提交的差异:git diff HEAD
    • 查看与最后第二次提交的差异:git diff HEAD^^
    • 查看与最后第五次提交的差异:git diff HEAD~5
    • 查看最后两次之间的差异:git diff HEAD^..HEAD
    • 查看两次提交之间的差异:git diff <commit1_SHA> <commit2_SHA>
    • 查看两个分支之间的差异:git diff <branch1> <branch2>
  • 查看文件每行的修改信息:git blame index.html --date short
  • 提交:git commit  [-a] -m "some words"
    • [-a]:自动暂存已追踪文件的修改,对新添加文件不暂存。
  • 日志:
    • 查看:git log
    • 简易查看:git log --pretty=oneline
    • 自定义查看:git log --pretty=format:"%h %ad- %s [%an]"
    • 查看简易更新日志:git log --oneline -p
    • 查看简易状态日志:git log --oneline --stat
    • 查看简易的图形日志:git log --oneline --graph
    • 查看一段时间的日志:
      • git log --since=1.day.ago --unitl=1.minute.ago
      • git log --since=2010-6-29 --unitl=2014-12-12
  • 分支:
    • 查看本地分支:git branch
    • 查看远程分支:git branch -r
    • 新建分支:git branch branch_name
    • 选择分支:git checkout branch_name
    • 选择+新建:git checkout -b branch_name
    • 删除合并之后的分支:git branch -d branch_name
    • 删除没有合并的分支:git branch -D branch_name
    • 删除远程分支:git push remote_name :branch_name
  • 合并分支:git merge branch_name
    • 合并之前要选择到目标分支上,一般为项目master分支或开发分支
  • 远程库:
    • 查看远程库:git remote [-v]
      • [-v]:用于查看远程库地址
    • 添加远程库:git remote add remote_name some_url
      • your_name:随意为该远程库命一个自己知道的名称
      • 常用的地址类型有https和ssh,前者需要在每次提交时填写账号和密码,而后者在前期配置后提交将不需要额外信息。
    • 查看远程库详细信息:git remote show remote_name 
  • 与远程库同步:
    • 拉取远程库:git fetch
      • fetch只是拉取到.git目录,未和本地工作目录内容进行合并。
    • 拉取远程库并与本地合并:git pull
  • 提交代码到远程库:git push [-u] remote_name branch_name
    • [-u]:记录此次远程对象,再次同步时可以直接使用git push。
  • 克隆远程库代码:git clone some_url
    • 建议克隆时就使用SSH地址,方便后续提交操作。
  • 检测冲突:git pull --rebase remote_branch
    • 该步骤可以细分:
      • git checkout branch_name
      • git pull
      • git rebase  remote_branch
    • rebase:对所有当前分支的修改于远程库进行比较,将比较结果存储于临时区域,方便修改冲突文件。
    • 冲突文件格式:
      • <<<<<<< HEAD
      • remote version codes
      • =======
      • local version codes
      • >>>>>>>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章