一.git基础流程各项指令的意义
1.git status 查看本地仓库当前的状态(本地仓库和远程仓库的差异文件会被提示出来)
新增一个c.js文件
查询状态——会告诉我们这个文件的状态是Untracked也就是未跟踪,就是说没有提交过,可以执行git add指令添加到暂存区
2.git add 提交到暂存区——可以多次执行这个指令
提交后再次查看状态,提示这个文件需要提交,也可以取消暂存
3.git commit -m ——把暂存区所有的文件提交到本地仓库的当前分支
执行git commit后修改就已经提交到本地仓库了(此时查看git log日志中已经有此次的提交,但是还不在远程仓库),这个时候git status就会提示有一个文件执行了Commit,可以git push推送至远程
4.git push 推送至远程分支
执行后远程分支就有这条记录了
6.查看远程分支和本地分支
git branch 查看所有的远程分支
git remote -v 查看本地分支
git remote update origin --prune vscode不显示远程分支
7.拉取远程仓库的代码
git pull origin master
8.克隆远程仓库代码
git clone 远程地仓库址
9.git reset --hard HEAD^
回滚到上个版本
上上个HEAD^^ 或者HEAD~2
10.git reset --hard commitId(对应的log的Id)回到指定的版本
11.git log 查看所有的提交记录,向下箭头可以看之前记录,按键盘"q"可以退出git log
12.后悔药 git reflog 查询历史commit id
使用场景,假如你回退版本了,但是后来又想找回的时候,commit id找不到了,怎么再恢复代码,使用git reflog查询commit id
13.git checkout – fileName ——修改了但是还没添加到暂存区的文件恢复(该指令起始就是把版本的库的文件替换到工作区)
14.git reset HEAD fileName——把已经添加到暂存区的文件恢复到工作区
之后可以再执行git checkout – fileName恢复到修改前
二.关于冲突
冲突的产生:根本原因就是在同一个分支,同一段时间,不同的人改了同一个文件,其中一个人提交了,另外一个人提交前拉取时造成的,所以冲突就是个求同存异的过程,并不可怕,找到方法即可。
冲突的现象:
关于分支
分支就是在主分支master基础上的分叉延伸,不同的分支可以是不同的阶段、不同的功能,分支可以合并、可以删除。
场景1:加入A同学和B同学在开发两个不同的功能,如果A同学开发了50%提交了,不完整的代码会影响其他人开发,但是一直不提交又要承担代码丢失的风险,这个时候就可以使用分支解决了。
场景2:如果master是一个稳定版本的项目已经在运行,那么客户要求增加新的功能,那么在不影响稳定版的情况下,新的功能我们就可以在分支中开发。
1.创建分支:git branch branchName
2.切换到某个分值:git checkout branchName
确认是否切换成功:git branch
*号所在的位置就是当前的分支
如果新建后远程仓库看不到(本地关联远程分支),执行:git push --set-upstream origin 新分支名字
3.创建并切换至某个分支:git checkout -b branchName
一旦有了分支,合并分支之前,在哪个分支上改动的代码只能在哪个分支上才能看到
例如我创建了一个dev分支,提交了两次代码,后又切换至master分支提交了代码,版本线如下图(下图插件是VScode中的Git Graph)
4.合并分支:git merge branchName
此处branchName
是dev
,而当前所在的分支是````master``,就代表要把dev
分支的内容合并至master
分支,合并后的效果如下图,合并后master分支就可以看到dev分支的内容了。
5.删除分支:git branch -d branchName
合并后可以及时删除多余的分值保证主分支的干净方便管理,删除后的版本线如下图
合并过程中如果出现类似下图,可参考此地址
6.查看版本图git log --graph