这是我参与更文挑战的第 15 天,活动详情查看: 更文挑战
Lynne,一个能哭爱笑永远少女心的前端开发工程师。身处互联网浪潮之中,热爱生活与技术。
前言
转眼间算上实习都入职半年多了,但就在一两个月前都还是会因为代码合并冲突,合并导致文件全部改动等问题而要求助同事,发现同事也还是会百度(❦ω❦),也是,真正的大佬应该极少犯我这种低级错误。但是,几次错误下来发现这种问题还是要记忆下,否则不仅容易出错还显得...很笨(❦ω❦)就是...这个人怎么连Git都不会啊。
明明我在找到工作前也是会经常往 github 上推一推没什么用的代码的...
概念
前提
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
提交流程
我们开发提交代码到发布的时候,主要有以下几步:
1. git add - 添加
把文件添加进去,实际上就是把文件修改添加到暂存区;
2. git commit - 提交
提交更改,实际上就是把暂存区的所有内容提交到当前分支;
3. git push - 推远程仓库
将当前本地分支的内容推到远程分支;
4. git merge - 合并分支
将对应远程分支合到master。
这大概是最最常用的四个命令。
代码提交问题
问题一:工作区代码非正常改动
问题描述:git add后发现所有文件发生变动---原因是-文件权限修改 or 文件换行符改动导致
一般是同个项目在不同操作系统切换开发造成(linux、mac、windows)的,需要做以下修改:
git config --global core.filemode false
git config --global core.autocrlf
问题二:缓存区代码有错误
场景一:已add未commit提交
5. git restore
git撤销暂存区部分文件 ---> git restore 文件名
git撤销暂存区全部文件 ---> git restore .
场景二:已commit未push
6. git reset 撤销
git撤销未提交,保留工作区)
---> git reset --soft HEAD^1 将版本库回退一个版本,soft修改版本库、保留暂存区、工作区
git撤销未提交,清空工作区)
---> git reset --hard HEAD^1 将版本库回退一个版本,hard修改版本库、暂存区、工作区
git撤销未提交,清空工作区) ---> git reset --hard 版本号(commit) 将版本库回退到对应版本,hard修改版本库、暂存区、工作区
场景三:已push
7. git revert 回退
git撤销已push内容,push内容不可找回)---> git revert
git撤销已push内容,push内容可找回) ---> git reset --hard 版本号(commit) 将版本库回退到对应版本,hard修改版本库、暂存区、工作区
两者区别:
-
reset将撤销点之后的操作都回退到暂存区,HEAD向后移动一下
-
revert撤销提交,HEAD继续前进
其他问题
8. git branch -a ----> 查看所有分支信息(本地)
9. git fetch ----> 查看不到同事协作分支,获取分支信息
10. git pull ----> 查看不到同事协作分支,获取分支内容
总结
熟能生巧,多犯几次错总会记住的...以上 10 个 git 命令就是我工作以来用的最多的了...