第一个案例,
git pull origin dev
remote: Counting objects: 18, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 18 (delta 1), reused 18 (delta 1), pack-reused 0
展开对象中: 100% (18/18), 完成.
来自 github.com:XXX/gitlearn
586b2db..d98847d master -> origin/master
* [新分支] dev -> origin/dev
冲突(修改/删除):1.txt 在 d98847dc482a65d0565daa9128e62c4859aaf7c5 中被删除,在 HEAD 中被 修改。1.txt 在 HEAD 中的版本被保留。
自动合并失败,修正冲突然后提交修正的结果
分析:文件1.txt 在远程拉回来的代码中被删除,在本机版本库中被修改。
合并失败,如何处理呢?
- 不要这个文件了 git rm file; git commit -m ‘comment’
- 保留这个文件, git add file; git commit -m 'comment'
第二个案例
git pull origin master
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 1), reused 5 (delta 1), pack-reused 0
展开对象中: 100% (5/5), 完成.
来自 github.com:XXX/gitlearn
* branch master -> FETCH_HEAD
d98847d..6c3da8f master -> origin/master
更新 d98847d..6c3da8f
error: Your local changes to the following files would be overwritten by merge:
client1_file1.txt
Please, commit your changes or stash them before you can merge.
Aborting
分析:这个错误说,你的工作区没有提交,要么保存,要么提交。
保存的话, git stash save ‘comment’
然后git pull 把代码拉回来,接下来,我们肯定要恢复保存的内容
先调用 git stash list 查看一下有那些保存版本
看到如下
stash@{0}: On master: 111
stash@{1}: WIP on master: fb6c1ec Merge branch 'master' of github.com:XXX/gitlearn
stash@{2}: On master: save
stash@{3}: WIP on master: d98847d x
然后 git stash apply stash@{number} 就可以恢复指定的工作区, 注意: 恢复后,会默认执行合并动作,此时,如果有冲突,需要手动合并拉下来的代码和自己工作区的代码。
git stash save ‘comment’ 可以写注释
git stash list 可以查看存储的栈
git stash apply stash@{number} 可以恢复指定的工作区保存
git stash drop stash@{number} 可以删除指定的保存代码
git stash pop 可以恢复工作区栈顶的保存代码,也就是最近一次保存的。
pop,和apply 都会执行和 pull回来的代码的merge, 如果有冲突,需要你手动修复。
修复完之后, git add fix_file, 然后等待下一次git commit
第三个案例-
git push
To github.com:notfresh/gitlearn
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@github.com:XXX/gitlearn'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
这个错误是说: 更新被拒绝,因为远程已经包括你的工作了,什么意思?
你的本机版本库并没有包含全部远程全部版本,说明有别的同学提交了代码,而你没有拉下来,
所以想要git push, 先要保证你的电脑上有最新的远程版本库,所以要先 pull 代码,把冲突合并(如果有的话),
只有你的本地版本库最新最全,你才有资格向远程提交代码新的版本。
第四个案例
git pull
remote: Counting objects: 260, done.
remote: Total 260 (delta 14), reused 114 (delta 14)
Receiving objects: 100% (260/260), 8.92 MiB | 2.02 MiB/s, done.
Resolving deltas: 100% (14/14), done.
From code.XXXX.com:XXX/PROJECTNAME
c5cedaf..8ea616d dev -> origin/dev
Updating c5cedaf..8ea616d
Fast-forward
app/api_tests/mobile/market/verification.sh | 9 +++++++++
app/api_tests/test/host.sh | 4 ++--
...省略...
app/modules/mobile/xxx/member_type.py | 12 ++++++------
user_verification.py | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------
migrations/versions/386163c6cd89_modify_model.py | 32 ++++++++++++++++++++++++++++++++
40 files changed, 368 insertions(+), 553 deletions(-)
create mode 100644 app/modules/services/wechat/service.py
delete mode 100644 app/modules/services/wechat/wechat_service.py
分析:这个说明了什么呢?
+++---- 的含义是: +代表增加, --代表删除,如果你修改了一行代码,那么git认为这行被删除,而新的一行被增加, git识别的基本单位是一个行,而不是一个字符。
++++很多说明增加了很多, ---很多说明删除了很多
create mode 100644 app/modules/XXX/wechat/service.py 说明新增了一个文件,
delete mode 100644 app/modules/XXX/wechat/wechat_service.py 说明删除了一个文件