软件测试面试题_Git常见问题及操作

Git的工作原理是什么

Git 主要分为四个组成部分:工作区暂存区本地仓库远程仓库

工作区:当我们执行 git init 之后,就会在项目目录下生成一个.git 文件夹,预示着整个项目被git托管,而此时的整个项目目录包括其子目录,都将成为工作区。

暂存区:暂存区用来保存经 git add [file] 命令处理后的文件快照,标志着某个文件状态已经被追踪。

本地仓库:每一次将暂存区的文件快照提交(git commit)到本地仓库的动作,即形成一次统一的版本,由此可进行本地化的版本管理,并且本地仓库的版本信息也可以和远程仓库进行同步。

远程仓库:即 github 之类的代码托管网站,将本地仓库的版本信息同步到远程仓库之后,将会使得代码的维护变得更加安全,假如本地仓库被搞乱了,还可以从远程仓库拉取代码进行项目还原。

当我们在工作目录中进行文件操作后,要先添加到暂存区,然后再将暂存区中刚添加的文件快照提交到本地仓库,然后再将本地仓库的最新版本文件快照推送到远程仓库。(看图理解)

介绍一下 Git 的常用命令

查看提交记录

git log  查看过往提交记录
git diff 查看工作区的变动

分支操作

git branch 显示所有本地分支,* 所在的位置,表示当前分支
git branch new_branch 创建新分支
git checkout branch_name 切换分支
git checkout -b branch_name 创建新分支并切换到新分支
git checkout —- file_name 拉取暂存区文件并将其替换成工作区文件
git branch -d branch_name 删除分支
git branch -D branch_name 强行删除分支
git tag tag_name 打tag版本
git tag -d tag_name 删除tag

代码修改

git stash 储藏当前未提交的改动
git stash pop 复原储藏(文件都复原成未暂存状态)
git reset --soft 让历史区与指定的提交保持一致,可以理解为撤销 git commit
git reset --hard 让工作区、暂存区和历史区都与指定的提交保持一致,可以理解为撤销所有改动,这是一个不可挽回的操作,谨慎执行。

代码同步

git fetch 将远程仓库的代码、 分支和 tag 都下载到本地。但不会改变本地代码
git rebase base_branch 变基,改变某次提交的父提交(假设你的父分支是 base_branch)
git merge base_branch 把 base_branch 的代码合并到你当前的分支
git pull branch_name 从 branch_name 分支,拉取最新的提交并合并分支,等价于git fetch + git merge
git commit -m 提交信息 将暂存区的代码提交到历史区
git push 把本地历史区的代码提交到远程仓库分支

解决冲突

在 rebase 或者 merge 之前,务必确保工作目录是干净的

# --ours:以我们为准, --theirs:以他们为准
git checkout --ours conflict_file
git add conflict_file
git commit
# 注意不用加 -m 选项,git 会默认生成一个 merge 的 message

放弃解决冲突

git rebase --abort
git merge --abort

撤销合并

git reset --hard HEAD~ 回到上一次提交
git reflog 打印历史的git命令操作

如何通过 Git 命令提交代码

创建文件-->git status查看工作区状态-->git add提交到暂存区-->git commit推送本地仓库(-m)说明-->git push -u origin master(推送远程仓库)

git merge 和 git rebase 的区别是什么

当需要保留详细的合并信息的时候建议使用 git merge,特别是需要将分支合并进入master分支时;当发现自己修改某个功能时,频繁进行了 git commit 提交时,发现其实过多的提交信息没有必要时,可以尝试 git rebase。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
相关推荐
  • 暂无相关文章
  • 评论 抢沙发