Skip to content

一、Git基本操作

1. 基本命令

git-shell.png

  • 详细说明
shell
    # 拉取远程项目
    git clone url 
    # 重命名本地仓库名称,若不指定则默认与远程仓库同名
    git clone url local_name

    # 分支相关
    # 新建分支并切换分支
    git checkout -b branch_name 
    # 基于远程分支新建分支并切换分支
    git checkout -b branch_name origin/branch_name
    # 新建分支
    git branch branch_name
    # 切换分支
    git checkout branch_name
    # 本地分支合并
    git merge branch_name
    # 撤销[不加分支]
    git checkout 
    # 撤销某个文件
    git checkout -- filename
    # 撤销全部
    git checkout -- .
    
    # 删除分支
    # 删除本地分支 未合并的的分支,会删除失败
    git branch -d 本地分支名称
    # 强制删除本地分支
    git branch -D 本地分支名称
    # 删除远程分支
    git push origin --delete 远程分支名称
    # 查看处于未合并(unmerged)状态的文件 参数 -s 或者 --short 表示状态概览 
    git status [-s]
    # 查看每一个分支的最后一次提交
    git branch -v
    # 查看哪些分支已经合并到当前分支
    git branch --merged [branch_name]
    # 查看所有包含未合并工作的分支 可以加上具体的分支名,表示尚未合并到该分支的分支有哪些
    git branch --no-merged [branch_name]
    
    # 提交相关
    # fetch 远程代码,将数据拉取到本地仓库,并不会自动合并或修改你当前的工作区
    git fetch origin 远程分支名称
    # 推送/强制覆盖提交
    git push origin branch_name [--force] 
    # 拉取 方式一
    git pull origin master
    # 拉取 方式二
    git fetch + git merge
    # 查看某次提交内容
    git show commit_id
    # 针对文件筛选加入暂存区
    git add filename
    git add filename1 filename2 ...
    git add *.cpp
    # 针对文件状态加入暂存区
    # 提交所有被删除和修改的文件到数据暂存区
    git add -u 或者 git add --update
    # 提交所有修改的和新建的数据暂存区
    git add .
    # 提交所有被删除、被替换、被修改和新增的文件到数据暂存区 
    git add -A 或者 git add --all
    # 提交暂存中的内容
    git commit -m "commit_message"
    # 简化操作
    git commit -a -m "commit_message" = git add -u + git commit -m "commit_message"
    # 修改上次提交注释
    git commit --amend
    # 文件移动
    git mv file_from file_to = mv file_from file_to + git rm file_from+git add file_to
    # 文件删除
    # 从暂存区移除文件
    git rm filename
    # 从暂存区移除,但是不从工作目录删除(用于处理忘记加到.gitignore中的文件们)
    git rm --cached filename
    git rm --cached dirname -r
    
    # 远程地址
    # 添加远程仓库地址
    git remote add origin xxx.git
    # 查看本地添加了哪些远程地址
    git remote -v
    # 删除本地指定的远程地址
    git remote remove origin
    
    # 撤销某次push提交
    git revert commitId
    # 撤销某次commit提交
    git reset commitId
    
    # 查看历史版本
    git reflog
    
    # 文件从暂存区删除
    git rm --cached filename
    
    # 查看代码改动人员
    git blame filename
    
    # stash
    # 暂存当前的工作区的文件,每次git stash都会生成一个stash@{no},
    # 也就是放到了一个列表中,no是列表的编号,恢复时选择对应的stash@{no}即可
    git shash
    # 查看所有暂存的stash列表
    git stash list
    # 查看指定暂存文件的内容
    git stash show stash@{no}
    # 恢复最新的暂存文件(即unstash)
    git shash pop
    # 恢复指定的暂存文件(即unstash)
    git stash apply stash@{no}
    # 删除指定的暂存文件
    git stash drop stash@{no}
    # 清除所有暂存文件
    git stash clear 
    # 查看帮助
    git stash --help
    
    # 查看日志
    # 查看提交历史
    git log 
    # 查看提交历史,并显示统计信息
    git log --stat
    # 查看提交历史,并显示提交差异
    git log -p
    # 查看最近六次提交历史
    git log -6
    # 查看提交历史,并图形化显示分支和合并,比较有用的一个命令
    git log --graph
    # 自定义格式化
    git log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ci) %C(bold blue)<%an>%Creset' --abbrev-commit
    
    # 未暂存部分的具体改变
    # 可查看已暂存部分的改变
    git diff --staged
    # 查看某文件的修改
    git diff filename
    # 可图形界面查看不同,object1,object2为commit对象或者分支对象
    git difftool -d object1 object2
    
    # 标签
    # 列出已有标签
    git tag
    # 打一个附注标签
    git tag -a v1.0 -m "version 1.0" 
    # 打一个轻量标签
    git tag v1.0

2. git配置用户信息

  • 查看配置
    • config 配置有system级别global(用户级别)local(当前仓库)三个,设置先从system-> global -> local 底层配置会覆盖顶层配置分别使用--system/global/local可以定位到配置文件
    • git config --local --list
  • 推荐局部配置【--global 可以换成 --local/--system
    • git config --global --unset user.name
    • git config --global --unset user.email
  • 更改git邮箱配置 git config --local user.email xxx@xxx.com
  • 更改git名称配置 git config --local user.name xxx

3. git add .git add -Agit add -u的区别

  • Git Version 1.x: git-v1.png

  • Git Version 2.x: git-v2.png

Released under the MIT License.