git与svn区别
git
1.git是分布式的scm,svn是集中式的。(最核心)
2.git是每个历史版本都存储完整的文件,便于恢复,svn是存储差异文件,历史版本不可恢 复。(核心)
3.git可离线完成大部分操作,svn则不能。
4.git有着更优雅的分支和合并实现。
5.git有着更强的撤销修改和修改历史版本的能力
6.git速度更快,效率更高。
7.Git分支廉价,SVN分支昂贵,Git 分支是指针指向某次提交,而 SVN 分支是拷贝的目录。这个特性使 Git 的分支切换非常迅速,且创建成本非常低。
而且 Git 有本地分支,SVN 无本地分支。在实际开发过程中,经常会遇到有些代码没写完,但是需紧急处理其他问题,若我们使用 Git,便可以git stash 存储临时改动就可以将临时写的代码存起来,等做完着急处理的工作可以使用git stash pop恢复改动。。。
基于以上区别,git有了很明显的优势,特别在于它具有的本地仓库。
svn
- 集中管理都有一个服务器,用来保存文件,协作开发者需要通过客户端连到这台服务器,进行协作开发(更新、提交)
Subversion的特点
在易用性这方面,SVN 会好得多,简单易上手,对新手很友好。但是从另外一方面看,Git 命令多意味着功能多,若我们能掌握大部分 Git 的功能,体会到其中的奥妙,会发现再也回不去 SVN 的时代了。
git命令
1 git init 初始化git仓库 (mac中Command+Shift+. 可以显示隐藏文件)
如果初始化之后看不到.git 文件夹则可以通过 ls -ah查看
也可以通过命令 attrib -r -h .git 将隐藏的.git文件显示出来
2 git status 查看文件状态
3 git commit -m “对本次修改的具体描述”
查看操作
1 | git log | 查询日志的命令 |
2 | git log --pretty=oneline | 美化日志格式的命令 日志会显示在一行 |
3 | git reflog | 查看之前所有日志 例如关闭了明天再打开 |
分支操作
====
注意:切换分支需要先提交到暂存区,不然切换不过去的
1 | git branch | 查看本地分支 |
2 | git branch -r | 查看远程分支 |
3 | git branch -a | 查看所有分支(本地+远程) |
4 | git branch branchname | 创建分支(本地) |
5 | git checkout branchname | 切换分支(本地) |
6 | git checkout -b branchname | 创建并切换分支(本地) |
7 | git branch -d branchname | 删除本地分支(注意,如果当前在该分支,必须先切到其他分支,再删除该分支) |
8 | git branch -D branchname | 强制删除本地分支(适用于用 git branch -d 删除报:the branch XXX is not fully merged(分支有未合并的更改) 时,想强制删除分支的情况) |
提交操作
====
@活在风浪里 1334132303@qq.com
1 | git add <file> | 提交单独文件 |
2 | git add . | 将所有修改添加到暂存区 |
3 | git commit -m "commit msg" | 提交信息描述 |
撤销
==
1 | git reset HEAD file | 从暂存区撤回,执行 git add . 这个操作后,后悔了,想回到这个操作之前的状态 |
2 | git checkout -- file | 可撤销工作区文件的修改 |
3 | git reset --hard HEAD^ | [ 回退到上一个版本 ] 回退上一版本 |
4 | git reset --hard HEAD^^ | [ 回退到上二个版本 (以此类推)] |
5 | git reset --hard HEAD~2 | [ 回退到上二个版本 (以此类推)] |
6 | git reset --hard id | 已经提交本地仓库撤回到暂存区 [ 根据id撤回具体版本 ] |
7 | git push origin test --force | 撤回远程仓库的提交 |
撤销的两种情况
git log 查询出有若干次提交,commit id 由近到远为(id4 , id3, id2, id1) ,然后使用git reset --hard 将版本回退到commit id 为id2的版本,这时突然后悔了,想要再回到id3或者id4的版本
有两种情况:
(1)id3或id4的更改已经push到远程
这种情况下,即使终端被关闭了,也是可以从远程仓库查到id3、id4的commit id, 然后直接执行git reset --hard <id3/id4>即可。
(2)id3或id4的更改未push到远程
这种情况下,如果你在之前执行过git log的话(且终端没有被关闭),终端会有id3、id4的commit id记录,找到后执行git reset --hard <id3/id4>即可。但如果之前没有执行git log ,那么由于执行了git reset --hard ,id3和id4的commit id 就无法通过git log 查到了,那么应该怎么办呢? git 提供了一个git reflog可以查询之前的执行过的命令。
下载git、
第一步:下载git工具,git下载,选择适合自己的版本进行安装。
第二步:安装完成后,鼠标右键找到Git bash,双击打开。
多人协作开发
1、首先,你需要在远程仓库创建一个新的项目(github、gitee或是你自己的远程服务器),这个新的项目默认会有一个主分支 master,现在你需要新建一个 dev 分支,这个dev分支就是所谓的主战场,在以后的开发中,就在这个dev以及dev下的分支进行开发。
2、然后使用git命令git clone到一个空的文件夹
3、克隆下来的这个项目相当于你在远程创建的那个项目的镜像,所以现在你本地的项目里也有个dev分支,当然也有master分支,现在切换到dev分支 git checkout dev
4、现在就可以在这个dev分支上新建自己的分支愉快的开发了,命令 git checkout -b dev1
5、由于是多人开发,另一个人也可以以同样的方式(经历2、3、4步骤后)新建一个自己的分支dev2 命令git checkout -b dev2
6、在dev1 或 dev2 开发完成后,需要提交到本地仓库,在dev1分支下使用命令 git add . 和 git commit -a -m ‘commit msg’
7、提交完之后,需要汇总到dev分支上,先切回dev分支,命令git checkout dev,这个时候是没有你在dev1上修改或添加的东西的,需要合并之后才会有;
8、合并 在dev分支下使用命令 git merge dev1
现在就可以在dev分支下看到你在dev1分支下修改的东西了
9、提交 合并到dev分支之后就是提交到远程仓库的dev分支,可以先看一下现在都有什么分支,命令 git branch -a
10、提交到远程dev 命令 git push origin dev
11、现在远程仓库的dev分支上已经是最新的代码了;最后再把远程的dev分支合并到远程的master主分支上就可以了。一般主分支主要是存放比较稳定版本的版本,dev分支才是最活跃的。
图形事例
====
http与ssh
============
https需要输入用户名和密码网址开头https ssh配置公钥不需要 网址开头git@github
冲突概念
========
当然还有在父分支合并子分支的时候如果A B子分支同时修改了,相同地方,git会提示冲突,此行为需人为解决冲突,达到理想效果,
临时保存修改 不建议无意义的提交本地仓库所以需要临时保存修改
==================================
临时更改保存可以这样理解,假如有一个急活可以先暂时保存,去做急活,git stash 存储临时改动就可以将临时写的代码存起来,等做完着急处理的工作可以使用git stash pop恢复改动,
推送方式
====
第一种:
git push ‘远程地址’ 分支名
//推送不上去 远程仓库里有别人的东西,需要先拉取在推送
git pull ‘远程仓库’ 分支名
采用第二种推送方式:
1.如果远程仓库有内容,要先拉取最新代码 git pull ‘远程地址’ master||main //在github线上建仓库默认为main主分支
2.推送 git push ‘远程地址’ master||main
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后:
总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。
面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。
讲义、实战项目、讲解视频,并且会持续更新!**
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
[外链图片转存中…(img-T0vJX9WE-1713684950317)]
最后:
总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。
面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。