Git

Git

概述

alt

3+1棵树

  1. Workspace:工作目录,持有实际工作文件
  2. Index:暂存区,临时保存工作文件变更情况
  3. Repository:本地仓库,在本地保存完整Git记录
  4. Remote:远端仓库,实际代码仓库

所有的Git操作,都是文件变化记录在这四棵树之间流转,开发过程中重点关注前3棵树

获取代码库

  • git clone [url],克隆到本地,文件夹名字和仓库名字保持一致
  • git clone [url] local_dir,克隆到本地,文件夹名字自定义

url可以是git://或ssh://或http(s)://或ftp://等

查看分支

git branch <options>

  • 无选项,列出本地分支
  • -a,列出本地分支和远程分支
  • -r,列出远程分支

git tag

列出标签列表

分支管理

  • git branch dev,基于当前分支创建dev分支
  • git checkout dev,切换到dev分支
  • git branch -d dev,删除分支
  • git checkout -b dev [origin/branch|tag],基于指定分支或标签,创建并切换分支

获取更新信息

  • git fetch <origin> <branch>

仅获取指定分支的更新信息,不合并内容

获取的分支名字规则为origin/branch

  • git pull <origin> <branch>

获取指定分支的更新信息,自动合并更新到本地当前分支

相当于git fetch origin branchgit merge origin/branch命令组合

合并更新信息

git merge branch

合并branch更新信息到当前分支

git rebase -i branch

基于branch自动建立隐藏分支,合并当前分支到隐藏分支,最后用隐藏分支替换当前分支

alt

git rebase -i HEAD~3

alt

常用交互命令说明:

# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# s, squash <commit> = use commit, but meld into previous commit
# d, drop <commit> = remove commit

HEAD,表示当前分支

HEAD~3,数字表示仅处理当前分支的前几个更新信息

常用于修改合入记录信息、合并合入记录

合入变更和撤销变更

合入内容、恢复合入内容

alt

  • git add files 把当前文件放入暂存区域。
  • git commit 给暂存区域生成快照并提交。
  • git reset – files 用来撤销最后一次git add files,也可以用git reset 撤销所有暂存区域文件。
  • git checkout – files 把文件从暂存区域复制到工作目录,用来丢弃本地修改。

alt

  • git commit -a 相当于运行git add把所有当前目录下的文件加入暂存区域再运行git commit。
  • git commit files 进行一次包含最后一次提交加上工作目录中文件快照的提交,并且文件被添加到暂存区域。
  • git checkout HEAD – files 回滚到复制最后一次提交。

恢复合入记录

alt

  • 无选项,默认更新暂存区
  • –soft,只更新HEAD
  • –hard,更新暂存区和工作目录

合入特定变更

alt

合并指定更新记录到当前分支

工作区内容暂存

  • git stash,讲本地修改内容暂存起来
  • git stash pop,恢复暂存的修改内容
  • git stach apply,恢复指定暂存内容

常用于中断当前工作,临时处理其他事务情况

参考: