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