Android Studio 本地仓库关联Git仓库
1. 首先将本地仓库启用Git
image.png
2. 关联远程仓库
3. 同步远程仓库,选master分支,否则本地和远程分支不一致
完成,之后就可以正常提交了,如果有分支冲突可以选择合并策略:Strategy
合并策略(来源:https://www.jianshu.com/p/58a166f24c81)
Git可以通过添加-s参数来指定合并的策略。一些合并策略甚至含有自己的参数选项,通过-X<option>设置这些合并策略的参数选项。(不要忘记,合并可以在git merge和git pull命令中发生,因此该合并策略同样适用于git pull)。
1. resolve
仅仅使用三路合并算法合并两个分支的顶部节点(例如当前分支和你拉取下来的另一个分支)。这种合并策略遵循三路合并算法,由两个分支的HEAD节点以及共同子节点进行三路合并。
当然,真正会困扰我们的其实是交叉合并(criss-cross merge)这种情况。所谓的交叉合并,是指共同祖先节点有多个的情况,例如在两个分支合并时,很有可能出现共同祖先节点有两个的情况发生,这时候无法按照三路合并算法进行合并(因为共同祖先节点不唯一)。
在交叉合并的情况时有一个以上的合并基准点(共同祖先节点),resolve策略是这样工作的:选择其中一个可能的合并基准点并期望这是合并最好的结果。实际上这并没有听起来的那么糟糕。通常情况下用户修改不同部分的代码,在这种情况下,很多的合并冲突其实是多余和重复的。而使用resolve进行合并时,产生的冲突也较易于处理,真正会遗失代码的情况很少。
2. recursive
仅仅使用三路合并算法合并两个分支。和resolve不同的是,在交叉合并的情况时,这种合并方式是递归调用的,从共同祖先节点之后两个分支的不同节点开始递归调用三路合并算法进行合并,如果产生冲突,那么该文件不再继续合并,直接抛出冲突;其他未产生冲突的文件将一直执行到顶部节点。额外地,这种方式也能够检测并处理涉及修改文件名的操作。这是git合并和拉取代码的默认合并操作。
recursive合并策略有以下参数:
3. octopus
这种合并方式用于两个以上的分支,但是在遇到冲突需要手动合并时会拒绝合并。这种合并方式更适合于将多个分支捆绑在一起的情况,也是多分支合并的默认合并策略。
4. ours
这种方式可以合并任意数量的分支,但是节点树的合并结果总是当前分支所冲突的部分。这种方式能够在替代旧版本时具有很高的效率。请注意,这种方式和recursive策略下的ours参数是不同的。
4. subtree
subtree是修改版的recursive策略。当合并树A和树B时,如果B是A的子树,B首先调整至匹配A的树结构,而不是读取相同的节点。
可能出现的问题
image.pnggit branch --set-upstream-to=origin/master master
image.png
git pull origin master --allow-unrelated-histories