git语法

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

fetch

pull

push

附录