Git常用操作
Git常用操作

创建仓库
-
创建本地仓库
-
git init
-
-
克隆远程仓库
-
git clone <远程仓库地址> <目录>省略目录,默认克隆在当前路径
-
配置
-
设置提交代码时的用户信息
-
git config --global user.name "xxxx" git config --global user.email xxx@example.com
-
-
查看所有配置
-
git config --list
-
提交
-
暂存
-
git add .
-
-
提交
-
git commit -m '提示信息'
-
-
修改最近一次提交
-
git commit --amend- 修改上一次提交的信息和/或内容,会弹出编辑器修改提交信息
-
git commit --amend --no-edit- 把暂存区的改动合并进上一次提交,不修改提交信息
-
使用
--amend后,Git 会生成一个新的 commit hash,相当于“覆盖”了上一次提交。如果这个提交已经推送到远程仓库,那么你需要使用 git push --force或 git push --force-with-lease来更新远程
-
分支
-
查看分支
-
git branch查看分支(列出本地仓库所有分支) -
git branch -r列出远程仓库所有分支 -
git branch -a列出所有分支 本地+远程 -
git barnch -v查看每个分支的最新提交 -
git branch -vv查看当前分支跟踪的远程分支,git push默认将代码推送到该分支
-
-
创建和切换分支
-
git branch 新分支名创建新分支 -
git checkout 分支名切换分支 -
git checkout -b 新分支名创建并切换到新分支
-
创建新分支时,新分支保存了当前分支的历史提交
工作区和暂存区是共享的,当前未提交的工作区内容(未暂存、已暂存未提交)会在切换到其他分支时保持,一旦提交,则切换到其他分支时就只显示该分支最后一次提交的状态
-
删除分支
-
git branch -d 分支名安全删除已合并的分支,检查分支是否合并 -
git branch -D 分支名强制删除未合并的分支
-
-
重命名分支
-
git branch -m 新分支名重命名当前分支名 -
git branch -m 旧分支名 新分支名重命名已有的分支名
-
-
合并分支
-
git merge 分支名 -m '提示信息' 将一条分支合并到当前分支,并且添加此次合并的提交信息。合并分支文件发生变化时算作一次提交,若合并分支并未发生变化,则不会产生提交。 -
git branch --merged查看已合并到当前分支的分支列表 -
git branch --no-merged查看未合并到当前分支的分支列表
-
储藏当前修改
-
储藏当前修改
-
git stash 将所有未提交的更改保存到一个新的储藏堆栈中,并将你的工作区恢复到最后一次提交的状态(干净的状态)。
在版本号>= 2.13.0的Git中,增加了对未跟踪的文件(Untracked files)进行备份。未提交的更改包括修改但未暂存、暂存、未跟踪文件,之前版本只备份修改但未暂存、暂存的更改 -
git stash push -m "提示信息"带提示信息储藏当前修改
-
-
恢复当前储藏
-
git stash pop恢复并删除最新储藏 -
git stash apply恢复但不删除储藏 -
git stash branch 新分支名为储藏的更改创建一个新分支
-
-
查看储藏
-
git stash list列出所有储藏
-
查看提交信息
-
查看完整提交日志
-
git log
-
-
提高可视化
-
git log --oneline --graph
-
切换历史版本
-
临时切换到历史版本
-
git checkout 提交哈希值
-
-
永久回退到历史版本
-
git reset 提交哈希值-
--soft (软回退) :- 只回退仓库历史,暂存区和工作目录的文件内容保持不变。
-
--mixed (混合回退,默认模式) :- 回退仓库历史和暂存区。
- 但你工作目录的文件内容保持不变,所有更改作为未暂存的修改存在。
-
--hard (硬回退) :- 彻底回退:仓库历史、暂存区工作目录全部回退到指定提交的状态。
- 你自该次提交以来的所有未提交的更改(包括工作目录的修改)都将被永久丢弃!
-
-
撤回
-
查看变更历史
git reflog- 打印出所有变更历史,包括修改提交、创建分支等,并且会以
HEAD@{x}的形式唯一表明每一次变更记录,其中x表示一个数字
- 打印出所有变更历史,包括修改提交、创建分支等,并且会以
-
撤回至历史变更
git reset --soft HEAD@{x}-
HEAD@{x}是通过git reflog查询到的变更记录 -
HEAD@{x}不同于HEAD~x,HEAD@{x}表示变更记录,HEAD~x只表示提交记录。变更包括commit、commit(amend)、checkout、reset等。
-
-
撤回最近一次本地提交,但保留修改内容
git reset --soft HEAD~1- 效果:提交被撤回,但是所有修改保留在暂存区(相当于git add后)
-
撤销提交并取消暂存修改,但保留文件改动
git reset HEAD~1 # 或简写(默认 --mixed)- 效果:撤回提交,修改会保留在工作区
-
彻底丢弃最近一次提交和所有修改
git reset --hard HEAD~1- 效果:提交和所有修改直接删除,工作目录恢复到上一次提交的状态

浙公网安备 33010602011771号