git
创建分支
git branch [分支名]查看分支
git branch -v
git branch -a
查看所有分支
git branch -va
查看所有的远端和本地的分支
git branch
查看当前所在的分支切换分支
切换之前一定要先add,否则将会把没有add的东西也带到新分支上
git checkout [分支名/标签名]
或者
git switch [分支名]
git checkout -b [分支名] [远程库地址别名/远端分支名]
可以直接和远端分支绑定
git checkout -b temp 415c5c8
按照某一commit的哈希值创建一个temp分支,并跳转到temp分支上上重命名分支
先跳转到想改名字的分支:
git branch -m [新分支名]
* 对本地分支有效
远程的分支可能得先删除旧的,再上传新的合并分支(merge、cherry-pick)
merge
允许不同分支合并
git merge --allow-unrelated-histories github/master
步骤:
1_切换到接受修改的分支(被合并、增加新内容)上
git checkout [被合并分支名]
2_执行merge命令
git merge [有新内容分支名]
git clean -f
每次 merge 完总是出现很多 .orig 文件,使用 git clean -f 干掉所有 untracked filescherry-pick
使用上述的merge命令,如果在分支master中执行merge b,会将分支b的所有commit都合并到分支master中。
如果只需要挑选分支b中的其中一个或几个commit,而不是全部,可以在分支master上使用cherry-pick
步骤:
先用git log查看,分支b中需要commit的id(例如f4a3u5j2),复制下来
git checkout 到master分支下
git cherry-pick f4a3u5j2
如果出现冲突:
先解决冲突
git add 将解决了冲突的文件添加到暂存区
git cherry-pick --continue即可更新分支(fetch、rebase)
fetch
在《git与远程库(github)》中介绍rebase
如果不加 -i,就是针对分支的最新版本进行操作
如果加 -i,就是针对某一个commit进行操作(可以跨分支)
分支1$ git rebase [分支2]
从分支2更新最新版本到分支1中(可能需要解决冲突)
git rebase -i [哈希值]
交互式rebase,有6种操作可以选,可以修改、增加、删除、合并任意的commit用git rebase -i 合并commit
修改老旧的commit的message:
* 注意rebase在团队的master分支上慎用
git rebase -i 需要改动的当前commit的上一个commit
会弹出一个文件,选reword,保存退出,
然后又会弹出一个文件,此时修改名称
把多个连续commit合并成一个:
git rebase -i 需要改动的当前commit的上一个commit
在最旧的那一个(最上面那个)commit选择pick,下面的全部选squash
把多个间隔commit合并成一个:
如果rebase的时候选的base是最旧的、第一次commit
那么在弹出交互式文件的时候不会显示这个base。因为只会显示到下一个commit
因此如果想对第一次commit进行操作,需要自己在交互式文件里补上这个commit的哈希值
并且在交互式文件中,从上到下的顺序是越来越新的,
因此如果想把间隔的commit合在一起,需要调整顺序,然后再合并rebase rerere
团队协作时如何做多分支的集成 -> merge或者rebase
进度条21:20 -> 通用的rebase方法
* 本地先fetch,git fetch origin
* git rebase origin/master
* 依次按照每一个commit解决冲突,此步骤很繁琐
进度条34:35 -> 基于rerere的rebase方法
* 这个方法的目的是记住以前解决冲突的方式
* 需要设置:git config global rerere.enabled true(全局)
* 也可以仅针对单个仓库 ,在仓库中创建.git/rr-cache目录删除分支
git branch -d [aaa]
删除本地的aaa分支
git branch -D [aaa]
强行删除本地的aaa分支
* 如果分支中含有没有保存的东西,系统会阻止普通删除。但是可以用这种方式强行删除
git push origin --delete [aaa]
删除远程的aaa分支解决冲突

解决冲突步骤:
1_编辑文件,删除特殊符号
2_把文件改到满意的程度,保存退出
3_ git add [文件名]
4_ git commit -m "修改信息"
* 此时commit一定不能带具体文件名
* 如果是在rebase,那么第四步应该用git rebase --continue
4万+

被折叠的 条评论
为什么被折叠?



