版本回退
git reset --soft [版本号] | 回退后,代码改动在本地保存的还有 |
git reset --hard [版本号] | 删除本地改动,彻底抹去该版本的痕迹 |
git reset HEAD^ | 撤销最近一次的提交,这会将HEAD指针移动到上一个commit,并将文件恢复到该commit未提交状态 |
git reset [版本号] | 撤回当前提交号之后的所有提交, 就会把回滚掉的改动变成未提交状态,如果不需要可以直接删除掉,需要的话也可以add之后重新commit,最后git push -f强制提交远端仓库,把commit覆盖掉即可 |
克隆
git clone [远程仓库地址] | 克隆整个仓库到本地 |
git clone -b [分支名] [ssh公钥] | 克隆某个分支到本地 |
拉取
git pull | |
git checkout -b [本地分支m] origin/[远程分支m] | 基于远程分支m创建一个本地分支m,并使二者关联起来 |
git fetch origin [远程分支]:[本地分支] | |
git pull [远程仓库] [远程分支] | 拉取远程的某个分支来更新当前分支 |
提交
git commit -m 'xxx' | |
git commit --amend -m "xxx" | 修改最近一次提交的提交信息,如果已经推送了更改,修改提交信息后,需要强制推送更改 |
推送
将本地分支推送到远程分支并建立关联
git push -u origin [本地分支]:[远程分支] | 如果本地分支与远程分支名称不同 |
git push -u origin [本地分支] | 如果本地分支与远程分支名称相同 |
git push origin HEAD:[远程分支] | 本地分支推送到远程分支,但当前分支的远程分支和本地分支名不匹配 |
git push -f | 强推 |
暂存
git stash | 将当前分支的改动保存到一个临时区域,然后可以切换到其他分支 |
git stash apply | 将之前保存的改动应用到当前分支上,但不会删除保存的stash,这意味着可以多次应用同一个stash,或者在引用stash之后手动删除它 |
git stash pop | 将保存的改动应用到当前分支,但是它会删除保存的stash,这 意味着只能应用一次stash |
git stash list | 查看所有保存的stash |
git stash show [stash@{0}] | 查看某个stash保存的具体改动 |
git stash clear | 删除所有保存的stash |
git stash drop [stash@{0}] | 删除某个指定的stash |
cherry-pick
git cherry-pick <commitHash> | 将指定的提交应用到当前分支,这会在当前分支产生一个新的提交,因此哈希值是不一样的 |
git cherry-pick -n <commit> | 将一个 commit 复制到当前分支,并禁用自动提交,可以手动调整提交 |
git cherry-pick <HashA> <HashB> | 将A和B两个提交应用到当前分支 |
git cherry-pick A..B | 将A到B所有的提交复制到当前分支,提交A必须早于提交B,否则命令将失败,但不会报错,注意:这样写将不包含提交A |
git cherry-pick A^..B | 将A到B所有的提交复制到当前分支,包含提交A |
合并
git merge | 当你在目标分支上运行 `git merge` 命令时,如果Git能够自动合并分支,并且没有出现冲突,它会在目标分支上产生一个新的合并提交。这个合并提交会将源分支的更改合并到目标分支上 |
git merge --no-ff <源分支名> | 如果Git能够进行"快进"合并(fast-forward merge),也就是说目标分支的指针可以直接移动到源分支的最新提交,而不需要创建新的合并提交。在这种情况下,不会在目标分支上产生一个新的合并提交 如果你希望强制进行一次合并提交,即使可以进行快进合并,你可以使用 `--no-ff` 选项,它会强制Git创建一个新的合并提交 |
其他常用命令
git add . | 添加到暂存区 |
git branch -vv | 查看本地分支与远程分支的关联关系 |
git status | 检查文件状态 |
git remote update origin --prune git remote update origin -p | 更新远程分支列表 |
git branch -m [feature-branch] [new-feature-branch] | 分支重命名 本地分支重命名,如果需要修改对应远程分支名,那就删除远程分支,然后git push -u origin <local_branch_name>将本地分支重新推到远程 |