init
init 新建一个git代码库
git init
新建一个目录,将其初始化为Git代码库
git init [project-name]
clone一个项目
git clone url
add/rm
git add [file1] [file2] 添加指定文件
git add [dir] 添加指定的目录到暂存区,包括子目录
git rm [file1] [file2] … # 删除工作区文件,并且将这次删除放入暂存区
git rm –cached [file] # 停止追踪指定文件,但该文件会保留在工作区
git mv [file-original] [file-renamed] # 改名文件,并且将这个改名放入暂存区
commit
commit用于将文件提交到仓库区
- git commit -m [message] # 提交暂存区到仓库区
git commit [file1] [file2] … -m [message] # 提交暂存区的指定文件到仓库区
git commit -a # 提交工作区自上次commit之后的变化,直接到仓库区
git commit -v # 提交时显示所有diff信息
git commit –amend -m [message] # 使用一次新的commit,替代上一次提交,如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit –amend [file1] [file2] …# 重做上一次commit,并包括指定文件的新变化
checkout
checkout用于操作git的Head指针
git checkout [-q] [
] [–] … 重置的是HEAD,检出的默认值是暂存区。相当于放弃本地修改 git checkout [
] 改变head投指针,head将切换到另一个分支 git checkout [-m] [[-b]–orphan]
] [ ] 创建并切换到新的分支上。
例如:
git checout -m mywork master
remote
- 查看远程
merge
rebase
rebase 意为重新使用基础版本,这个命令实际上对应了非常多的操作,mywork本来是origin 分支C2分出去的,origin有C3,C4有两个版本的内核更新,mywork在分出去后又C5,C6两个版本外观更新,这个时候使用rebase可以先把C5,C6当成补丁暂存,先把内核更新到origin的C4,然后再将C5,C6以补丁的方式更新上来,这样看起来的mywork的更新的图就是下面这样。
运行gc命令的话,C5,C6的commit就会被删除回收掉。
在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用”git-add”命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:
$ git rebase --continue
在任何时候,你可以用–abort参数来终止rebase的行动,并且”mywork” 分支会回到rebase开始前的状态。
$ git rebase --abort