Git
概述
3+1棵树
- Workspace:工作目录,持有实际工作文件
- Index:暂存区,临时保存工作文件变更情况
- Repository:本地仓库,在本地保存完整Git记录
- 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 branch
和git merge origin/branch
命令组合
合并更新信息
git merge branch
合并branch更新信息到当前分支
git rebase -i branch
基于branch自动建立隐藏分支,合并当前分支到隐藏分支,最后用隐藏分支替换当前分支
git rebase -i HEAD~3
常用交互命令说明:
# 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,数字表示仅处理当前分支的前几个更新信息
常用于修改合入记录信息、合并合入记录
合入变更和撤销变更
合入内容、恢复合入内容:
- git add files 把当前文件放入暂存区域。
- git commit 给暂存区域生成快照并提交。
- git reset – files 用来撤销最后一次git add files,也可以用git reset 撤销所有暂存区域文件。
- git checkout – files 把文件从暂存区域复制到工作目录,用来丢弃本地修改。
- git commit -a 相当于运行git add把所有当前目录下的文件加入暂存区域再运行git commit。
- git commit files 进行一次包含最后一次提交加上工作目录中文件快照的提交,并且文件被添加到暂存区域。
- git checkout HEAD – files 回滚到复制最后一次提交。
恢复合入记录:
- 无选项,默认更新暂存区
- –soft,只更新HEAD
- –hard,更新暂存区和工作目录
合入特定变更:
合并指定更新记录到当前分支
工作区内容暂存
git stash
,讲本地修改内容暂存起来git stash pop
,恢复暂存的修改内容git stach apply
,恢复指定暂存内容
常用于中断当前工作,临时处理其他事务情况
参考: