Git作业_0918
一、主观题
1. 你会使用 Git 吗?(以面试者的口吻回答,要详细)
Git 是一个分布式版本控制系统,能在工作中高效管理代码版本、协作开发和解决冲突。
核心能力:
- 日常操作:
使用git clone复制远程仓库,git add和git commit提交更改,git push/pull同步远程代码,以及git branch/merge管理分支。 - 高级功能:
用git stash暂存未完成的工作,用git rebase整理提交历史,并通过git reflog恢复误操作。- 例如,在团队协作中,创建
feature分支开发新功能,完成后通过 PR 合并到main分支。
- 例如,在团队协作中,创建
- 场景经验:
曾处理过代码冲突:手动编辑冲突文件 →git add标记解决 →git commit完成合并。我还配置过.gitignore忽略编译文件(如target/),确保仓库整洁。
2. 列举工作中常用的几个 git 命令?(以面试者的口吻回答,要详细)
工作中最常用的 Git 命令包括:
git status:
查看工作区和暂存区状态。例如修改文件后运行它,会显示modified: file.txt,提示未提交的变更。- **
git add -A**或者git add .:
将所有变更添加到暂存区。若只添加特定文件,用git add file.txt。 git commit -m "message":
提交暂存区的变更到本地仓库。例如git commit -m "修复登录逻辑"会生成一个带描述的新版本。git push origin main:
推送本地提交到远程仓库的main分支。首次推送需关联分支:git push -u origin main。git pull:
拉取远程最新代码并自动合并(等价于git fetch+git merge)。若本地有未提交变更,需先用git stash暂存。git checkout -b feature:
创建并切换到新分支(如feature)。完成后用git merge feature合并回主分支。
3. 简单介绍一下 Git 的工作流程(以面试者的口吻回答,要详细)
Git 的标准工作流程分为五步:
- 克隆仓库:
用git clone 仓库地址下载远程仓库到本地。 - 创建分支:
基于main分支新建开发分支:git checkout -b dev。 - 开发与提交:
在工作区修改代码 →git add -A添加到暂存区 →git commit -m "描述"提交到本地仓库。 - 同步远程:
定期git pull origin main拉取团队更新,避免冲突;开发完成后git push origin dev推送分支。 - 合并与部署:
提交 PR/MR 请求将dev合并到main,通过代码审核后部署到生产环境。
4. Git 是用什么语言编写的?
Git 主要使用 C 语言编写,部分脚本用 Shell 和 Perl 实现。C 语言的高效性使 Git 能快速处理大型项目(如 Linux 内核)。
5. 什么是 git stash? 什么是 git stash drop?
git stash:临时保存工作区的未提交变更,方便切换分支或拉取代码。例如:
1
2
3git stash # 保存变更
git pull # 拉取远程代码
git stash pop # 恢复变更git stash drop:
删除指定的暂存条目。- 例如
git stash drop stash@{0}删除第一次保存的内容。 - 与
git stash pop(恢复后自动删除)不同,drop只删除不恢复。
- 例如
6. 我提交版本是写了版本描述,发现写的不好,想修改,怎么修改?
使用 git commit --amend 修改最近一次提交的描述:
1 | git commit --amend -m "新描述" # 直接替换描述 |
若需修改提交内容,先更新文件 → git add -A → 再运行git commit --amend
注意:若已推送到远程,需强制推送(git push --force),但可能影响团队协作,应谨慎使用。
7. 大公司的分支一般有哪些分支? 这些分支的工作流程是什么?
大公司常用 Git Flow 分支模型:
- 分支类型:
main/master:生产环境代码,仅存放稳定版本。develop:集成分支,合并所有新功能。feature/*:功能分支,从develop分出,开发完成后合并回develop。release/*:预发布分支,用于测试和修复 Bug,合并到main和develop。hotfix/*:热修复分支,从main分出,紧急修复生产环境问题。
- 工作流程:
- 新功能在
feature/login分支开发。 - 完成 → 提交 PR 合并到
develop。 - 测试通过 → 从
develop创建release/v1.0分支。 - 预发布测试 → 合并到
main并打标签(git tag v1.0)。 - 生产环境 Bug → 从
main创建hotfix/issue1,修复后合并回main和develop。
- 新功能在
8. 练习一下分支合并(没有冲突和有冲突)
无冲突合并:
1
2
3git checkout main # 切换到目标分支
git merge feature-login # 合并 feature-login 分支
git push origin main # 推送合并结果若两分支无重叠修改,Git 自动完成合并(Fast-forward)。
有冲突合并:
合并时报错:
CONFLICT (content): Merge conflict in file.txt。打开冲突文件,手动解决(删除
<<<<<<<=======>>>>>>>标记)。标记解决:
1
2git add file.txt # 添加解决后的文件
git commit -m "解决合并冲突" # 完成合并
9. 练习一下抓取远程分支和推送指定的分支到远程
抓取远程分支:
1
2git fetch origin # 获取远程所有分支信息
git checkout -b dev origin/dev # 创建本地分支并关联远程分支推送指定分支:
1
git push origin dev # 推送本地 dev 分支到远程 dev
10. 什么是 clone 克隆、branch 分支和 fork 复刻?区别是什么?
Clone(克隆):
复制远程仓库到本地,如git clone https://gitee.com/project.git,创建完整的本地副本。Branch(分支):
在仓库内创建独立开发线,如git branch feature,用于隔离开发新功能。Fork(复刻):
在代码平台(如 Gitee)复制他人仓库到自己的账户,创建独立新仓库,用于贡献开源项目。区别:
| 操作 | 范围 | 目的 |
| :






