Git 常用操作

  • git update-index --assume-unchanged <filename> 本地开发总存在一些不想提交到远程的文件
  • git rm <-r | -n> --cached <filename> 移除上一次的 commit 中提交了不该提交的信息
  • git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch <filename>' --prune-empty --tag-name-filter cat -- --all 历史记录中有不想要提交的内容,通过该命令能全部清除
  • git log --pretty=oneline 只会留下 commit id (版本号 (用 SHA1 字串表示))和 提交版本时的描述信息
  • git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done 将远程的所有分支映射到本地
  • git branch --set-upstream-to=origin/<branch-name> | git push --set-upstream origin <branch-name> | git checkout --track origin/<branch-name> | git branch -vv git 分支关联所需命令

设置指定的本地文件不提交

场景:本地开发总存在一些不想提交到远程的文件
命令:git update-index --assume-unchanged <filename>
逆向命令:git update-index --no-assume-unchanged <filename>

移除上次提交的某些文件

场景:想要移除上一次的 commit 中提交了不该提交的信息
命令:git rm <-r | -n> --cached <filename>

  1. 如果目标是文件夹,添加 -r
  2. 如果仅仅列出即将被操作的文件,添加 -n

清除历史记录中的某些文件

场景:历史记录中有不想要提交的内容,通过该命令能全部清除
命令:git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch <filename>' --prune-empty --tag-name-filter cat -- --all
注意:

  1. 这里的文件或文件夹,都不能以 ‘/’ 开头,否则文件或文件夹会被认为是从 git 的安装目录开始。
  2. 如果要删除的目标是文件夹,需要使用 git rm --cached -r 表示递归删除子文件夹和文件夹下的文件

后续步骤:

  1. 推送我们的修改 git push origin master --force --all
  2. 推送 tags git push origin master --force --tags
  3. 清理和回收控件
    1. rm --rf .git/refs/original
    2. git reflog expire --expire=now --all
    3. git gc --prune=now
    4. git gc --aggressive --prune=now

简化 git log 的信息

场景:git log 中包含太多信息无法快速浏览
命令:git log --pretty=oneline
说明:

  1. –pretty=oneline [只会留下 commit id (版本号 (用 SHA1 字串表示))和 提交版本时的描述信息]

根据远程分支建立本地分支并关联

场景:需要将远程的所有分支映射到本地
命令:git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
说明:

  1. 此命令仅会在本地创建分支,并关联对应的远程分支,如果需要拉取对应分支的内容还需要

    1
    2
    git fetch --all
    git pull --all
  2. 命令中的 origin 是指 remote 的名称 如果需要拉取其它 remote 的分支时需要对应修改

设置本地分支关联指定的远程分支

场景:本地已有的分支和远程分支名不同,需要手动关联
命令:git branch --set-upstream-to=origin/<branch-name> | git push --set-upstream origin <branch-name>
说明:

  1. 如果希望创建并关联与远程分支同名的本地分支,可以使用 git checkout --track origin/<branch-name>
  2. 查看本地分支的关联远程分支的信息,可以使用 git branch -vv