git
普通合并,不使用fast forward合并
master为主分支,dev分支有作了修改,切换回master后
git merge --no-ff -m "修改信息" dev
查看历史合并信息
git log --graph --pretty=oneline --abbrev-commit
#普通合并能看出分支合并信息, fast forward不行
保存现场
如在dev分支上正在进行代码工作,此时master要改临时的bug,所以先要保存dev的工作现场(dev已添加修改到暂存区,不添加保存不了现场)
git stash
Saved working directory and index state WIP on dev: f52c633 add merge
保存后就切换到master分支然后创建临时分支issue-1,在issu-1分支上修改完后再切回master分支普通合并issue分支
然后再切换到dev分支
git stash list 查看保存的工作现场
恢复工作现场
git stash pop #恢复的同时把stash内容也删除
最后因为dev分支是从master出来的,dev分支上也同样有bug,此时需要把master修复的提效复制到dev
git cherry-pick <commit ID>
强行删除没有合并的分支
git branch -D commit_ID #开发一个新的feature(功能)最好新建一个分支.若新分支修改完成后没有被合并到分支(如dev)就要删除,要加上 -D
推送分支
git push origin master #推送本地master分支到远程origin库
git push origin dev #推送本地开发分支到远程origin库
本地创建和远程分支对应的分支,如dev分支#默认clone时只创建master对应
创建dev对应
git checkout -b dev origin/dev
多人协作
1 首先,先试图用git push origin 分支到远程仓库
2 如果推送失败,则是因为远程仓库分比本地要新,则先git pull试图将远程库分支合并到本地
3 如果合并有冲突,先解决冲突后在本地commit提交,最后就能push到远程分支
如果git pull 提示no tracking information,则说明本地分支与远程会支的链路接关系没有创建。
用命令git branch --set-upstream-to=origin/dev dev
dev为分支
rebase #没搞懂
标签
git tag <tagname> 用于新建标签 ,默认最新HEAD,也可以指定COMMIT_ID
如git tag v0.9 d5u63eg
git tag -a <tagname> -m "信息" 指定标签信息
git tag #查看所有标签
git show <tagname> #查看标签信息
标签与commit_id挂钩,如果这个commit有master与dev分支,则两个分支都可以看到标签
推送一个本地tag到远程
git push origin <tagname>
推送全部未推送的标签到远程
git push origin --tags
本地删除一个标签
git tag -d <tagname>
删除远程标签
先在本地删除
git push origin :refs/tags/<tagname>
分支与标签很像,但分支可以移动,标签不行
.gitignore
忽回文件原则
1 忽略系统自动生成的文件,比如缩略图等
2 忽略包含敏感信息文件,比如方账密或数据库文件
3 忽略编译产生的中间文件,可执行文件
如果你确实想添加该文件,可以用-f强制添加到Git:
$ git add -f App.class
或者你发现,可能是.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:
$ git check-ignore -v App.class
.gitignore:3:*.class App.class