基础操作
更新当前分支
git pull
取回其他分支的更新
git fetch git fetch xxx
基于当前分支创建新分支并切换到新分支
git co -b xxx
直接切换到某个本地分支
git co xxx
把改动加入缓冲区
git add xxx git add .
提交时建议使用commitizen插件,可以生成规范化的commit message
git cz git commit git commit -m "xxx"
修补提交(添加补丁/修改commit message)
git commit --amend
生成patch/打patch
未commit的改动
git format-patch 【commit sha1 id】 -1 //某次提交 git format-patch 【commit sha1 id】 -n // 某次提交含之前几次提交 git format-patch 【commit sha1 id】..【commit sha1 id】 // 某两次提交之间的所有patch git diff 【commit sha1 id】 【commit sha1 id】 > 【diff文件名】 // 两次提交之间差异 git apply patch git apply --stat newpatch.patch git apply --check newpatch.patch
已经commit的改动,
先git log 查看commit ID, 记录你想要打的补丁的ID
git diff xxxx xxxx > patch
从缓冲区删除不需要的文件(git add了不需要提交的东西)
git rm --cached 文件路径
多个feature修改代码的同一部分时,使用git rebase使一个分支基于另一个分支进行改动
git rebase <target-branch-name>
原理:rebase命令会把当前分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到”.git/rebase”目录中),然后把当前分支更新为最新的target分支,最后把保存的这些补丁应用到当前分支上。
本地分支xxx推送到远端分支yyy
git push origin xxx:yyy
本地分支退回到之前某个commit的状态
保存改动
git reset --soft [commit sha1 id] git reset --mixed [commit sha1 id]
不保存改动(一般需要提前用patch或者stash备份下)
git reset --hard 【commit sha1 id】
比较两个分支的代码差异
git diff br1 br2 git diff br1 br2 --stat git diff br1 br2 /path/to/file
骚操作
后悔药:退回到某个本地命令之前的状态
git reflog show 复制下之前某个命令的HEAD码 git reset