← Frontend / Interview

git

Git 相关面试问题和答案

1. 常用命令

  1. git add 把修改添加到暂存区
  2. git commit 提交到本地仓库
  3. git push 推送到远程仓库
  4. git pull 获取远程分支的更新
  5. git merge 合并分支
  6. git checkout 切换分支
  7. git branch 查看分支

2. 本地代码没有提交如何获取远程分支最新的代码

  1. git stash 临时储存工作区的修改
  2. git pull 获取远程分支的更新
  3. git stash pop 把暂存区的内容放回到工作区

3. 如何处理冲突

  1. 先 git status 查看有冲突的文件
  2. 手动修改冲突,不确定如何修改冲突时和同事协商
  3. git add、git commit 提交修改文件

4. 回退版本

  1. git reset --hard <版本号> 回退到当前版本号,放弃之后的所有提交(不建议使用)
  2. git revert <版本号> 撤销此版本的提交,生成一条新的记录(常用)

5. 把其他分支的提交合并到当前分支

  1. git cherry-pick 版本号

6. 线上代码出现问题如何处理

  1. 回滚线上代码
  2. 从主分支创建 bugfix(如果工作区有修改时,使用 git stash 暂存)
  3. 修复完成后把 bugfix 合并到主分支

7. git rebase 和 git merge 的区别

7.1. git merge 目标分支:

  1. 将目标分支的更改合并到当前分支。
  2. 会生成一个新的合并提交,记录合并操作。

7.2. git rebase 目标分支:

  1. 合并分支后不产生额外的合并提交。
  2. 保留目标分支所有的commit。
  3. 当前分支的 commit 放到目标分支 commit 的后边。

8. git stash

作用:临时保存当前工作区和暂存区的修改

使用场景:

  1. 本地有修改但是要 git pull 最新代码时
  2. 线上有问题要切换分支,但是本地工作区有修改时

9. 配置用户信息

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config -l // 查看配置

10. git 常用命令

  1. 初始化git仓库 git init
    • 初始化完成以后当前目录下会自动创建一个 .git 隐藏文件夹,存代码修改记录
  2. 查看当前仓库状态  git status
  3. 把文件从工作区添加到暂存区 git add 文件/文件夹路径
  4. 把文件从暂存区提交到本地仓库 git commit -m"本次提交描述"
    • 如果文件已经存在仓库内,可以合并git add和git commit为 git commit -am"描述"
  5. 查看提交记录 git log
  6. 把修改从暂存区还原到工作区 git reset HEAD 文件名
  7. 回退版本 git reset --hard commitId
  8. 查看git仓库的所有操作记录 git reflog
  9. 查看本次修改的具体内容 git diff
  10. 放弃工作区的修改(谨慎使用) git checkout -- 文件路径
  11. 撤销中间某一次的提交 git revert 要撤销的版本号 面试常问

11. 远程仓库

11.1. 连接仓库前的准备

  1. 创建ssh key

    • 生成ssh key ssh-keygen -t rsa -C "你的邮箱"
    • 自动生成 .ssh 文件夹
    • windows系统存在 C盘 => 用户 => .ssh
    • mac系统存在 ~/.ssh,
  2. cat ~/.ssh/id_rsa.pub 查看公钥文件

    • 把 id_rsa.pub 文件内容添加远程网站的 ssh 设置中

11.2. 先有本地仓库,后创建远程仓库

  1. 创建远程仓库
  2. 本地仓库和远程仓库建立链接 git remote add origin 仓库地址
  3. 把本地仓库推送到远程仓库 git push -u origin master
  4. 查看远程仓库信息 git remote -v
  5. 删除和远程仓库的关联 git remote rm origin

11.3. 先有远程仓库,直接从远程仓库拉取代码

  1. 克隆远程代码到本地 git clone 仓库地址

11.4. 远程仓库常用命令

  1. 拉取远程此分支的更新,合并到本地此分支 git pull
    • git pull相当于git fetch + git merge
  2. 把本地代码推送到远程 git push
  3. 强制推送 git push -f (谨慎使用)

12. 分支管理

  1. 创建分支(注意查看创建分支时本地的状态,是否需要提交) git checkout -b 分支名
  2. 查看本地分支 git branch
  3. 切换分支 git checkout 分支名
  4. 删除已经合并过的分支 git branch -d 分支名
  5. 删除未被合并过的的分支 git branch -D 分支名
  6. 把本地分支推送到远程分支并且建立连接 git push -u origin 分支名
  7. 合并分支 git merge 要合并的分支
  8. 本地切换到远程的分支,如果本地之前没有此分支需要两步 面试常问
    • git fetch 获取远程仓库的更新
    • git checkout 分支名
  9. 合并分支,分支变基 git rebase 要合并的分支 面试常问

13. 配置常用命令别名

  • git config --global alias.st status
  • git config --global alias.ci commit
  • git config --global alias.co checkout
  • git config --global alias.br branch