yuadhのinterview_note yuadhのinterview_note
前端基础
软件框架
算法|数据结构
基础学科
系统|工具
项目
面试综合
专栏
GitHub (opens new window)
前端基础
软件框架
算法|数据结构
基础学科
系统|工具
项目
面试综合
专栏
GitHub (opens new window)
  • Browser
  • CN
  • CSS
  • Git
    • git merge
    • gie rebase
    • git reset重置
    • git revert回退
    • 区别
    • HEAD
    • 工作树和索引
    • fork(叉子——>分叉)
    • clone
    • branch
  • HTML
  • JS
  • Optimize
  • OS
  • Project-Others
  • React
  • Review
  • Vue
  • 场景题
  • 备注
  • 专栏
yuadh
2022-12-19
目录

Git

# 常用指令

git clone 克隆 git init 初始化,会生隐藏文件 git add 添加到暂存区 git commit 推送代码告诉别人这个推送做了什么操作 git pull 更新本地代码 git push pull了之后就是通过该命令推送代码 git fetch 更新本地的代码,不同于pull不会进行合并 git checkout 切换分支 git branch 显示本地的所有分支 git status 查看状态

# git rebase、git merge

rebase 重定基地,重新设立起点

都是将一个分支的更改并入另一个分支,只不过方式不同

# git merge

将当前分支合并到指定分支

通过其合并分支会新增一个merge commit,再将两个分支历史联系起来

非破坏性的操作,对现有分支不会有更改,历史记录相对复杂

# gie rebase

将当前分支移植到指定分支或指定commit上

将整个分支移动到另一个分支上,有效整合所有分支的提交

历史记录清晰,消除了git merge所需的不必要的合并提交

git rebase -i <commit>
git rebase --continue//解决冲突后,继续rebase
1
2

# git缓存代码

# git stash

保存当前工作进度,把暂存区和工作区的改动保存,修改存在栈上

当前文件修改了,需要提交commit保持工作区干净才能切分支

当想记录工作目录和索引的目前状态,但又想返回一个干净的工作目录时,用它。该命令将保存本地修改,并恢复工作目录以匹配头部提交

恢复代码

git stash apply

# 保存当前未commit的代码
git stash

# 保存当前未commit的代码并添加备注
git stash save "备注的内容"

# 列出stash的所有记录
git stash list

# 删除stash的所有记录
git stash clear

# 应用最近一次的stash
git stash apply

# 应用最近一次的stash,随后删除该记录
git stash pop

# 删除最近的一次stash
git stash drop
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 迁移仓库,同时保留原有提交记录和分支?

git clone 仓库地址
cd 项目
git push --mirror 新的仓库地址
1
2
3

# git reset、git revert

都有 撤销、回退 的意思

# git reset重置

git reset --hard

代码完全回退到本次提交时的状态,工作暂存区和本次提交后的**提交内容完全被清除,包括记录**

git push -f 强制提交

git status查看状态

reset是彻底的回退,该commit后的所有修改完全消失,包括提交记录

  • 彻底回退 指定版本,干净清爽
  • 提交时间线情绪,没有冗杂
  • 记录彻底清除,无法再恢复

reset --soft

完全不接触索引文件和工作树,使所有更改的文件更改为“要提交的更改”

回退已提交的commit,将commit的修改内容放在暂存区

reset \--hard

让commit记录强制回溯到某一节点

# 恢复最近一次 commit
git reset --soft HEAD^
1
2

以上针对未push的commit,对已push的commit,也可以使用该命令,但再次push时,因为远程分支和本地有差异,需要强制推送 git push \-f 覆盖被reset的commit

# git revert回退

在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化,不改变历史,用于安全取消过去发布的提交

此次操作之前和之后的 commit和history都会保留,且把这次撤销作为最新的提交,如下:

撤销(revert)作为 撤销公开的提交(比如已经push)的安全方式,git reset重设本地更改

重设完全移除一堆更改,而撤销保留原来更改,用新的提交实现撤销

# 区别

  • git revert是新的commit回滚之前的commit,git reset直接删除指定commit
  • git reset 把HEAD向后移动,git revert是HEAD继续前进,只是新commit的内容和要revert的内容相反,抵消要被revert的内容
  • 回滚这一操作上看,效果差不多,但在日后merge 以前的老版本时有区别

git revert用一次逆向的commit“中和”之前的提交,日后合并老的branch时,之前提交合并的代码仍存在,导致不能重新合并

git reset把某些commit在某个branch上删除,和老branch再次merge时,被回滚的commit应该还会被引入

如果回退分支的代码以后还要用——使用git revert

如果分支是提错了没用的,并且不想让别人发现这些错误——使用git reset

# git pull、git fetch

git pull 从另一个存储库或本地分支获取并整合

git fetch 从另一个存储库下载对象和引用

1649652294943

git pull=git fetch+git merge

# HEAD、工作树、索引?

# HEAD

git很多分支的本质是一个指向commit对象的可变指针,head是一个指向你正在工作中国的本地分支的指针。

通过git checkout test切换分支,head->test

HEAD指针——>分支指针——>最新提交

# 工作树和索引

索引为了向数据库提交作准备的渔区——暂存区

工作树——查看和编辑文件的实际内容(本地工作区)

# fork,clone,branch

# fork(叉子——>分叉)

克隆出一个仓库的新拷贝

若想要将修改合并,通过pull request 将提交贡献给原仓库

# clone

下载本地,形成本地代码库

git push

# branch

开启另一个分支

git checkout切换分支

# git add -A、git add .

git add -A 提交所有变化

git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)

git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

# git log

查看提交日志

# git合并冲突

手动处理

可使用git diff查看文件不同

合并冲突后再git add ,git commit 最后 git push

# git cherry-pick

阮一峰 git cherry-pick教程 (opens new window)

将指定的提交(commit)应用于其他分支

# git分支开发错了怎么办

第一步,暂存

git stash

第二步,切换分支

git checkout <分支名>

第三步,取出暂存代码

git stash pop

# git将多个commit合并为一个

git rebase -i commitId ,commitId 是想要合并的多个记录前的提交记录commitId

编辑 (opens new window)
上次更新: 2023/02/07, 15:11:55
CSS
HTML

← CSS HTML→

最近更新
01
青训营真题day01
02-07
02
01day01-html与css
02-07
03
day02-js
02-07
更多文章>
Theme by Vdoing | Copyright © 2022-2023 yuadh | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式