共计 2779 个字符,预计需要花费 7 分钟才能阅读完成。
前言:git 在理论开发过程中的重要性对在座的各位来说想必不必我过多赘述,然而对于 git 中千千万万简单的命令来讲,在理论开发过程中只有小局部是最常常应用的,明天国庆节第一天,因为疫情起因没回家。闲着没事就给大家总结一下在理论工作中我集体最最最最常常应用的命令,并且我会联合我日常工作流程来解说。
tips: 就不过多介绍 git add-commit-push 这三个命令了
一. git stash + git apply/ 或(pop)
背景:我须要拿着我批改的代码去和后端对接
已知:
- 咱们目前不在同一个分支
- 咱们都是从同一个 master 切出去的一个分支,而后各自进行后端代码的开发和前端代码的开发。
- 此时 leader 过去找我,说:“小韩啊,你当初须要去测试 xxx 的接口看看数据返回有没有问题。”
- 如果我当初的代码还未提交过一次(也就是素来没有执行
commit -m
这条命令)
这种状况十分好解决,如果后端的分支名称是“feat/test-git”并且曾经推上去近程仓库了
- 这是你批改的文件(理论状况很可能是批改了了多个文件,我这里举例子只批改了一个),
- 执行
git stash -m "备注信息"
命令,将这些批改的文件保留到 储藏区。这个命令会把你批改的代码放到一个独立区域。通过git stash list
命令能够查看你已保留的个数。 - 紧接着要想方法去后端的那个分支上了,(这里他必须把他的那个分支推送到近程仓库才能够进行前面的操作)执行
git fetch +[分支名]
,拉取近程分支到本地。 - 而后执行
git checkout +[分支名]
切换到后端的分支 - 下一步执行
git stash apply
或者git stash pop
命令。(该命令的大抵性能就是能够把你在 储藏区 的代码给利用到以后分支)两者的次要区别在于是否会 删除 掉储藏区的这份批改。apply
是不会删除,还会保留储藏区的记录,而stash pop
是会删除掉储藏区的这个记录。
我集体举荐apply
,因为给了你反悔的机会。并且如果你想测试的分支不是这个后端的,而是另外一个人的分支,那么你同样能够携带着你这份代码过来,而后 apply。 - 此时后端的代码就和你的代码合并到一起了,就能够释怀的测试啦~
二. git reset
紧接着的这个命令是我开发中用到次数十分的多的,并且是要害时候能够救命滴~
背景: 假如我当初实现了本人分支的开发,当初有一个 commit
曾经提交到了近程仓库(也就是执行过 push 命令了)
看一眼近程仓库,嗯,这个 commit 曾经被推过去了。
but,此时你忽然发现了这个 commit 的其中某个文件有一个微小的谬误,须要撤销掉这个 commit 从新提交一个 pr。
这时候你可能就须要用到 git reset
命令。其实从名字就可以看进去这个命令是要干什么的。
- 这时候咱们执行
git reset --soft HEAD~1
- 执行完当前,你会发现暂存区忽然呈现了刚刚咱们提交的那个 commit 的批改文件。
- 这里有个 git 基础知识的关键点须要去了解分明。咱们首先会发现在 Vscode 里会呈现一个细小的变动。
这里是揭示咱们落后了近程仓库一个批改。
- 咱们再去看一下 gitHub 仓库,好奇怪,为什么这个 commit 还在呢?
再执行一下
git log
看看,发现 gitlog 的内容,刚刚咱们提交的那个 commit 的确曾经隐没了,HEAD 指向的 commit 也是上一条。 - 这里咱们须要特地明确,基本上除了
git pull
这个命令,咱们操作的都是本地仓库,你是无奈间接影响到近程仓库的。你当初只是本地仓库撤销了这个 commit,然而近程仓库还没有更新。所以你接下来须要执行git push -f
这个命令,推送这次撤销的动作,来更新近程仓库。通知近程仓库你刚刚的那个 commit 我不要了。(慎用 push -f,应用的前提是你很分明这个命令会造成什么结果) - 这时候咱们再去 gitHub 看一下,就会发现。10 月 2 号提交的那个 commit 没有了,最新提交记录的也是昨天的。最重要的是咱们的代码也都回来了。
接下来你就持续批改你的代码,而后从新提交 pr 即可。
三. git commit –amend
背景:提交的 commit 备注信息有错别字这么办?
别急,git commit --amend
就是解决这个问题滴~
- 写错字,并且还推上去了。
- 执行
git commit --amend
会默认批改第一个commit
记录。 - 执行完后会跳转到这个页面,这个页面次要是 vim 编辑器 关上的样子,不理解 vim 的同学须要自行查阅相干操作。在这里我简略介绍一下在以后页面咱们须要用到的命令。
- 其实你会发现咱们的 commit 音讯就是第一行文字
- 这时候按下
i
,没错,就是这个键盘上普普通通的i
键位。(单词意思:insert: 插入 的缩写)而后输出你批改的内容即可
(我是真心胆怯你们看不懂,我都这样解说啦,还舍不得点个赞吗?😭)
- 接下来就是保留这次批改操作。在 insert 模式下,先按
esc
,退出插入模式,而后按下英文的冒号:
你会发现光标聚焦到了底部。紧接着输出
wq
而后按下回车。这样就执行了保留退出。(w:wirte to disk 写入磁盘,q:quit 退出) - 咱们执行一下
git log
看一下,commit 信息的确被批改了。然而同时也要留神左下角,揭示你近程仓库的这个commit
信息不对称,同时本地这个批改 commit 记录还未提交下来,揭示你提交。 - 然而在此之前,咱们要留神一个细节变动。这是本地 commit 批改过后的 commit-hash 标识
这是咱们之前的 commit-hash 标识,你会发现其实这个命令是删除了上一次 commit,而后从新生成了一个新的 commit 记录
- 最初,咱们同样须要用到
git push -f
这个命令,来强制把这次批改记录笼罩掉近程仓库的。(再次揭示:git push -f 在多人协同开发的时候,肯定要慎用)
- 而后看一下近程仓库。
四. git reflog
- 这个命令是搭配
git reset
应用的,尽管应用的场景无限,然而还简略解说一下吧。 git reset --hard
这个命令和git reset --soft
都是重置代码的意思。然而git reset --hard
命令不会将你批改的代码返回到你的暂存区,而是真正的删除了你撤销掉的 commit 记录。- 这里咱们模仿一下场景,当初这个 commit 我心愿撤回到暂存区。在下面咱们解说了
reset --soft HEAD~1
这个命令的应用办法。 - 咱们换
reset --hard HEAD~1
试试。会发现这个批改真的丢了。
- 这时候应用
git reflog
,能够查看咱们执行 git 相干的所有操作,找到上一次commit-hard 标识
的信息,复制。 - 而后执行
git reset --soft [hash-id]
你会发现当初多了一个 还没提交的 commit,那么它是什么呢? - 让咱们执行一下
git log
看一下
回来了回来了,都回来了~
总结
代码能够回来,然而属于你青春的那个 TA 什么时候才能够回来呢?