git
Git 相关面试问题和答案
1. 常用命令
- git add 把修改添加到暂存区
- git commit 提交到本地仓库
- git push 推送到远程仓库
- git pull 获取远程分支的更新
- git merge 合并分支
- git checkout 切换分支
- git branch 查看分支
2. 本地代码没有提交如何获取远程分支最新的代码
- git stash 临时储存工作区的修改
- git pull 获取远程分支的更新
- git stash pop 把暂存区的内容放回到工作区
3. 如何处理冲突
- 先 git status 查看有冲突的文件
- 手动修改冲突,不确定如何修改冲突时和同事协商
- git add、git commit 提交修改文件
4. 回退版本
- git reset --hard <版本号> 回退到当前版本号,放弃之后的所有提交(不建议使用)
- git revert <版本号> 撤销此版本的提交,生成一条新的记录(常用)
5. 把其他分支的提交合并到当前分支
- git cherry-pick 版本号
6. 线上代码出现问题如何处理
- 回滚线上代码
- 从主分支创建 bugfix(如果工作区有修改时,使用 git stash 暂存)
- 修复完成后把 bugfix 合并到主分支
7. git rebase 和 git merge 的区别
7.1. git merge 目标分支:
- 将目标分支的更改合并到当前分支。
- 会生成一个新的合并提交,记录合并操作。
7.2. git rebase 目标分支:
- 合并分支后不产生额外的合并提交。
- 保留目标分支所有的commit。
- 当前分支的 commit 放到目标分支 commit 的后边。
8. git stash
作用:临时保存当前工作区和暂存区的修改
使用场景:
- 本地有修改但是要 git pull 最新代码时
- 线上有问题要切换分支,但是本地工作区有修改时
9. 配置用户信息
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config -l // 查看配置
10. git 常用命令
- 初始化git仓库
git init- 初始化完成以后当前目录下会自动创建一个 .git 隐藏文件夹,存代码修改记录
- 查看当前仓库状态
git status - 把文件从工作区添加到暂存区
git add 文件/文件夹路径 - 把文件从暂存区提交到本地仓库
git commit -m"本次提交描述"- 如果文件已经存在仓库内,可以合并git add和git commit为
git commit -am"描述"
- 如果文件已经存在仓库内,可以合并git add和git commit为
- 查看提交记录
git log - 把修改从暂存区还原到工作区
git reset HEAD 文件名 - 回退版本
git reset --hard commitId - 查看git仓库的所有操作记录
git reflog - 查看本次修改的具体内容
git diff - 放弃工作区的修改(谨慎使用)
git checkout -- 文件路径 - 撤销中间某一次的提交
git revert 要撤销的版本号面试常问
11. 远程仓库
11.1. 连接仓库前的准备
-
创建ssh key
- 生成ssh key
ssh-keygen -t rsa -C "你的邮箱" - 自动生成 .ssh 文件夹
- windows系统存在 C盘 => 用户 => .ssh
- mac系统存在 ~/.ssh,
- 生成ssh key
-
cat ~/.ssh/id_rsa.pub查看公钥文件- 把 id_rsa.pub 文件内容添加远程网站的 ssh 设置中
11.2. 先有本地仓库,后创建远程仓库
- 创建远程仓库
- 本地仓库和远程仓库建立链接
git remote add origin 仓库地址 - 把本地仓库推送到远程仓库
git push -u origin master - 查看远程仓库信息
git remote -v - 删除和远程仓库的关联
git remote rm origin
11.3. 先有远程仓库,直接从远程仓库拉取代码
- 克隆远程代码到本地
git clone 仓库地址
11.4. 远程仓库常用命令
- 拉取远程此分支的更新,合并到本地此分支
git pullgit pull相当于git fetch+git merge
- 把本地代码推送到远程
git push - 强制推送
git push -f(谨慎使用)
12. 分支管理
- 创建分支(注意查看创建分支时本地的状态,是否需要提交)
git checkout -b 分支名 - 查看本地分支
git branch - 切换分支
git checkout 分支名 - 删除已经合并过的分支
git branch -d 分支名 - 删除未被合并过的的分支
git branch -D 分支名 - 把本地分支推送到远程分支并且建立连接
git push -u origin 分支名 - 合并分支
git merge 要合并的分支 - 本地切换到远程的分支,如果本地之前没有此分支需要两步 面试常问
git fetch获取远程仓库的更新git checkout 分支名
- 合并分支,分支变基
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