配置
git config
git config --global user.name "用户名"
git config --global user.email 邮箱地址
git help
git help 命令用来显示任何命令的 Git 自带文档, 不过一般只会查看大部分最常用的命令,运行 git help <command> 命令,可以获取完整的文档。
获取与创建项目
git init
初始化仓库
git clone
git clone 实际上封装了其他几个命令,它创建了一个新目录,并切换到该目录,
然后 git init 初始化一个空的 Git 仓库,
git remote add 指定 默认名称为 origin 的远程仓库,
再针对远程仓库执行 git fetch,
最后通过 git checkout 将远程仓库的最新提交检出到本地的工作目录。
快照基础
git add
git add 命令是将内容从工作目录添加到暂存区,以备下次提交。
git status
git status 命令会显示工作区及暂存区域中不同状态的文件,其中包含了已修改但未暂存,或已经暂存但没有提交的文件,它还会给出如何操作文件的提示。
git commit
git commit 命令将所有通过 git add 暂存的文件内容在数据库中创建一个持久的快照,然后将当前分支上的指针移到快照之上。
git reset
git reset 命令主要用来执行撤销操作,它可以移动 HEAD 指针并且可选的改变暂存区,如果使用 --hard 参数的话可以改变工作区。
git rm
git rm 是用来从工作区,或者暂存区移除文件的命令
git mv
git mv 是一个更加简便的命令,它相当于执行了
mv README.md README
git rm README.md
git add README
git clean
git clean用来从工作区中移除不想要的文件,但是需要谨慎使用,因为它会从工作目录中移除未被追踪的文件,建议使用git stash --all。
git clean -x -i,以交互的方式运行。
git stash --all,贮藏所有工作以达到清理工作区的目的。
分支与合并
git branch
git branch 命令相当于分支管理工具, 它可以列出所有的分支、创建新分支、删除分支及重命名分支。
git checkout
git checkout 命令用来切换分支,或者创建并检出内容到工作目录
git merge
git merge 用来合并一个或者多个分支到你已经检出的分支中, 然后将当前分支指针移动到合并结果上。
git log
git log 命令用来展示一个项目的可达历史记录,从最近的提交快照起。 默认情况下,它只显示你当前所在分支的历史记录,但是可以显示不同的甚至多个头记录或分支以供遍历。 此命令通常也用来在提交记录级别显示两个或多个分支之间的差异。
git stash
有时,当你在项目的一部分上已经工作一段时间后,所有东西都进入了混乱的状态, 而这时你想要切换到另一个分支做一点别的事情。 问题是,你不想仅仅因为过会儿回到这一点而为做了一半的工作创建一次提交。 针对这个问题的答案是 git stash 命令。
贮藏(stash)会处理工作目录的脏的状态——即跟踪文件的修改与暂存的改动——然后将未完成的修改保存到一个栈上, 而你可以在任何时候重新应用这些改动(甚至在不同的分支上)。
交互式暂存
git add -i, git 将会进入一个交互式终端模式,显示如下:
每个文件前面的 * 意味着选中的文件将会被暂存。 如果在 Update>> 提示符后不输入任何东西并直接按回车,Git 将会暂存之前选择的文件, 如果这时想要取消暂存 ,使用 r 或 3(撤消)选项.
贮藏
git stash, 贮藏当前分支的工作
git stash list,查看贮藏列表
git stash apply,恢复到最近的贮藏。
git stash apply 序号,按序号恢复到指定的贮藏
git stash drop 序号,按序号删除指定的贮藏
git stash pop,应用最新的贮藏并移除它
git stash branch 新分支名称,从贮藏创建分支
git tag
git tag 命令用来为提交历史中的某一个提交点指定一个永久的书签, 一般来说它用于发布相关事项。
项目分享与更新
git fetch
git fetch 命令是将远程仓库中有,但是在本地仓库没有的所有更新拉取下来,然后存储在你本地数据库中。
git pull
git pull 命令是 git fetch 和 git merge 命令的组合,从指定的远程仓库中抓取内容,然后将其合并进所在的分支中。
git push
git push 命令用来把本地数据库与远程仓库的差异推送到远程仓库中, 它需要有远程仓库的写权限,通常是需要验证的。
git remote
git remote 命令是远程仓库记录的管理工具,它可以将远程仓库地址保存成一个别名(默认 是 origin),可以用来添加,修改,及删除它们。
补丁
git cherry-pick
拣选类似于对特定的某次提交的变基,它会提取该提交并将其应用到当前分支上,这种方式应用于在你只想引入分支中的某个提交的场景。
如果你希望将提交 e43a6 拉取到 master 分支,你可以运行 git cherry-pick e43a6 ,
这样会拉取和 e43a6 相同的更改,并生成一个新的提交
git rebase
git rebase 命令基本是一个自动化的 cherry-pick 命令, 它计算出一系列的提交,然后将它们在其他地方以同样的顺序一个个的 cherry-pick 出它们。
git revert
git revert 命令本质上就是一个逆向的 git cherry-pick 操作,它将你提交中的变更的以完全相反的方式的应用到一个新创建的提交中,本质上就是撤销或者倒转。