git command cheat sheet
clone:克隆
--non-bare:(默认值)一般的克隆方式
--bare:只克隆.git目录
--mirror:只克隆.git目录,并且还保持与origin的关联,可以fetch
commit:将stage提交到repo
git commit:将stage提交到当前分支
git commit -m [message]:为本次提交添加注释
git commit -a:将工作区所有文件加入stage,并且提交到当前分支
git commit [files]:特定文件加入stage,并且提交到当前分支
git commit --amend:替换掉repo当前的版本
checkout:(从stage或者repo)复制文件到工作目录,或者切换分支
git checkout [分支名] [文件名]
指定文件名时,从repo复制文件并替换工作目录中对应的文件
不指定文件名时,切换当前分支到指定的分支。只存在于老分支的文件会被删除,其他文件忽略
git checkout -b [分支名]:在当前版本创建新的分支
reset:回滚,把当前分支指向另一个节点
git reset:无变动,
git reset [新位置]:指向新位置,回滚stage,不回滚工作目录
--hard:指向新位置,回滚stage和工作目录
--soft:指向新位置,stage和工作目录无变化
merge:合并分支
git merge:当前分支,被合并分支,共同的祖父节点,三者做三方合并,然后提交生成新的节点,并且当前节点指向新节点
如果被合并分支为当前分支的祖父节点,则无变化
如果当前分支为被合并分的祖父节点,则生成一个新的提交,当前分支和被合并分支指向新提交的节点(fast-forward)
git merge --no-ff:不采用fast-forward,抛弃分支的历史节点,生成新的提交
cherry-pick:复制一次提交,并生成新的提交
git cherry-pick [位置名]
rebase:把被衍合分支的每一个节点在当前分支重新提交,并生成新的提交
和 [git commit --amend] 相似
git rebase --onto [分支名] [节点名]:限制衍合深度,只重新提交指定节点名以后的节点
git rebase --interactive:交互式衍合
diff:差分文件
git diff:差分工作目录和stage
git diff [分支名]:差分工作目录和指定分支
git diff --cached:差分stage和repo
add:工作区->stage
git add
git add .:将所有当前目录下文件及子文件夹都放入stage
branch:查看分支
git branch -d [分支名]:删除指定的分支,未合并之前不允许删除
git branch -D [分支名]:强制删除一个分支
log:查看历史
git log
远程代码库
git remote add [代码库别名] https://url.your_repository:添加远程代码库
git push [远程代码库名] [本地分支名]:推送到远程代码库
git pull [远程代码库名] [本地分支名]:从远程代码库取得代码
gitclone https://url.your_repository:克隆远程代码库
设置
git config --global [key] [value]:设置全局变量
etc
HEAD标识:当前节点的别名
~:父节点
~[num]:*级父节点
-p:交互模式