重学Git(3)

前言

最流行的工作流来啦:Feature Branching,还有很多应该注意的用法。

核心

任何新的功能(feature)或 bug 修复全都新建一个 branch 来写;

branch 写完后,合并到 master,然后删掉这个 branch。

有了前面的基础,这两句话还是很好理解的。

删除远程分支使用的命令:

git push origin -d another

一般我们开发好another分支并review(一般会创建远程another分支便于共享代码)之后,先在本地pull一下远程仓库,然后再merge。

除此之外,github之类的服务还会有pull request之类的服务,便于多人之间的交流和合并删除分支的便利,但这部分并不是git的内容。

其他的也没什么了,这种工作流之所以流行与其简单的核心架构也有很大关系。

关于log

git log还有一些可选参数

❯ git log -p

可以查看具体改动

❯ git log --stat

可以查看简要改动

git show

可以查看当前一条commit

除此之外还有如git diff等查看未提交改动之类的方法。

rebase

我们知道branch+merge的操作到最后肯定会生成一个环,这个环的起点是分叉点,终点是合并点。我们也可以使用branch+rebase+merge的操作打破这个环。

reset

提交错了怎么办?

可以放弃:

git reset --hard HEAD^

这样就可以放弃最新的提交

revert

推错了怎么办?

可以使用revert来把之前的commit取反:

git revert HEAD^ +''

‘’中的内容即HEAD的编号,想撤销哪次commit就填上哪个的编号。他会提供一次新的提交,而该次提交与想撤销的提交是取反的,抵消下来,相当于那次提交被撤销掉了。

有用的stash

如果我们签了一个新的分支,开发了一半,这时忽然有紧急事情要我们去做,可能来不及做个新的commit,这时我们可以使用stash暂存开发进度。

git stash
git stash pop

这里有个小例子:

❯ ls
    目录: C:\Users\starinsun\Documents\test\git_work\another
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         2020/2/7     11:44           1714 .gitignore
------         2020/2/7     12:13             17 another.md
-a----         2020/2/7     16:53             16 branck_another.md
-a----         2020/2/7     16:52             21 master_branch.md

这时我们删除一个文件:

❯ rm another.md
starinsun@ASEN~\Documents\test\git_work\another   master ↑2 ~0 -1 ![18:16]  ❯ ls
    目录: C:\Users\starinsun\Documents\test\git_work\another
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         2020/2/7     11:44           1714 .gitignore
-a----         2020/2/7     16:53             16 branck_another.md
-a----         2020/2/7     16:52             21 master_branch.md
-a----         2020/2/7     12:00              6 this.md

然后我们使用stash暂存更改:

❯ git stash
Saved working directory and index state WIP on master: ec041b0 Merge branch 'another'
starinsun@ASEN~\Documents\test\git_work\another   master ↑2[18:16]  ❯ ls
    目录: C:\Users\starinsun\Documents\test\git_work\another
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         2020/2/7     11:44           1714 .gitignore
-a----         2020/2/7     18:16             20 another.md
-a----         2020/2/7     16:53             16 branck_another.md
-a----         2020/2/7     16:52             21 master_branch.md
-a----         2020/2/7     12:00              6 this.md

可以看到原本消失的another.md又回来了,这时如果我们使用:

❯ git stash pop
Removing another.md
On branch master

可以看到又回到了暂存前的状态。

删除的分支也可以找回

方法很简单:

git reflog
git checkout c08de9a
git checkout -b branch1
发布了362 篇原创文章 · 获赞 352 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_43870742/article/details/104212556