forked from iicd/git-learner
add notes
This commit is contained in:
parent
615467d28c
commit
49c43b568f
3
notes/2.11-git_repo_manage.md
Normal file
3
notes/2.11-git_repo_manage.md
Normal file
@ -0,0 +1,3 @@
|
||||
## 2.11 git库管理
|
||||
|
||||
|
14
notes/3.1_git_protocal.md
Normal file
14
notes/3.1_git_protocal.md
Normal file
@ -0,0 +1,14 @@
|
||||
## 3.1 Git Protocal
|
||||
|
||||
### 3.1.2
|
||||
|
||||
一般情况下,推送只允许“快进式”推送。
|
||||
|
||||
所谓快进式推送,就是要推送的本地版本库的提交是建立在**远程版本库相应分支的现有提交**基础上的,即远程版本库相应分支的最新提交是本地版本库最新提交的祖先提交。
|
||||
|
||||
```bash
|
||||
git rev-list HEAD # 查看最新提交和历史提交
|
||||
git ls-remote origin # 显示远程版本库引用对应的哈希值
|
||||
```
|
||||
|
||||
|
60
notes/3.2_resolve_conflict.md
Normal file
60
notes/3.2_resolve_conflict.md
Normal file
@ -0,0 +1,60 @@
|
||||
## 3.2 resolve conflict
|
||||
|
||||
### 3.2.1 拉回操作中的合并
|
||||
|
||||
pull操作的第一阶段,将共享版本库master分支的最新提交拉回到本地,并且更新到本地版本库特定的引用。
|
||||
|
||||
第二阶段,将本地分支master和共享版本库的本地跟踪分支origin/master进行合并操作。
|
||||
|
||||
push操作,是将本地提交推送到共享版本库中。
|
||||
|
||||
`git pull = git fetch + git merge`
|
||||
|
||||
```bash
|
||||
git merge [option...] <commit>...
|
||||
```
|
||||
|
||||
### 3.2.2 自动合并
|
||||
|
||||
多个用户修改了不同的文件/相同文件的不同部分,可以自动merge
|
||||
|
||||
1. 多个用户修改了不同的文件
|
||||
2. 相同文件的不同部分(开头,结尾)
|
||||
3. A用户移动文件,B用户编辑文件,自动merge会把编辑好的文件移动到对应位置
|
||||
|
||||
```bash
|
||||
git fetch
|
||||
git merge origin/master # origin/master就是共享版本库的本地分支
|
||||
git push
|
||||
```
|
||||
|
||||
### 3.2.3 逻辑冲突
|
||||
|
||||
存在逻辑冲突,需要在合并后进行单元测试
|
||||
|
||||
### 3.2.4 冲突解决
|
||||
|
||||
git pull以后会提示冲突文件,如果忘记了用git status也可以
|
||||
|
||||
git会自动把冲突的位置用七个<和七个=以及七个>标记出来,将他们删除掉,修改成想要的代码,就可以merge了
|
||||
|
||||
```bash
|
||||
git log --oneline --graph -3
|
||||
```
|
||||
|
||||
### 3.2.5 树冲突
|
||||
|
||||
文件处于不同状态,比如一个用户改名,另一个用户改成不同名字
|
||||
|
||||
```bash
|
||||
git rm readme.txt
|
||||
git rm doc/README.txt
|
||||
git add README
|
||||
```
|
||||
|
||||
本质上就是删除掉其他两个,留下来一个想要的
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user