Git常用操作

image

Git常用操作

image

创建仓库

  • 创建本地仓库

    • 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~xHEAD@{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
    
    • 效果:提交和所有修改直接删除,工作目录恢复到上一次提交的状态
posted @ 2025-08-29 15:01  重光拾  阅读(49)  评论(0)    收藏  举报