git的常见使用方法(你们仍未掌握那天所学的)

工作中必备 git 技能详解

绝大多数人对于 git的认识只停留在git status, git add, git push, git pull, 好一点会知道git merge, 那就是全部了。

不信?

试试你能回答出以下问题不:

  • git push origin master命令中,origin 代表的是什么,整个命令是什么意思,origin 可以修改不

  • git fetch origin; git rebase origin master 这些命令知道吗?跟 merge 有什么区别?

  • git如何合并两个补丁,对第三个补丁进行修改?(这个很重要,因为你不会才导致 git commit 的信息没有意义,commit 不够小和多)

又或者,你试过合并commit 吗?commit message 写的不好时如何修改?如何改变 commit 的顺序?

如果以上有不清楚的话,那么我希望以下的文章对你有帮助。


你所不知道的 github 初始化

初始创建一个 github 仓库时,github 会给一些命令你去创建 git本地项目,git init就不用说了,git remote add origin git@github.com:YongHaoWu/test.git 你知道这里的 origin 是什么吗?

是的,就仅仅是一个名字,对git@github.com:YongHaoWu/test.git 这个 ssh 地址的命名,你可以把origin命名为 gakki —— ` git remote add gakki git@github.com:YongHaoWu/test.git, 以后就可以用git push gakki master`了。

另外,你还可以 add好几个名字,比如:你在 github 跟coding 同样都有仓库放代码的情况。

  • 默认pick, 不做更改

  • reword:改 commit message

  • squash:当前补丁跟上一个补丁合并

  • fixup: 跟 squash 作用一样,但是会丢弃当前 commit 信息,使用上一个的;squash 则是可以让你重新写

  • 需要修改时,把上面四个补丁最前面的 pick 改成对应操作(如 reword,fixup),然后保存退出即可。


    不用担心的回退

    回退大家应该都知道git reset --hard commitID, 把整个 git 回退到这个 commitID 里;

    其实除了--hard, 还有 soft.

    hard是把改动全部都丢弃,而soft则柔软一些,仅仅是把所做的 commit 丢掉,而改动都保留在本地——通常用来修改,再重新 commit 一遍。

    做了胡乱的更改,导致 git log都不正常,找不回那个 commit 了怎么办?

    不用担心, 还有 git reflogReference logs, or "reflogs", record when the tips of branches and other references were updated in the local repository.

    用它可以看到你对当前项目所做过的所有 git 操作,所有 git 操作的 id 号——意味着你可以回退到任意的时刻。

    所以,只要你没有把改动没有做 commit 就丢失,又或者用git push -f把 github 仓库覆盖了,你就可以恢复任意时刻的东西。


    git stash 暂存更改

    时刻要注意,当前修改没有 commit 的时候,不能 checkout 切换分支。

    此时不想 commit,便需要 git stash 暂存更改;顾名思义,stash 使用 stack(栈)实现,所以可以git stash存多次,然后切换分支后, git stash pop 撤出来

    比 grep 更好用的 git grep

    相比于 grep -R keyword ./ , 我是更喜欢用 git grep keyword, 差不多是一样的,不过git grep只是会找当前的 目录中git 有 track(跟踪)的文件【也就是变动时,git status 会检测到变化的文件】


    超级进阶:分割commit

    commit 03bb9a14f5ea00d51d2edc14587b37b1ab9ccf5dAuthor: YongHao Hu christopherwuy@gmail.comDate: Fri Jul 10 17:23:02 2015 0800msvcp110: Add tr2_sys__Unlink implementation and test.

    假设我们想要分割 msvcp110: Add tr2_sys__Unlink implementation and test. 这个 commit,可以直接使用 git rebase -i HEAD~7(数字随意,反正在 Unlink 这个 commit 前就可以了),选择 Unlink 这个 commit, 改成 edit。 一般情况下,就是这样修改 commit 的,修改后再 git rebase –continue.

    但是,我们需要的是分割补丁: 选择 git rebase HEAD^, 撤销这次 commit,再把想改动的文件 git add, 再 git commit, 这样就可以分割很多补丁。

    最后,git rebase –continue 就可以了。

    git的常见使用方法(你们仍未掌握那天所学的)(1)

    git的常见使用方法(你们仍未掌握那天所学的)(2)

    git的常见使用方法(你们仍未掌握那天所学的)(3)

    git的常见使用方法(你们仍未掌握那天所学的)(4)

    git的常见使用方法(你们仍未掌握那天所学的)(5)

    1、具有1-5工作经验的,面对目前流行的技术不知从何下手,

    需要突破技术瓶颈的可以加。2、在公司待久了,过得很安逸,

    但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。

    3、如果没有工作经验,但基础非常扎实,对java工作机制,

    常用设计思想,常用java开发框架掌握熟练的,可以加。

    4、觉得自己很牛B,一般需求都能搞定。

    但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。

    5. 群号:高级架构群 606187239备注好信息!

    6.阿里Java高级大牛直播讲解知识点,分享知识,

    多年工作经验的梳理和总结,带着大家全面、

    科学地建立自己的技术体系和技术认知!

    ,

    免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

      分享
      投诉
      首页