git 小案例

第一个案例,

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 在远程拉回来的代码中被删除,在本机版本库中被修改。
合并失败,如何处理呢?

  1. 不要这个文件了 git rm file; git commit -m ‘comment’
  2. 保留这个文件, 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 说明删除了一个文件

原文地址:https://www.cnblogs.com/notfresh/p/8678449.html