一、主观题

1、git pullgit fetch的区别?

git pull —— 下载 + 自动合并

作用git fetch + git merge 的组合命令。它会先从远程拉取最新数据,然后自动尝试合并到你当前所在的本地分支

可能直接修改你的工作区!在未保存或未提交本地修改时容易出问题。

git fetch —— 仅下载,不合并

作用:从远程仓库下载最新的提交、分支、标签等对象到本地仓库,但不会自动合并或修改你当前的工作区和分支

2、两个历史不相同的仓库如何git pull 并且 git push到远程仓库?

直接使用git pull 无法拉取远程仓库版本信息,因为是本地和远程仓库是不同的独立仓库,要拉取必须使用 --allow-unrelated-histories参数允许合并无关历史

如:

1
git pull origin main --allow-unrelated-histories

合并后解决可能的冲突,再 git push 即可。

3、请解释一下git 的相关概念、工作区、暂存盘、版本库、远程仓库, 介绍它们的关系是什么?操作流程是什么?

git概念:Git 是一个开源的分布式版本控制系统,用于追踪文件变更、协作开发、版本回退等。

工作区:正在编辑文件的目录,就是你的项目文件夹

暂存盘:临时区域,用于存放你准备提交(commit)的文件变更。

版本库:本地仓库,保存项目完整历史记录的地方,位于项目根目录下的 .git 文件夹中。

远程仓库:托管在服务器上的 Git 仓库,如 GitHub、Gitee、GitLab 等平台上的项目仓库。

关系:

  • 工作区 → 暂存区git add
  • 暂存区 → 本地版本库git commit
  • 本地版本库 ↔ 远程仓库git push / git pull / git fetch
  • 远程仓库 → 本地版本库 → 工作区git clone(首次拉取整个项目)

流程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1. 在工作区修改文件(如:edit index.html)

# 2. 查看当前状态(可选)
git status

# 3. 把修改添加到暂存区
git add index.html
# 或添加所有改动:git add .

# 4. 提交到本地版本库
git commit -m "描述你的修改,例如:更新首页布局"

# 5. 推送到远程仓库(如 origin 的 main 分支)
git push origin main

4、假如现在项目有一个报错,通过报错提示我定位到具体的文件,但是我现在弄清楚这个错误是谁导致的,git怎么做?

使用命令git blame 文件名

显示指定文件的每行代码最后一次修改的提交信息(作者、时间、代码内容)。

5、我想知道工作区和暂存盘的区别?git使用什么命令合适?

工作区:正在编辑文件的目录,就是你的项目文件夹

暂存盘:一个临时区域,用于存放你准备提交(commit)的文件变更。

使用命令:

1
2
3
git diff              # 查看工作区与暂存区差异
git diff --cached # 查看暂存区与版本库差异
git diff HEAD # 查看工作区与版本库差异

6、我在做项目实现一个功能,我试了好几个方案,都不理想,最后我权衡下来,觉得还是方案2可行性高,打算从方案2继续研究下去。请问你接下来git怎么操作比较合适?

多方案选择回溯,应使用命令git reset回退到指定提交:

1
git reset --hard 版本号  # 彻底回溯到方案2

文件1.txt

版本1:111

版本2:222

版本3:333

版本4:444

目前在版本4,需要回到版本2

方法1.使用硬回滚

git reset –hard 版本2的版本号

方法2.使用命令git revert

1
2
3
4
5
6
7
git revert 版本3的版本号

修改文件:222增强优化

git revert --continue

git add -A

7、我在项目因为我对项目有洁癖,被我不小心删除了一个config文件,请问我怎么找回来?

工作区撤销修改:

  • git status 查看修改的文件
  • 使用命令恢复:git checkout -- 被恢复的文件

暂存盘撤销修改:

  • git reset HEAD 被恢复的文件
  • git checkout -- 被恢复的文件

已提交:

1
git checkout 版本号 -- 文件  # 从历史版本恢复

纠正:

1
2
3
git checkout 版本号 -- 文件  # 从历史版本恢复
#或者
git restore 版本号 -- 文件

彻底删除后无法找回:git rm config

8、我有个项目打算使用git做分布式管理, 但是当我提交一个版本的时候居然不能提交,请问有几种可能导致不能提交?

  • 代码不规范,写错:git commit -m (没有描述)

  • 没有配置邮箱或账号

  • 没有添加暂存

9、我有个项目是多人协作的,我完成了一个功能,组长催促我赶紧上传到远程,我于是保存版本后,开始使用git push上传,但不能成功上传,请问有几种可能导致不能推送到远程?

  • 仓库别名,地址写错

  • 没有推送权限(ssh没有配置公钥,远程分支保护策略(如main分支需PR才能合并))

  • 远程仓库有最新的版本,不允许提交(先拉取下来再推送)

  • 两个历史不相同的仓库(需添加参数 –allow-unrelated-histories)

  • 网络问题

  • 文件大小超限(如GitHub限制100MB)

10、练习成语接龙游戏,自己找搭档配合练习, 不想练就把整个过程文字描述一下。

  • git pull拉取远程仓库最新的提交和分支信息,

  • 在本地进行修改添加文件内容,

  • 使用git push提交至远程仓库,

  • 提交不了则使用git stash保存工作区内容,使用git pull拉取最新提交版本信息,在本地解决冲突后,git add保存解决冲突后的版本,git commit提交一个版本,最后git push到远程仓库

    1
    2
    3
    4
    5
    6
    7
    git pull                          # 拉取远程更新(可能冲突)
    git stash # 保存本地未提交修改
    git pull # 成功拉取
    git stash pop # 恢复并合并,手动解决冲突
    git add . # 标记冲突已解决
    git commit -m "fix: resolve conflict"
    git push origin main # 推送

11、练习分支管理、查看分支、删除分支、添加分支、切换分支、创建切换分支

| 操作 | 命令 |
|