关于webpack,git的复习汇总
关于webpack
关于git
1.什么是git:git是分布式版本控制系统。什么是版本库:一个被Git所管理起来的目录,该目录里的文件的修改,删除,git都能追踪到,甚至在某一时刻进行还原。
时光机穿梭:
1.git init初始化仓库,创建版本库的时候,Git自动为我们创建了唯一一个master分支
2.git add添加到暂存区
3.git commit提交到仓库(1.文件被改动 2.具体的文件修改内容)
4.在git中,用HEAD表示当前版本,上一个版本就是HEAD^,git reset --hard HEAD^回退到上一个版本,git log可以查看当前版本库的状态,确定要回退到哪个版本。要重返未来,用git reflog查看历史命令,以便确定要回到未来的哪个版本。
5.git status可以查看当前工作区和暂存区的状态
6.git diff HEAD --文件可以查看文件在工作区和版本库里面最新版本的区别
7.不小心弄乱了工作区的内容直接丢弃工作区的修改git checkout --file,不但弄乱了工作区的内容还添加到暂存区则git reset HEAD<file>,如果已经提交本地仓库则直接版本回退。
8.不小心把文件删了rm 文件,如果确实要从版本库中删除该文件,则用命令git rm 文件,并且git commit.如果是误删,则直接git checkout--文件,git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以一键还原。
2.git add添加到暂存区
3.git commit提交到仓库(1.文件被改动 2.具体的文件修改内容)
4.在git中,用HEAD表示当前版本,上一个版本就是HEAD^,git reset --hard HEAD^回退到上一个版本,git log可以查看当前版本库的状态,确定要回退到哪个版本。要重返未来,用git reflog查看历史命令,以便确定要回到未来的哪个版本。
5.git status可以查看当前工作区和暂存区的状态
6.git diff HEAD --文件可以查看文件在工作区和版本库里面最新版本的区别
7.不小心弄乱了工作区的内容直接丢弃工作区的修改git checkout --file,不但弄乱了工作区的内容还添加到暂存区则git reset HEAD<file>,如果已经提交本地仓库则直接版本回退。
8.不小心把文件删了rm 文件,如果确实要从版本库中删除该文件,则用命令git rm 文件,并且git commit.如果是误删,则直接git checkout--文件,git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以一键还原。
远程仓库:
1.第一次使用git push推送master分支时不但会把本地master分支推送到远程的master分支,还会把本地的master分支和远程的master分支关联起来。git remote rm 远程库名称可以解除本地库与远程库的关系,git clone可以克隆远程仓库
标签管理:
1.在git中打标签直接git branch切换到需要打标签的分支上,git tag 标签名就可以打上一个标签。可以用git tag查看所有标签,可使用git show 标签名查看标签信息,Deleted可以删除打错的标签,推送标签到远程 git push prigin 标签名,git push origin :refs/tags/<tagname>可以删除一个远程标签,git tag -d <tagname>可以删除一个本地标签。
分支管理:
1.HEAD其实不是指向提交,而是指向master,当创建新的分支dev的时候,HEAD指向的就是dev分支,git checkout -b dev切换dev分支(-b表示创建并切换),git branch命令表示查看当前分支,git checkout master切换到主分支上以后,git merge dev,git merge相当于合并指定分支到当前分支,合并完成后就可以git branch -d dev删除dev分支了。
2.当master分支和feature1分支各自都分别有新的提交,合并分支的时候就会有冲突,git status就可以查看冲突,修改好冲突以后还可以使用git log --graph查看分支的合并图,解决完冲突以后就可以使用git branch -d 分支删除分支。
3.通常合并分支Git会用Fast forward模式,这种模式下删除分支后会丢掉分支信息。git merge --no-ff dev合并dev分支且禁用Fast -forward参数,在实际开发中master是非常稳定的,我们应该用dev分支来干活,--no-ff合并后的历史有分支,fast forward就看不出来做过合并。
4.工作区的东西还没做完,来新活了怎么办,把工作区的隐藏起来,git stash,这时用git status查看工作区的内容就是干净的,干完活以后git stash list查看隐藏的内容,然后可以git stash apply恢复再用git stash drop删除,或者恢复的同时把stash内容也删了git stash pop。
2.当master分支和feature1分支各自都分别有新的提交,合并分支的时候就会有冲突,git status就可以查看冲突,修改好冲突以后还可以使用git log --graph查看分支的合并图,解决完冲突以后就可以使用git branch -d 分支删除分支。
3.通常合并分支Git会用Fast forward模式,这种模式下删除分支后会丢掉分支信息。git merge --no-ff dev合并dev分支且禁用Fast -forward参数,在实际开发中master是非常稳定的,我们应该用dev分支来干活,--no-ff合并后的历史有分支,fast forward就看不出来做过合并。
4.工作区的东西还没做完,来新活了怎么办,把工作区的隐藏起来,git stash,这时用git status查看工作区的内容就是干净的,干完活以后git stash list查看隐藏的内容,然后可以git stash apply恢复再用git stash drop删除,或者恢复的同时把stash内容也删了git stash pop。
5.如果要丢弃一个没有被合并过的分支,可以使用git branch -D 名字。
6.远程库的默认名称是origin,要查看远程库的信息用git remote,你的小伙伴创建远程的本地分支git checkout -b dev origin/dev弄完以后提交git push origin dev,恰好你对同样的文件做了修改,git push origin dev推送失败,git pull拉取下来解决冲突,但是要提前指定本地dev分支与远程dev分支的链接git branch --set-upstream-to <branch-name> origin/<branch-name>,合并冲突然后再提交到远程。
7.rebase操作可以把本地未push的分叉提交历史整理成直线;rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
7.rebase操作可以把本地未push的分叉提交历史整理成直线;rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
git pull相当于是从远程获取最新版本并merge到本地,git fetch相当于是从远程获取最新版本到本地,不会自动merge,简单来说,git pull就是git fetch+git merge。为什么git pull从远程拉取的时候会有冲突:因为git pull命令用于从远程获取代码并合并到本地。git clone和git pull的区别:从远程服务器克隆一个一模一样的版本库到本地,叫做clone,从远程服务器获取到一个branch分支的更新到本地,并更新本地库,叫做pull.git rebase的作用:把我们的分叉提交整理成一条直线,rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。