Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

面试官:说说Git常用的命令有哪些? #1

Open
linwu-hi opened this issue Jul 30, 2023 · 0 comments
Open

面试官:说说Git常用的命令有哪些? #1

linwu-hi opened this issue Jul 30, 2023 · 0 comments
Labels

Comments

@linwu-hi
Copy link
Owner

linwu-hi commented Jul 30, 2023

面试官:说说Git常用的命令有哪些?

image

一、前言

在日常的Git操作中,我们通常只需要掌握一小部分简单的命令,如下图所示的六个命令即可:

Six Basic Git Commands

然而,要熟练使用Git,了解超过60多个命令将是非常有帮助的。接下来,我们将介绍一些常见的Git命令供参考。

二、常用的Git命令

1. 配置

Git提供了一个名为git config的工具,用于设置控制Git外观和行为的配置变量。安装完Git后,第一件事就是设置用户名和邮件地址,这些信息会被写入每次的提交中,且不可更改。

设置提交代码时的用户信息命令如下:

  • git config [--global] user.name "[name]"
  • git config [--global] user.email "[email address]"

2. 启动

一个Git项目可以通过两种方式初始化:

  • git init [project-name]: 在当前目录创建或初始化一个Git代码库。
  • git clone url: 克隆一个项目及其整个代码历史。

3. 日常基本操作

在日常工作中,常用的基本操作如下:

git init                       # 初始化仓库,默认为 master 分支
git add .                      # 提交全部文件修改到缓存区
git add <具体某个文件路径+全名> # 提交某些文件到缓存区
git diff                       # 查看当前代码 add 后,会 add 哪些内容
git diff --staged              # 查看现在 commit 提交后,会提交哪些内容
git status                     # 查看当前分支状态
git pull <远程仓库名> <远程分支名>   # 拉取远程仓库的分支与本地当前分支合并
git pull <远程仓库名> <远程分支名>:<本地分支名> # 拉取远程仓库的分支与本地某个分支合并
git commit -m "<注释>"         # 提交代码到本地仓库,并写提交注释
git commit -v                  # 提交时显示所有diff信息
git commit --amend [file1] [file2]  # 重做上一次commit,并包括指定文件的新变化

关于提交信息的格式,可以遵循以下规则:

  • feat: 新特性,添加功能
  • fix: 修改bug
  • refactor: 代码重构
  • docs: 文档修改
  • style: 代码格式修改,注意不是CSS修改
  • test: 测试用例修改
  • chore: 其他修改,比如构建流程,依赖管理

4. 分支操作

常用的分支操作如下:

git branch              # 查看本地所有分支
git branch -r           # 查看远程所有分支
git branch -a           # 查看本地和远程所有分支
git merge <分支名>      # 合并分支
git merge --abort       # 合并分支出现冲突时,取消合并,回到合并前的状态
git branch <新分支名>   # 基于当前分支,新建一个分支
git checkout --orphan <新分支名>  # 新建一个空分支(会保留之前分支的所有文件)
git branch -D <分支名>   # 删除本地某个分支
git push <远程库名> :<分支名>  # 删除远程某个分支
git branch <新分支名称> <提交ID>  # 从提交历史恢复某个删除的分支
git branch -m <原分支名> <新分支名>  # 分支更名
git checkout <分支名>   # 切换到本地某个分支
git checkout <远程库名>/<分支名>  # 切换到线上某个分支
git checkout -b <新分支名>  # 基于当前分支新建分支,并切换为这个分支

5. 远程同步

常见的远程操作命令:

git fetch [remote]        # 下载远程仓库的所有变动
git remote -v             # 显示所有远程仓库
git pull [remote] [branch]  # 拉取远程仓库的分支与本地当前分支合并
git fetch                 # 获取线上最新版信息记录,不合并
git push [remote] [branch]  # 上传本地指定分支到远程仓库
git push [remote] --force  # 强行推送当前分支到远程仓库,即使有冲突
git push [remote] --all    # 推送所有分支到远程仓库

6. 撤销

git checkout [file]                  # 恢复暂存区的指定文件到工作区
git checkout [commit] [file]         # 恢复某个commit的指定文件到暂存区和工作区
git checkout .                      # 恢复暂存区的所有文件到工作区
git reset [commit]                   # 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
git reset --hard                     # 重置暂存区与工作区,与上一次commit保持一致
git reset [file]                     # 重置暂存区的指定文件,与上一次commit保持一致,但工作区不

变
git revert [commit]                  # 后者的所有变化都将被前者抵消,并应用到当前分支

注意:reset是真实硬性回滚,目标版本后面的提交记录全部丢失了;revert也是回滚操作,但这个回滚操作相当于一个新的提交,目标版本后面的提交记录也全部被保留。

7. 存储操作

当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作,但又不想提交这些杂乱的代码,这时候可以将代码进行存储。

git stash                  # 暂时将未提交的变化移除
git stash pop              # 取出储藏中最后存入的工作状态进行恢复,并删除储藏
git stash list             # 查看所有储藏中的工作
git stash apply <储藏的名称>  # 取出储藏中对应的工作状态进行恢复,不会删除储藏
git stash clear            # 清空所有储藏中的工作
git stash drop <储藏的名称>   # 删除对应的某个储藏

三、总结

以下是Git常用命令速查表:

Git Command Cheat Sheet

参考文献

@linwu-hi linwu-hi added good first issue Good for newcomers git and removed good first issue Good for newcomers labels Jul 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant