$ git init # 输出、设置基本的全局变量 $ git config --global user.email $ git config --global user.name $ git config --global user.email "MyEmail@Zoho.com" $ git config --global user.name "My Name" # 查找可用命令 $ git help # 查找所有可用命令 $ git help -a # 在文档当中查找特定的命令 # git help <命令> $ git help add $ git help commit $ git help init # 显示分支,未跟踪文件,更改和其他不同 $ git status # 查看其他的git status的用法 $ git help status # 添加一个文件 $ git add HelloWorld.java # 添加一个子目录中的文件 $ git add /path/to/file/HelloWorld.c # 支持正则表达式 $ git add ./*.java # 查看所有的分支和远程分支 $ git branch -a # 创建一个新的分支 $ git branch myNewBranch # 删除一个分支 $ git branch -d myBranch # 重命名分支 # git branch -m <旧名称> <新名称> $ git branch -m myBranchName myNewBranchName # 编辑分支的介绍 $ git branch myBranchName --edit-description # 检出一个版本库,默认将更新到master分支 $ git checkout # 检出到一个特定的分支 $ git checkout branchName # 新建一个分支,并且切换过去,相当于"git branch <名字>; git checkout <名字>" $ git checkout -b newBranch # clone learnxinyminutes-docs $ git clone https://github.com/adambard/learnxinyminutes-docs.git # 提交时附带提交信息 $ git commit -m "Added multiplyNumbers() function to HelloWorld.c" # 显示工作目录和索引的不同 $ git diff # 显示索引和最近一次提交的不同 $ git diff --cached # 显示工作目录和最近一次提交的不同 $ git diff HEAD # 感谢Travis Jeffery提供的以下用法: # 在搜索结果中显示行号 $ git config --global grep.lineNumber true # 使得搜索结果可读性更好 $ git config --global alias.g "grep --break --heading --line-number" # 在所有的java中查找variableName $ git grep 'variableName' -- '*.java' # 搜索包含 "arrayListName" 和, "add" 或 "remove" 的所有行 $ git grep -e 'arrayListName' --and \( -e add -e remove \) # 显示所有提交 $ git log # 显示某几条提交信息 $ git log -n 10 # 仅显示合并提交 $ git log --merges # 将其他分支合并到当前分支 $ git merge branchName # 在合并时创建一个新的合并后的提交 $ git merge --no-ff branchName # 重命名 $ git mv HelloWorld.c HelloNewWorld.c # 移动 $ git mv HelloWorld.c ./new/path/HelloWorld.c # 强制重命名或移动 # 这个文件已经存在,将要覆盖掉 $ git mv -f myFile existingFile # 从远端origin的master分支更新版本库 # git pull <远端> <分支> $ git pull origin master # 把本地的分支更新到远端origin的master分支上 # git push <远端> <分支> # git push 相当于 git push origin master $ git push origin master # 将experimentBranch应用到master上面 # git rebase $ git rebase master experimentBranch # 使 staging 区域恢复到上次提交时的状态,不改变现在的工作目录 $ git reset # 使 staging 区域恢复到上次提交时的状态,覆盖现在的工作目录 $ git reset --hard # 将当前分支恢复到某次提交,不改变现在的工作目录 # 在工作目录中所有的改变仍然存在 $ git reset 31f2bb1 # 将当前分支恢复到某次提交,覆盖现在的工作目录 # 并且删除所有未提交的改变和指定提交之后的所有提交 $ git reset --hard 31f2bb1 # 移除 HelloWorld.c $ git rm HelloWorld.c # 移除子目录中的文件 $ git rm /pather/to/the/file/HelloWorld.c