git add多个文件_git分支管理

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 files
cherry-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分支

解决冲突

a9993f79aaf2a3d364e659cc3f65f267.png
解决冲突步骤:

1_编辑文件,删除特殊符号

2_把文件改到满意的程度,保存退出

3_ git add [文件名]

4_ git commit -m "修改信息"
* 此时commit一定不能带具体文件名

* 如果是在rebase,那么第四步应该用git rebase --continue
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值