- 远程仓库 remote, 默认名称为 origin, 可以自定义为其他的。
- 本地仓库
- commit 确认的更改,包含文件的删除,文件的增加,文件的修改(一整个文件), commit 多个或一个文件的修改集合。
- 文本修改
- stage, staging
编辑器修改 -> stage -> 本地仓库 -> 远端仓库。
远端仓库,比如 gitlab github。非本地的仓库。
用于获取远端的信息,比如 分支信息。
用于拉取代码,当远端修改过相同的行,可能会出现冲突。
用于推送代码,当远端出现分叉,一定会出现冲突。
- 把本地仓库的 commit 推送到远程仓库
变更分支的位置。表现是一连串的 commit 被移动到了其他地方。
大概率会出现冲突。
有一个很好用的参数是 --onto X A B, 把 A (不包含 A) 到 B 的 commit ,迁移到以 X 为基础。
git rebase --onto 9 5 13
9 的修改
9 readme 10 -> hello arnold
9 readme 14 -> bad
10 的修改
10 readme 10 -> hello
10 readme 1 -> good
合并冲突解决
10 readme 10 -> hello arnold
10 readme 1 -> good
10 readme 14 -> bad
gitGraph
commit id: "1"
commit id: "2"
branch origin/develop
commit id: "3"
commit id: "4"
commit id: "5"
branch develop
commit id: "10"
commit id: "11"
commit id: "12"
commit id: "13"
checkout origin/develop
commit id: "6"
commit id: "7"
commit id: "8"
commit id: "9"
gitGraph
commit id: "1"
commit id: "2"
branch origin/develop
commit id: "3"
commit id: "4"
commit id: "5"
checkout origin/develop
commit id: "6"
commit id: "7"
commit id: "8"
commit id: "9"
branch develop
commit id: "10"
commit id: "11"
commit id: "12"
commit id: "13"
有三种参数
--hard 会丢弃所有的改动,比较危险。
--mixed 会把所有改动都列出来,从新的 commit 向旧的 commit reset 时,可以保留 commit 的改动。
--soft 与 --mixed 近似,但是 commit 的内容放在 stage 中。
gitGraph
commit id: "1"
commit id: "2"
branch origin/develop
commit id: "3"
commit id: "4"
commit id: "5"
checkout origin/develop
commit id: "6"
commit id: "7"
commit id: "8"
commit id: "9"
branch develop
commit id: "10"
commit id: "11 bad"
commit id: "12 bad"
commit id: "13 good"
gitGraph
commit id: "1"
commit id: "2"
branch origin/develop
commit id: "3"
commit id: "4"
commit id: "5"
checkout origin/develop
commit id: "6"
commit id: "7"
commit id: "8"
commit id: "9"
branch develop
commit id: "10"
commit id: "13 good"
把文件添加到 stage , 之后要确认 stage 中的改动。
确认 stage 中的改动,并且给一个 commit msg。commit 之后,就可以把 commit 整个推送到远端。