补充 diff 和 rebase 内容.
Signed-off-by: rick.chan <chenyang@autoai.com>
This commit is contained in:
parent
391cb37633
commit
81ab954a6e
|
@ -183,6 +183,7 @@ git push <repository> --delete <branch>
|
|||
将某个分支与当前分支合并的命令为:
|
||||
|
||||
```bash
|
||||
# merge 谋 branch 到当前分支.
|
||||
git merge <branch>
|
||||
```
|
||||
|
||||
|
@ -205,7 +206,26 @@ git whatchanged [path]
|
|||
git show <commit id>
|
||||
```
|
||||
|
||||
## 10. Tag 节点
|
||||
## 10.内容比较
|
||||
|
||||
使用
|
||||
|
||||
```bash
|
||||
git diff <from> <to>
|
||||
```
|
||||
|
||||
命令可比较任意两组内容,例如:
|
||||
|
||||
```bash
|
||||
# 比较谋更改的文件/文件夹与当前分支上次提交内容的差异
|
||||
git diff <file/folder>
|
||||
# 比较两个分支 或 两个分支的谋文件/文件夹
|
||||
git diff <branch 0> <branch 1> [file/folder]
|
||||
# 比较当前分支下两次提交 或 两次提交的谋文件/文件夹
|
||||
git diff <commit id 0> <commit id 1> [file/folder]
|
||||
```
|
||||
|
||||
## 11.Tag 节点
|
||||
|
||||
可以通过:
|
||||
|
||||
|
@ -227,7 +247,7 @@ git tag <tag name>
|
|||
|
||||
创建一个轻量标签。
|
||||
|
||||
## 11. 推送本地分支到远程分支
|
||||
## 12.推送本地分支到远程分支
|
||||
|
||||
```bash
|
||||
git push <repository> <local refspec>:<remote refspec>
|
||||
|
@ -239,7 +259,7 @@ git push <repository> <local refspec>:<remote refspec>
|
|||
git push origin new:master
|
||||
```
|
||||
|
||||
## 12. 从远程分支更新本地分支
|
||||
## 13.从远程分支更新本地分支
|
||||
|
||||
```bash
|
||||
git pull <repository> <remote refspec>:<local refspec>
|
||||
|
@ -259,7 +279,7 @@ git pull origin new:master
|
|||
git fetch origin tag <tagname>
|
||||
```
|
||||
|
||||
## 13. 删除远程分支/Tag
|
||||
## 14.删除远程分支/Tag
|
||||
|
||||
删除远程分支命令为:
|
||||
|
||||
|
@ -279,7 +299,7 @@ git push origin --delete tag <tagname>
|
|||
git remote prune <repository>
|
||||
```
|
||||
|
||||
## 14. 推送/获取 Tag
|
||||
## 15.推送/获取 Tag
|
||||
|
||||
将本地 Tag 同步到远程的命令为:
|
||||
|
||||
|
@ -293,7 +313,7 @@ git push --tags [-f]
|
|||
git pull --tags [-f]
|
||||
```
|
||||
|
||||
## 15. Rebase
|
||||
## 16.Rebase
|
||||
|
||||
由于合并分支,或从远程仓库中更新代码产生了额外的 merge 节点,此时可通过 rebase 命令消除这些额外的 merge 节点,使 git 历史的线性更好:
|
||||
|
||||
|
@ -313,9 +333,18 @@ git rebase [-i] [start point] [end point]
|
|||
git rebase --continue
|
||||
```
|
||||
|
||||
也可以使用 rebase 直接从另一分支合并代码,从而避免像 merge 那样增加额外节点(相当于 merge 之后再进行一次 rebase 操作):
|
||||
|
||||
```bash
|
||||
# 从谋 branch rebase 合并到当前分支
|
||||
git rebase <from branch>
|
||||
# 从谋 from branch rebase 合并到 to branch
|
||||
git rebase <from branch> <to branch>
|
||||
```
|
||||
|
||||
命令继续 rebase。
|
||||
|
||||
## 16. 同步 fork 的仓库
|
||||
## 17.同步 fork 的仓库
|
||||
|
||||
基本原理是增加上游仓库,然后进行 fetch 和 merge,最后 push 到当前仓库,如果已经添加了上游仓库,无需再次添加。
|
||||
|
||||
|
@ -326,9 +355,9 @@ git merge upstream/master
|
|||
git push <repository>
|
||||
```
|
||||
|
||||
## 17. Patch
|
||||
## 18.Patch
|
||||
|
||||
### 17.1. 生成 Patch
|
||||
### 18.1.生成 Patch
|
||||
|
||||
```bash
|
||||
# 生成最近的 1 次 commit 的 patch
|
||||
|
@ -345,7 +374,7 @@ git format-patch -1 <commit id>
|
|||
git format-patch --root <commit id>
|
||||
```
|
||||
|
||||
### 17.2. 应用 Patch
|
||||
### 18.2.应用 Patch
|
||||
|
||||
将所有 Patch 拷贝到某一文件夹下,然后:
|
||||
|
||||
|
@ -360,7 +389,7 @@ git am --abort
|
|||
git am --resolved
|
||||
```
|
||||
|
||||
### 17.3. 合并多个 Patch
|
||||
### 18.3.合并多个 Patch
|
||||
|
||||
```bash
|
||||
# 先应用 patch
|
||||
|
@ -371,9 +400,9 @@ git rebase -i HEAD~n
|
|||
git format-patch HEAD^
|
||||
```
|
||||
|
||||
## 18. Submodule
|
||||
## 19.Submodule
|
||||
|
||||
### 18.1. 添加 Submodule
|
||||
### 19.1.添加 Submodule
|
||||
|
||||
在主仓库中:
|
||||
|
||||
|
@ -390,7 +419,7 @@ git commit -sm <message>
|
|||
git push
|
||||
```
|
||||
|
||||
### 18.2. 在其他地方使用合并后的版本库
|
||||
### 19.2.在其他地方使用合并后的版本库
|
||||
|
||||
```bash
|
||||
git clone <main-repository url>
|
||||
|
@ -398,7 +427,7 @@ cd <main-repository>
|
|||
git submodule init && git submodule update
|
||||
```
|
||||
|
||||
### 18.3. 更新合并后的版本库
|
||||
### 19.3.更新合并后的版本库
|
||||
|
||||
```bash
|
||||
cd <sub-repository url>
|
||||
|
@ -407,7 +436,7 @@ cd ..
|
|||
git commit [...]
|
||||
```
|
||||
|
||||
### 18.4. 批量操作
|
||||
### 19.4.批量操作
|
||||
|
||||
```bash
|
||||
git submodule foreach <command>
|
||||
|
@ -416,11 +445,11 @@ git submodule foreach git checkout master
|
|||
git submodule foreach git submodule update
|
||||
```
|
||||
|
||||
### 18.5 如何保持 Submodule 的同步
|
||||
### 19.5.如何保持 Submodule 的同步
|
||||
|
||||
如果对第三方 Submodule 进行了定制,但是处于某些原因这些修改并不能提交到远程去。那就要先 fork 第三方仓库,然后在 fork 的基础上添加 Submodule。之后自己的修改或第三方有更新都同步到 fork 的仓库上。
|
||||
|
||||
### 18.6 删除 Submodule
|
||||
### 19.6.删除 Submodule
|
||||
|
||||
```bash
|
||||
# deinit
|
||||
|
@ -429,7 +458,7 @@ git submodule deinit <submodule-name>
|
|||
git rm <submodule-name>
|
||||
```
|
||||
|
||||
## 外部参考资料
|
||||
## 20.外部参考资料
|
||||
|
||||
1. [Pro Git](https://git-scm.com/book/zh/v2)
|
||||
2. [Git Reference Manual](https://git-scm.com/docs)
|
||||
|
|
Loading…
Reference in New Issue