1. 创建版本库:

    1. 新建本地仓库:
      git init
    2. 新建远程仓库:
      请使用 gitlab
    3. 从远程仓库拉取:
      # 需要输入用户名/密码
      git clone http://xxx/xx.git
      # 使用 ssh key 免输密码
      git clone git@xxx/xx.git
      # 使用 username/password 免输密码
      git clone http://username:password@xxx/xx.git
  2. 配置:

    1. 查看配置:
      git config --list
    2. 编辑/删除配置:
      git config --global --edit
    3. 基本配置:
      # 设置提交者名称
      git config --global user.name "admin"
      # 设置提交者邮箱
      git config --global user.email "admin@test.com"
      # 保存密码(全局)
      git config --global credential.helper store
      # 配置仓库的用户名和密码(可以免密 push / pull)
      git config --global url.http://username:password@xxx.com/.insteadof http://xxx.com/
      # 高亮显示关键词
      git config --global color.ui true
      # 设置命令别名(例:使用 git co 代替 git checkout)
      git config --global alias.co checkout
      # mergetool 相关配置
      git config --global merge.tool vimdiff
      git config --global merge.conflictstyle diff3
      git config --global mergetool.prompt false
    4. 设置忽略文件(.gitignore):
      *.map
      /node-modules/
  3. 将文件改动到暂存区

    1. 添加:
      git add readme.md
      git add .
    2. 删除:
      # 保留原文件
      git rm --cached readme.md
      # 删除原文件
      git rm readme.md
      # 删除文件夹
      git rm -r node-modules
    3. 重命名:
      git mv readme.md readme.md.back
  4. 提交改动到本地仓库
    git commit -m 'message'

  5. 分支管理:

    1. 查看分支:
      # 查看本地分支
      git branch
      # 查看远程分支
      git branch -r
      # 查看本地和远程分支的对应关系
      git branch -vv
    2. 新建分支:
      # 以当前本地分支为模板,创建新分支
      git checkout -b dev
      # 将远程分支拉取到本地
      git checkout -b dev origin/dev
    3. 切换分支:
      git checkout master
    4. 设置本地仓库与远程仓库分支的映射关系(将远程 dev分支 映射到本地 dev分支):
      git branch --set-upstream-to=origin/dev dev
    5. 合并分支:
      # 合并指定分支到当前分支
      git merge dev
      # 合并某个提交
      git cherry-pick 标签/版本号
      # 取消合并
      git merge --abort
    6. 删除分支:
      # 删除本地分支
      git branch -d dev
      # 删除远程分支
      git push origin --delete dev
  6. 标签管理:

    # 列出所有标签
    git tag
    # 在当前版本号新建标签
    git tag v1.0
    # 在指定版本号新建标签
    git tag v1.0 版本号
    # 删除本地标签
    git tag -d v1.0
    # 删除远程标签
    git push origin :refs/tags/v1.0
    # 查看标签修改信息
    git show v1.0
    # 提交指定标签到远程仓库
    git push origin v1.0
    # 提交所有标签到远程仓库
    git push origin --tags
    # 以某个标签为基准点,新建一个分支
    git checkout -b dev v1.0
  7. 查看信息:

    # 显示本地有修改的文件
    git status
    # 查看日志(简短日志)
    git reflog
    # 查看远程日志
    git reflog origin/dev
    # 查看日志(单行显示)
    git log --pretty=oneline
    # 查看日志(详细信息)
    git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
    # 在日志中搜索指定内容
    git log --pretty=oneline --grep 关键词
    # 查看某个文件的日志
    git log --pretty=oneline --follow -p readme.md
    # 统计用户的提交次数
    git shortlog -sn
    # 查看某个文件被谁修改过
    git blame readme.md
    # 查看当前有哪些修改
    git diff
    # 查看两个分支之间的差异
    git diff master dev
    # 统计有哪些修改
    git diff --shortstat
    # 查看某个版本号的修改内容
    git show 版本号
    # 查看某个版本号修改的文件
    git show --name-only 版本号
  8. 远程同步:

    # 新建本地仓库
    git init
    # 添加远程仓库,并取名叫 origin
    git remote add origin http://xxx/xx.git
    或
    git remote add origin http://username:password@xxx/xx.git
    # 添加修改
    git add .
    # 提交修改
    git commit -m "xx"
    # 推送到远程仓库
    git push -u origin "master"
    # 以当前本地分支为模板,创建新分支
    git checkout -b dev
    # 提交当前分支到远程分支
    git push origin dev
    # 推送所有分支到远程仓库
    git push origin --all
    # 设置本地仓库与远程仓库分支的映射关系(将远程 dev分支 映射到本地 dev分支)
    git branch --set-upstream-to=origin/dev dev
    # 显示所有远程仓库
    git remote -v
    # 删除远程仓库
    git remote rm origin
    # 拉取远程分支的变动到当前分支
    git pull origin dev
  9. 撤销操作:

    # 撤销某个文件的修改(未 git add 之前)
    git checkout readme.md
    # 撤销所有文件的修改(未 git add 之前)
    git checkout .
    # 恢复某个文件(git add 之后,git commit 之前。注意:不带 --hard 参数)
    git reset readme.md
    # 恢复所有文件(git add 之后,git commit 之前)
    git reset --hard  (推送到远程:git push -f)
    # 以指定版本号为基准点,恢复所有文件
    git reset --hard 版本号
    # 回滚某次提交的内容
    git revert 版本号
    # 暂存文件
    git stash save "xx"
    # 查看暂存列表
    git stash list
    # 从暂存区恢复并删除指定暂存
    git stash pop stash@{0}
    # 从暂存区恢复并删除所有暂存
    git stash pop
  10. 使用 mergetool 处理冲突(vimdiff 版):

    1. 配置:
      # 使用 vimdiff 作为默认的合并工具
      git config --global merge.tool vimdiff
      # 合并时显示出冲突分支的共同祖先
      git config --global merge.conflictstyle diff3
      # 禁用 vimdiff 的提示
      git config --global mergetool.prompt false
    2. 使用:
      1. git 命令:
        git mergetool
      2. vim 切换窗口:
        Ctrl + w
      3. mergetool 命令:
        # 使用远程版(图右)
        :diffg RE
        # 使用原始版(图中)
        :diffg BA
        # 使用本地版(图左)
        :diffg LO
      4. 保存退出:
        :xa
  11. 忽略文件语法:

    1. 创建.gitignore
    2. 注释符#
    3. 忽略文件:
      # 忽略所有以 db 结尾的文件
      *.db
      # 忽略当前文件夹中以 db 结尾的文件
      /*.db
      # 忽略当前目录 tmp 文件夹中所有以 db 结尾的文件
      /tmp/*.db
    4. 忽略文件夹:
      # 忽略当前目录中 cache/template 文件夹
      /cache/template/
    5. 使 .gitignore 生效(删除已提交的版本库中的文件/文件夹):
      # 删除文件
      git rm --cached tmp/*.db
      # 删除文件夹
      git rm -r --cached tmp
文档更新时间: 2024-04-20 10:57   作者:lee