git init |
初始化工作区 |
|
git clone [url] [projectName] |
克隆远程地址 url 处的项目到本地 |
url :远程项目地址,必传
projectName :自定义克隆后得到的项目名 |
git status |
查看当前工作目录文件状态,状态分为:未跟踪、已修改、已暂存 |
|
git add [filePath] |
将指定的文件添加到暂存区 |
filePath :文件相对于项目根目录的路径,也可直接填写".",表示将所有当前工作目录下可暂存的文件统一暂存 |
git diff |
比较工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容 |
|
git diff --cached / git diff --staged(Git 1.6.1+) |
比较已经暂存起来的文件和上次提交时的快照之间的差异 |
|
git commit |
将暂存区内容提交到本地仓库,会唤起安装Git时设置的默认编辑器来让用户输入提交信息,保证在使用过 git add 后使用该命令 |
|
git commit -m “[message]” |
直接使用一行命令携带提交信息提交更新,保证在使用过 git add 后使用该命令 |
message :提交信息 |
git commit -m -a “[message]” |
自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤 |
|
git rm [filePath] |
要从已跟踪文件清单中移除(确切地说,是从暂存区域移除)某个文件,从而使该文件不再纳入版本管理了 |
filePath :文件相对于项目根目录的路径 |
git rm -f [filePath] |
同上,如果该文件删除之前修改过并且已经放到暂存区域的话,使用本命令 |
同上 |
git rm --cached [filePath] |
把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。 |
同上 |
git log |
按提交时间列出所有的提交历史更新,最近的更新排在最上面,键入 q 退出日志展示状态 |
|
git log -p |
展开显示每次提交的内容差异 |
|
git log -p -[num] |
仅显示最近的 num 次更新 |
num :展示最近几次的更新 |
git log --stat |
仅显示简要的增改行数统计 |
|
git log --pretty=oneline |
将每个提交放在一行显示,这在提交数很大时非常有用 |
|
git log --pretty=format:“%h %s” --graph |
形象地展示每个提交所在的分支及其分化衍合情况 |
|
git commit --amend |
当上一次提交有文件忘记 add 了或者提交说明写错了,使用该命令可以提交当前暂存区并覆盖上次提交,即修改最后一次提交 |
|
git reset HEAD [fileName] |
取消对某个文件的暂存 |
fileName :文件名 |
git checkout – [fileName] |
取消对某个文件的修改 |
fileName :文件名 |
git remote |
列出当前项目所有远程仓库的名称 |
|
git remote -v/–verbose |
列出当前项目所有远程仓库的名称和克隆地址 |
|
git remote add [shortName] [url] |
添加远程仓库 |
shortName :远程分支别名
url :仓库地址 |
git fetch [remoteName] |
此命令会到远程仓库中拉取所有本地仓库中还没有的数据。运行完成后,就可以在本地访问该远程仓库中的所有分支,该命令首先找到 remoteName 是哪个服务器,从上面获取你尚未拥有的数据,更新你本地的数据库 |
remoteName :远程仓库别名 |
git pull |
当本地分支已跟踪远程分支后,该命令会将远端最新的内容拉取并合并到当前本地分支 |
|
git push |
当本地分支已跟踪远程分支后,该命令会将本地最新的内容推送到远程对应分支 |
|
git push [remoteName] [branchName] |
将本地仓库中的数据推送到远程仓库。只有在所克隆的服务器上有写权限,或者同一时刻没有其他人在推数据,这条命令才会如期完成任务。如果在你推数据前,已经有其他人推送了若干更新,那你的推送操作就会被驳回。你必须先把他们的更新抓取到本地,合并到自己的项目中,然后才可以再次推送。 |
remoteName :远程仓库别名
branchName :分支名 |
git remote show [remoteName] |
显示远程仓库信息 |
remoteName :远程仓库别名 |
git remote rename [preName] [newName] |
修改某个远程仓库在本地的简称 |
preName :之前的名字
newName :新名字 |
git tag |
列出现有标签 |
|
git tag -a [tagName] -m ‘[message]’ |
创建一个标签 |
tagName :标签名,一般写为版本号
message :信息 |
git show [tagName] |
查看相应标签的版本信息,并连同显示打标签时的提交对象 |
tagName :标签名,一般写为版本号
message :信息 |
git tag -s [tagName] -m ‘[message]’ |
有自己的私钥的话,还可以用 GPG 来签署标签,再运行 git show 会看到对应的 GPG 签名也附在其内 |
tagName :标签名,一般写为版本号
message :信息 |
git tag -v [tagName] |
此命令会调用 GPG 来验证签名,所以你需要有签署者的公钥,存放在 keyring 中,才能验证 |
|
git tag -a [tagName] [hash] |
为指定的某次提交打标签 |
tagName :标签名,一般写为版本号
hash :指定提交的哈希值 |
git push [remoteName] [tagName] |
默认情况下,git push 并不会把标签传送到远端服务器上,只有通过改显式命令才能分享标签到远端仓库 |
|
git push [remoteName] --tags |
一次推送所有本地新增的标签上去 |
|
git branch |
列出所有分支 |
|
git branch -vv |
列出本地分支和远程分支的关联情况 |
|
git branch --merge |
列出所有已合并到当前分支的分支 |
|
git branch --no-merge |
列出所有未合并到当前分支的分支 |
|
git branch [branchName] |
新建分支 |
branchName :分支名 |
git checkout [branchName] |
切换分支 |
branchName :分支名 |
git checkout -b [branchName] |
以当前分支为基础,新建并同时立即切换分支 |
branchName :分支名 |
git checkout -b [branchName] [remoteName]/[remoteBranchName] |
以指定远程仓库的指定分支为基础,新建并同时立即切换分支 |
remoteName :远程仓库别名
remoteBranchName :远程分支名
branchName :本地分支名 |
git branch -d/-D [branchName] |
-d :删除已合并的分支,-D :强制删除未合并的分支 |
branchName :分支名 |
git merge [branchName] |
合并某个分支的修改到当前分支 |
branchName :分支名 |
git mergetool |
调用一个可视化的合并工具并引导你解决所有冲突 |
|
git push [remoteName] [branchName]:[remoteBranchName] |
将本地分支的修改,推送到远程指定分支上,当远程分支与当前分支同名时,branchName:remoteBranchName 可简写为branchName |
remoteName :远程仓库别名
remoteBranchName :远程分支名
branchName :本地分支名 |
git push [remoteName] :[remoteBranchName] |
删除远程分支 |
remoteName :远程仓库别名
remoteBranchName :远程分支名 |
git stash |
储藏当前工作区的变更,使工作区变得干净,经常有这样的事情发生,当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是该命令 |
|
git stash save “[message]”/git stash save – “[message]”(旧版本) |
为储存添加信息,方便识别储存内容 |
|
git stash list |
查看现有的储藏列表 |
|
git stash apply |
重新应用你刚刚实施的储藏,对文件的变更被重新应用,但是被暂存的文件没有重新被暂存 |
|
git stash apply --index |
重新应用你刚刚实施的储藏,对文件的变更被重新应用,被暂存的文件也重新被暂存 |
|
git stash apply [stashName] |
重新应用指定的储藏 |
stashName :储藏名,可以通过 git stash list 命令查看 |
git stash drop [stashName] |
重将指定的储藏从储藏列表中删除 |
stashName :储藏名,可以通过 git stash list 命令查看 |
git stash pop |
重新应用你刚刚实施的储藏,并将其从储藏列表中删除 |
|
git stash show -p [stashName] | git apply -R |
在某些情况下,你可能想应用储藏的修改,在进行了一些其他的修改后,又要取消之前所应用储藏的修改,使用该命令 |
stashName :储藏名,可以通过 git stash list 命令查看,不传的话默认使用最近的储存 |
git stash branch [branchName] |
如果你储藏了一些工作,暂时不去理会,然后继续在你储藏工作的分支上工作,你在重新应用工作时可能会碰到一些问题。如果尝试应用的变更是针对一个你那之后修改过的文件,你会碰到一个归并冲突并且必须去化解它。如果你想用更方便的方法来重新检验你储藏的变更,你可以运行 git stash branch ,这会创建一个新的分支,检出你储藏工作时的所处的提交,重新应用你的工作,如果成功,将会丢弃储藏。如果你储藏了一些工作,暂时不去理会,然后继续在你储藏工作的分支上工作,你在重新应用工作时可能会碰到一些问题。如果尝试应用的变更是针对一个你那之后修改过的文件,你会碰到一个归并冲突并且必须去化解它。如果你想用更方便的方法来重新检验你储藏的变更,你可以运行 git stash branch ,这会创建一个新的分支,检出你储藏工作时的所处的提交,重新应用你的工作,如果成功,将会丢弃储藏。 |
branchName :要创建的新分支名 |