mirror of
https://github.com/NohamR/knowledge-kit.git
synced 2026-05-25 04:17:17 +00:00
feature: Weex APM && SwiftUI
This commit is contained in:
@@ -71,7 +71,7 @@ git tag -a 1.0.0 -m 'release SPM lib'
|
||||
|
||||
|
||||
## 代码回滚
|
||||
<img src="./../assets/GitWorkFlow.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/GitWorkFlow.png" style="zoom:30%" />
|
||||
|
||||
git 存在3个区域:
|
||||
|
||||
@@ -125,7 +125,7 @@ git 将存储对象的40位 HASH 分为2部分:
|
||||
|
||||
- 后38位作为对象文件名。结构为:`.git/objects/hash[0:2]/hash[2:40]`
|
||||
|
||||
<img src="./../assets/githashDemo.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/githashDemo.png" style="zoom:30%" />
|
||||
|
||||
比如:`gitDemo/.git/objects/22/13d05bf4b8cfc7ee323af3ac427ad2fa14da88`
|
||||
|
||||
@@ -140,7 +140,7 @@ QA: 为什么要设计这样的目录结构(Hash 值总40位,前2位为文
|
||||
|
||||
### 2. git add 的本质
|
||||
|
||||
<img src="./../assets/githash.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/githash.png" style="zoom:30%" />
|
||||
|
||||
`git ls-files -s` 指令查看暂存区文件 。
|
||||
|
||||
@@ -173,7 +173,7 @@ Demo1:
|
||||
|
||||
对 `index.txt` 文件使用 `git hash-object -w index.txt` 指令计算哈希。
|
||||
|
||||
<img src="./../assets/githashCommand.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/githashCommand.png" style="zoom:30%" />
|
||||
|
||||
Demo2:
|
||||
|
||||
@@ -188,7 +188,7 @@ Demo3:
|
||||
|
||||
对 `index.txt` 文件内容进行调整,`git hash-object -w index.txt` 指令计算哈希
|
||||
|
||||
<img src="./../assets/githashChange.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/githashChange.png" style="zoom:30%" />
|
||||
|
||||
结论:
|
||||
|
||||
@@ -217,7 +217,7 @@ Demo:
|
||||
|
||||
整体效果如下图:
|
||||
|
||||
<img src="./../assets/gitAddMocking.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/gitAddMocking.png" style="zoom:30%" />
|
||||
|
||||
|
||||
|
||||
@@ -227,25 +227,25 @@ Demo:
|
||||
|
||||
第一步:上述步骤生成了3份 git hash,分别保存在 `.git/objects/` 目录下。
|
||||
|
||||
<img src="./../assets/gitFileTreeBefore.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/gitFileTreeBefore.png" style="zoom:30%" />
|
||||
|
||||
第二步:接下去将暂存区的文件生成一颗树。使用指令 **git write-tree**
|
||||
|
||||
第三步:查看生成的树信息。使用指令 `git cat-file -p {TreeHash}`
|
||||
|
||||
<img src="./../assets/gitFileTreeAfter.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/gitFileTreeAfter.png" style="zoom:30%" />
|
||||
|
||||
第四步:使用指令 **`git read-tree --prefix=FantasticLBP/ 7f7bbe6285c9c767aeaa1aedba6dcf5324774bc8`** 将指定的 tree 对象内容读取到当前索引中,并将其所有文件放在名为 `FantasticLBP/` 的目录下。
|
||||
|
||||
此时文件目录为:
|
||||
|
||||
<img src="./../assets/gitTreeRecoverBefore.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/gitTreeRecoverBefore.png" style="zoom:30%" />
|
||||
|
||||
第五步:此时的效果为,暂存区里面存在另一份目录名为 `FantasticLBP/` 的暂存区信息。但是此时实体文件夹下并不存在。使用指令 `git checkout -- .` 便可以从暂存区恢复。
|
||||
|
||||
恢复后的目录结构为:
|
||||
|
||||
<img src="./../assets/gitTreeRecoverAfter.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/gitTreeRecoverAfter.png" style="zoom:30%" />
|
||||
|
||||
|
||||
|
||||
@@ -265,7 +265,7 @@ Demo:
|
||||
|
||||
**`git commit-tree`**:Git 底层命令,用于创建一个新的提交对象(commit object)。它需要一个 tree 对象作为基础,并通过标准输入接收提交信息。命令执行成功后,会输出新创建的提交对象的 SHA-1 哈希值。
|
||||
|
||||
<img src="./../assets/gitCommitTree.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/gitCommitTree.png" style="zoom:30%" />
|
||||
|
||||
可以看到:
|
||||
|
||||
@@ -330,7 +330,7 @@ C0 <--- C1 <--- M1 <--- M2 [master]
|
||||
|
||||
git rebase 还可以用于一些提交信息的处理,比如 `git rebase -i {CommitHash}`
|
||||
|
||||
<img src="./../assets/GitRebaseCommand.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/GitRebaseCommand.png" style="zoom:30%" />
|
||||
|
||||
git rebase 还可以将多次 commit 合并为1次,也可以修改某次 commit 的信息等等,具体的可以看指令后面的注释。
|
||||
|
||||
@@ -440,11 +440,11 @@ git config merge.conflictstyle diff3
|
||||
|
||||
比如,我模拟了文件冲突,调用 `git mergetool` 使用 opendiff 打开了文件冲突展示能力
|
||||
|
||||
<img src="./../assets/GitOpenDiffPanel.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/GitOpenDiffPanel.png" style="zoom:30%" />
|
||||
|
||||
当前 case 下,我需要选择左侧为结果,所以点击了 "Choose left"。下面区域为合并后的结果。在终端还有来一次确认过程。做到 double check。
|
||||
|
||||
<img src="./../assets/GitOpenDiffResult.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/GitOpenDiffResult.png" style="zoom:30%" />
|
||||
|
||||
属于 y 后,相当于选择了结果,接下去再进行 add、commit 等操作。
|
||||
|
||||
@@ -460,7 +460,7 @@ git config merge.conflictstyle diff3
|
||||
|
||||
示例如下
|
||||
|
||||
<img src="./../assets/GitLogPCommand.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/GitLogPCommand.png" style="zoom:30%" />
|
||||
|
||||
|
||||
|
||||
@@ -533,11 +533,11 @@ Demo:
|
||||
|
||||
- 使用 `git stash list` 用于**查看当前所有存储条目**的核心命令,展示的信息从时间上由近到远
|
||||
|
||||
<img src="./../assets/GitStashCommand.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/GitStashCommand.png" style="zoom:30%" />
|
||||
|
||||
- 使用 `git stash show -p stash@{0}` 查看**存储修改内容**。其中 `-p` 是 `--patch` 的缩写,显示完整差异(补丁格式),`stash{0}` 指定要查看的储藏引用(0 表示最近一次储藏)
|
||||
|
||||
<img src="./../assets/GitStashPCommand.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/GitStashPCommand.png" style="zoom:30%" />
|
||||
|
||||
|
||||
|
||||
@@ -552,11 +552,11 @@ Demo:
|
||||
|
||||
- 使用 `git stash apply stash@{1}` 来应用某次具体的 stash 栈里的信息。注意:新 stash 的 序号更早,早期的由近到远依次+1
|
||||
|
||||
<img src="./../assets/GitStashApply.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/GitStashApply.png" style="zoom:30%" />
|
||||
|
||||
- 如果从 stash 里取出的代码不满意,如何恢复到 之前的状态?使用组合命令 **git stash show -p stash@{1} | git apply -R`** 来达到反向应用补丁的效果。
|
||||
|
||||
<img src="./../assets/GitStashApplyRevert.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/GitStashApplyRevert.png" style="zoom:30%" />
|
||||
|
||||
管道符 `|` ,将前一个命令的输出作为后一个命令的输入。比如:
|
||||
|
||||
@@ -600,7 +600,7 @@ Demo:
|
||||
|
||||
因为都存在于本地暂存区了,所以可以使用指令 **`git update-index --assume-unchanged {FileName}`** 来告诉 git,不要追踪暂存区的 FileName 该文件
|
||||
|
||||
<img src="./../assets/GitRemoveTrackingWithIgnore.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/GitRemoveTrackingWithIgnore.png" style="zoom:30%" />
|
||||
|
||||
#### 3. 进阶玩法
|
||||
|
||||
@@ -706,13 +706,13 @@ Git Hook 是 Git 提供的自动化脚本机制,可在特定 Git 操作(如
|
||||
|
||||
一个项目如果是 git init 之后的,会在 `.git/hooks` 目录下存在一堆 hooks 模版,如下图
|
||||
|
||||
<img src="./../assets/GitHooksTemplate.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/GitHooksTemplate.png" style="zoom:30%" />
|
||||
|
||||
- 顾名思义,pre-push、post-push 分别是在 push 之前、push 之后触发的钩子。所以其他几个钩子类似
|
||||
|
||||
- 本次演示继续在之前的 Demo 上演示,使用 Pre-Commit 钩子,去掉拓展名。注释掉其他代码,添加一句打印输出
|
||||
|
||||
<img src="./../assets/GitPreCommitHook.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/GitPreCommitHook.png" style="zoom:30%" />
|
||||
|
||||
注意:这里可以使用 shell、也可以使用 python、JS、Ruby 等脚本
|
||||
|
||||
@@ -779,7 +779,7 @@ Git Hook 是 Git 提供的自动化脚本机制,可在特定 Git 操作(如
|
||||
- 继续在 gitDemo 终端路径下分别执行 **`git remote add origin /Users/unix_kernel/Desktop/gitDemoServer1` **和** `git remote add origin2 /Users/unix_kernel/Desktop/gitDemoServer2`** ,为了给当前的 repo 配置多个远端仓库
|
||||
- 最后执行 `git remote -v` 指令查看当前 repo 的 remote 信息
|
||||
|
||||
<img src="./../assets/gitRemoteAdd.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/gitRemoteAdd.png" style="zoom:30%" />
|
||||
|
||||
说明:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user