自己使用的常用 Git 命令,内容包括 Git 配置、基本操作、切换版本、创建分支、合并分支、提交到远程仓库、高级操作。

一、Git 配置

1. 六行配置

  1. git config --global user.name <名字>
  2. git config --global user.email <邮箱>
  3. git config --global push.default simple
  4. git config --global core.quotepath false
  5. git config --global core.editor "code --wait"
  6. git config --global core.autocrlf input

2. 查看配置

  1. git config --global --list

3. 删除配置

  1. git config --global --unset <配置的名字>

二、基本操作

1. 初始化一个空的 Git 仓库

  1. git init

2. 忽略提交特定的文件(夹)

在目录新建一个 .gitignore 目录,将想要忽略提交的内容添加即可

  1. /index.html
  2. /style.css

3. 提交代码一键三连

  1. 查看文件处于什么状态
  2. 将内容从工作目录添加到暂存区
  3. 将暂存区里的改动提交到本地的版本库
  1. git status
  2. git add .
  3. git commit -m "<字符串>" / git commit -v

三、切换版本

1. 查看版本历史

查看正常迭代的版本历史

  1. git log

优雅的查看提交分支

  1. git log --graph --pretty=oneline --abbrev-commit

所有分支的所有操作记录

  1. git reflog

按 “Q” 回到命令行

2. 切换版本

根据版本号切换版本

  1. git reset --hard <版本号>

切换到上一个版本

  1. git reset --hard HEAD

按 “Q” 回到命令行

四、创建分支

1. 创建一个新分支

创建一个分支

  1. git branch <分支名>

2. 切换分支

  1. git checkout <分支名>

切换到上一个分支

  1. git checkout -

五、合并分支

1. 合并分支

到达你想要保留的那个分支,并确定要合并的分支

  1. git checkout master
  2. git merge x

有冲突解决冲突,打开冲突文件,做优化

查看冲突文件,-sb 让查看界面更简洁

  1. git status -sb

2. 提交代码

  1. git add .
  2. git commit

这里 commit 后面不需要加任何内容,它会自动添加提交的内容

3. 删除原来的无用分支

先查看分支,-d 的意思是 delete

  1. git branch
  2. git branch -d x

六、提交到远程仓库

1. 提交到 GitHub 远程仓库

先新建一个远程仓库,复制粘贴运行以下命令,origin 是给远程仓库取的名字,可以修改的

  1. git remote add origin git@github.com:mcx2020/webpack-demo-1.git
  2. git push -u origin master

push 的杀手锏,强制 push(不要轻易使用)

  1. git push -u origin master -f

2. 提交到码云远程仓库

  1. git remote add gitee git@gitee.com:mcx2020/webpack-demo-1.git
  2. git push gitee gh-pages:master

将本地的 gh-pages 分支提交到远程仓库的 master 分支

3. 查看添加的远程仓库

  1. git remote -v

4. 换仓库提交

提交的时候,如果想换仓库,将 add 改成 set-url

  1. git remote set-url origin git@github.com:mcx2020/webpack-demo-2.git
  2. git push -u origin master

七、拉取远程分支代码

拉取的时候,首先把远程分支与本地分支做一个管理

  1. git branch --set-upstream-to=origin/main master
  2. git pull

七、下载远程仓库

1. 下载代码

别人的代码只能使用 https 下载,自己的代码可是使用 ssh 下载,下载形式有变形。

  1. git clone git@<目标路径>
  2. git clone git@<目标路径> yyy
  3. git clone git@<目标路径> .

八、高级操作

1. 通灵术

将所有未提交的代码隐藏存储起来,再切换分支弹出来

  1. git stash
  2. // 切换一下分支
  3. git stash pop

2. 设置页面预览的脚本

将打包好的 dist 中的文件上传到新的分支进行预览

  1. git branch "gh-pages"
  2. git check-out gh-pages
  3. // 将已经删除源代码的代码提交
  4. git add .
  5. git commit -m "rm source code"
  6. git push --set-upstream origin gh-pages

在 master 分支上做一个脚本

  1. // deploy.sh
  2. yarn build &&
  3. git checkout gh-pages &&
  4. rm -f *.html *.js *.css &&
  5. mv dist/* ./ &&
  6. rm -rf dist;
  7. git add . &&
  8. git commit -m 'update' &&
  9. git push &&
  10. git checkout -

九、一些题目


  1. git clone https://github.com/jirengu/wheels.git 会有什么效果?
    A. 会在当前目录下创建一个 wheels 目录
    B. 还会在当前目录下创建一个 wheels/.git 目录
    C. 还会把 master 分支的最新代码下载到当前目录里的 wheels 目录里
    正确答案:A, B, C


  2. 以下哪些命令会创建 .git目录
    A. git clone
    B. git init
    C. git pull
    D. git fetch


  3. 关于 git addgit commit -a的区别,以下说法正确的是:
    A. 对于已提交未修改的文件,文件的编辑、删除都会使其变成已修改状态。可以通过 git add暂存变动,再通过 git commit 提交
    B. 对于已提交未修改的文件,文件的编辑、删除都会使其变成已修改状态。可以直接通过git commit -a 一次性暂存变动并提交
    C. 对于新增的未追踪文件,可以通过 git add 来暂存新增变动,之后在git commit提交
    D. 对于新增的未追踪文件,可以通过 git commit -a 来暂存新增变动并提交
    正确答案:A, B, C


  4. 从 Github clone一个仓库到本地。现在需要本地仓库目录删除 readme.md,之后把变动同步到Github。以下操作能达到目的的是:
    A. rm readme.md; git add readme.md; git commit -m “删除文件”;
    B. rm readme.md; git commit -am “删除文件”;
    C. git rm readme.md; git commit -m “删除文件”;
    D. rm readme.md; git commit -m “删除文件”;
    正确答案:A, B, C


  5. 小A在提交代码时不小心把一个用于本地测试的数据库文件 database 一并提交并推送到Github,导致Github源码体积增加几百M。现在他需要在仓库中删除database文件,但本地依然保留该文件(本地开发需要),该如何操作?
    A. git rm —cached database; echo database > .gitignore; git add .; git commit -m “delete database”; git push;
    B. git rm —cached database; git add .; echo database > .gitignore; git add .; git commit -m “delete database”; git push;
    C. git rm -f database; echo database > .gitignore; git add .; git commit -m “delete database”; git push;

「@浪里淘沙的小法师」