避免上传文件和别人上传文件冲突:

1、git stash 将工作区数据暂存
2、git pull 拉取别人上传代码
3、git stash pop 把自己修改部分内容弹出来
4、若有冲突解决冲突 解决冲突(无冲突直接提交)

git避免冲突:
git add.
git commit -m
git stash 暂时存放在栈里
git pull 拉去代码(fetch + merge)
git pop (解决冲突)

git add.
git commit
git push

产生冲突一般有两种方式:
git pull会直接把代码合并到远程端
我遇到这样的问题:A在本地开发完成后,将代码推送到远程,这时候B的本地代码的版本就低于远程代码的版本,这时候B该如何从远程拉取最新的代码?
git pull就可以,但可能会发生冲突,最好是先git fetch先查看一下是否有冲突,如果有冲突,最好先想好如何解决冲突。
如果没有冲突,b可以先commit自己的修改到本地git库,然后再git pull,然后git会自动合并,如果合并存在冲突,就手工解决冲突

git stash, 暂存一下本地更改,然后 git pull 拉下来,再 git stash pop 弹出来,如果有冲突把冲突合并了以后再提交。
先本地提交了,然后把远程服务器上的拉下来,很大可能有冲突,然后把冲突合并了,再提交。

记录用户信息:

git config --global credential.helper store(记住用户名和密码,后期拉取不用重复输入密码)

创建分支:

参考:https://www.w3cschool.cn/evlyt8/ic431ozt.html
创建一个分支:

  1. 切换到基础分支,如主干
    git checkout master
    2)创建并切换到新分支
    git checkout -b panda
    git branch可以看到已经在panda分支上
    3)更新分支代码并提交
    git add *
    git commit -m “init panda”
    git push origin panda
    4)在git代码管理界面经可以看到panda分支了,成功~~

创建一个空分支:
背景:项目进行中,需要创建一个空分支。在Git中创建分支,是必须有一个父节点的,
也就是说必须在已有的分支上来创建新的分支,如果你的工程已经进行了一段时间,
这个时候是无法创建空分支的。
1>git checkout --orphan 2.0.2
该命令会生成一个叫2.0.2的分支,该分支会包含父分支的所有文件。但新的分支不会指向任何以前的提交,就是它没有历史,如果你提交当前内容,那么这次提交就是这个分支的首次提交。
删除所有文件:
我们想要空分支,所以我们需要把当前内容全部删除,用git命令

2>git rm -rf .
注意:最后的‘.’不能少。
提交分支:
如果没有任何文件提交的话,分支是看不到的,所以我们需要创建一个新文件,然后提交则新创建的branch就会显示出来。
echo ‘# new branch’ >> README.md
3>git add README.md
4>git commit -m ‘new branch’
最后push到远程仓库,则新的空分支就创建成功了。
5>git push origin 2.0.2

Git 查看某个文件的提交历史

  1. git log filename 查看某个文件的commit记录
  2. git log -p filename 查看文件每次提交的diff
  3. git log --pretty=oneline filename 列出文件的所有改动历史
  4. git show 提交生成的一次哈希值 filename 只查看某次提交的文件变化

git submodule update --init 和 --remote的区别
git 的submodule 工具方便第三方库的管理,比如gitlab 上的各种开源工具,spdlog等
在项目目录下创建.gitmodule 里可以添加第三方库,然后在更新第三方库时,有两个选项。
git submodule update --init 这是更新当前主项目上记录的submodule 的commitid
比如在提交子项目的时候,会在主项目产生变更,这个变更随着主项目一起的提交,也就是一一对应。
Subproject commit 7d67b54340cebb4ffaa283ebf6975406f8ecda0d
Subproject commit 293633445da9133e959377bef8d61021d5cadc83
那么这个update --init 就会更新为主项目对应的版本,但是这种子项目提交的时候并不会修改.gitmodule里面的版本。

这就是与remote的区别:
当使用git submodule update --remote的时候,子项目会根据.gitmodule的版本进行更新。
当然以上是子项目的管理,对于第三方库的管理,那一般就是直接更新.gitmodule里的版本,自己不会动别的开发的东西也不会产生提交。
综上可见,如果clone 了一个含有子项目和第三方库的项目代码时,需要执行 git submodule update --remote 和 git submodule update --init 两个命令,或者调整先后,才能正确编译。

git中子模块处理:

​https://www.jianshu.com/p/c476364fe642?ivk_sa=1024609v​