git常问问题

1.删除修改
在工作区删除修改:git checkout – file(用版本库中的文件替换修改)
在暂存区删除修改:git reset HEAD file 回退到工作区,再git checkout – file
删除版本库修改:版本回退git reset –hard HEAD^(HEAD指向当前版本,HEAD^指向上一版本,HEAD^^指向上上版本)

2.从版本库中删除文件
先在工作区删除文件 git rm file
在提交修改到版本库 git commit

3.分支
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d

4.解决分支合并冲突
分支提交冲突:当分支对某文件某句话进行修改后,切换到主分支也对该文件该句话进行修改,使用git merge进行合并,需要将两个修改进行合并。此时合并产生冲突。
这里写图片描述
解决办法:
1.git status查看冲突文件
2.vim 打开冲突文件,查看内容
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容
这里写图片描述
3.修改问件内容
4.提交 git add file ; git commit -m ” “

查看分支合并图 git log –graph

<think>嗯,用户想了解Git面试问题,看起来是在准备技术面试。从引用内容看,用户已经收集了不少参考资料,但需要系统性的整理。用户可能正在紧张准备面试,需要清晰、实用的Git知识点梳理。 我注意到引用内容覆盖了Git基础、分支管理、暂存机制等核心概念,但用户可能需要更结构化的分类。根据引用[2]和[5],面试问题分三个层次:基础操作(如用命令)、进阶场景(如冲突解决)、分布式特性(如与SVN区别)。 用户特别提到“git面试问题”,说明需要高频考点而非冷门知识。引用[1][3]都强调了实用性和实际开发场景的结合,因此回答要避免纯理论,多举典型例子。比如引用[5]的git stash场景就很经典。 准备这样组织回答:先按难度分级(基础/中级/高级),每类列出最的3-5个问题,确保覆盖引用中提到的所有关键点(如分布式原理、冲突解决、暂存应用)。对于每个问题,给出简短答案并提示考点,这样用户既能快速记忆又能深入理解。 最后考虑补充引用[4]提到的配置文件忽略问题,这类实操细节容易被忽略但面试考。问题设计要模拟真实面试场景,比如:“如果面试官追rebase和merge的区别,怎么回答最专业?” </think> 以下是Git面试高频问题及解析,按难度分级整理,结合核心概念与实际应用场景: ### 一、基础概念类 1. **Git与SVN的核心区别?** Git是**分布式版本控制系统**,每个开发者拥有完整仓库副本,支持离线提交;SVN是集中式系统,依赖中央服务器。 > *考点:分布式优势(容错性、离线操作)[^4]* 2. **工作区、暂存区、仓库的关系?** - 工作区:本地文件目录 - 暂存区(Index):`git add`后的临时存储区域 - 仓库:`git commit`后永久存储的历史记录 > *图解流程:`工作区 → git add → 暂存区 → git commit → 仓库`* 3. `git pull` 和 `git fetch` 的区别? - `git fetch` 仅下载远程数据,不自动合并 - `git pull` = `git fetch` + `git merge`(可能触发冲突) > *安全提示:建议先 fetch 检查变更再手动合并[^2]* --- ### 二、分支管理(面试重点) 4. **解释Git分支的本质?** 分支本质是**指向提交对象的可变指针**,创建分支仅增加一个指针(如 `feature`指向某次commit),开销极小。 5. `git merge` vs `git rebase` | **操作** | 特点 | 适用场景 | |--------------|-----------------------------|-----------------------| | `merge` | 保留历史记录,生成新合并节点 | 公共分支(如main) | | `rebase` | 线性历史,修改提交基址 | 私有分支整理提交记录 | > *注意:rebase 会改写历史,已推送的分支慎用[^5]* 6. **如何解决合并冲突?** 步骤: (1) 执行合并命令触发冲突 → (2) 编辑文件(保留需修改部分) → (3) `git add` 标记已解决 → (4) `git commit` 完成合并 > *关键:使用 `git status` 查看冲突文件[^3]* --- ### 三、高级场景 7. **紧急修复BUG但工作未完成?** 使用 `git stash` 三步操作: ```bash git stash # 暂存当前修改 git switch hotfix # 切换分支修BUG git stash pop # 恢复暂存内容(自动合并修改) ``` > *技巧:`git stash list` 查看所有暂存记录[^5]* 8. **如何撤销上次提交?** - 保留修改:`git reset --soft HEAD^`(回退commit,修改保留在暂存区) - 彻底撤销:`git reset --hard HEAD^`(慎用!丢弃修改) 9. **忽略不需要提交的文件?** 在项目根目录创建 `.gitignore` 文件,写入需忽略的规则(如 `*.log`、`/config/`)[^4] --- ### 四、原理深化题 10. **Git如何保证数据完整性?** 所有数据对象(提交、文件等)均通过 **SHA-1哈希算法** 生成唯一ID,任何修改都会改变哈希值,确保历史不可篡改。 11. **`git push -u origin main` 中 `-u` 的作用?** 建立本地分支与远程分支的**追踪关系**,后续可直接使用 `git push` 无需指定远程分支
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值