赞
踩
$ ssh-keygen -t rsa -C 44600937@qq.com
// 定位到 id_rsa.pub 文件
cd .ssh
// 打开 id_rsa.pub 文件
open id_rsa.pub
$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
$ git checkout develop
$ git merge --no-ff feature
–no-ff 的作用是禁止快进式合并
Git 合并两个分支时,如果顺着一个分支走下去可以到达另一个分支的话,那么 Git 在合并两者时,只会简单地把指针右移,叫做“快进”(fast-forward),比如下图:
A---B---C feature
/
D---E---F master
合并分支
$ git checkout master
$ git merge feature
结果如下:
A---B---C feature
/ master
D---E---F
因为 feature 就在 master 的下游,所以直接移动了 master 的指针,master 和 feature 都指向了 C。而如果执行了 git merge --no-ff feature 的话,是下面的结果:
A---B---C feature
/ \
D---E---F-----------G master
由于 --no-ff 禁止了快进,所以会生成一个新的提交,master 指向 G
从合并后的代码来看,结果其实是一样的,区别就在于 --no-ff 会让 Git 生成一个新的提交对象。为什么要这样?通常我们把 master 作为主分支,上面存放的都是比较稳定的代码,提交频率也很低,而 feature 是用来开发特性的,上面会存在许多零碎的提交,快进式合并会把 feature 的提交历史混入到 master 中,搅乱 master 的提交历史。所以如果你根本不在意提交历史,也不爱管 master 干不干净,那么 --no-ff 其实没什么用。不过,如果某一次 master 出现了问题,你需要回退到上个版本的时候,比如上例,你就会发现退一个版本到了 B,而不是想要的 F,因为 feature 的历史合并进了 master 里
假设主干分支是master,开发分支是dev,两个分支上都有此bug
pacteradeMBP:learngit linmu$ git push origin master
Everything up-to-date
标签(tag)从本质将就是指向某个commit的指针,好处是有个更容易记住的名字
git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中
git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
git clean -n
是一次clean的演习, 告诉你哪些文件会被删除. 记住他不会真正的删除文件, 只是一个提醒
git clean -f
删除当前目录下所有没有track过的文件. 他不会删除.gitignore文件里面指定的文件夹和文件, 不管这些文件有没有被track过
git clean -f
删除指定路径下的没有被track过的文件
git clean -df
删除当前目录下没有被track过的文件和文件夹
git clean -xf
删除当前目录下所有没有track过的文件. 不管他是否是.gitignore文件里面指定的文件夹和文件
相关说明:
Untracked files 没有记录的文件
Changes to be committed: 缓存区的文件,等待 commit
Changes not staged for commit: 修改的文件,等待add,commit
Untracked files: 没有进入git体系的文件
test_branch 是分支的名字
git clone -b test_branch git@github.com:SkyMissT/learngit.git
rm -rf .git
这是因为切分支时本地的代码没有提交,Git会提示二选其一
smart checkout:把冲突的代码带到目的分支
force checkout:不会把冲突的这部分内容带到目的分支,但是你在当前分支修改的所有内容就会被删除,就算你再切回来也找不到了
参考好未来那边的处理方式,开发时都都从主干切出自己的分支,完成功能模块开发后把自己开发的内容提交到主干,一般是在远程通过提 merge request 方式来申请代码合并(后面用mr代替)。如果没有冲突负责人review代码后可以直接合并到主干,如果有冲突则要自己解决冲突。解决冲突方法:先从主干checkout一个分支,把自己开发的内容合并到此分支上,在这里解决冲突。解决完冲突后再用此分支提交mr。这种方式是肯定没问题的!
PS:merge into current 意思是把选的分支合并到当前代码里~
git config --global http.sslVerify "false"
git config --global https.sslVerify "false"
举例来说,代码仓库有master和feature两个分支
现在将提交 f 应用到master分支。
# 切换到 master 分支
$ git checkout master
# Cherry pick 操作
$ git cherry-pick f
上面的操作完成以后,代码库就变成了下面的样子
从上面可以看到,master分支的末尾增加了一个提交f。
git cherry-pick命令的参数,不一定是提交的哈希值,分支名也是可以的,表示转移该分支的最新提交。
$ git cherry-pick feature
上面代码表示将feature分支的最近一次提交,转移到当前分支。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。