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 reflog
— Reference 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 就可以了。
1、具有1-5工作经验的,面对目前流行的技术不知从何下手,
需要突破技术瓶颈的可以加。2、在公司待久了,过得很安逸,
但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。
3、如果没有工作经验,但基础非常扎实,对java工作机制,
常用设计思想,常用java开发框架掌握熟练的,可以加。
4、觉得自己很牛B,一般需求都能搞定。
但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。
5. 群号:高级架构群 606187239备注好信息!
6.阿里Java高级大牛直播讲解知识点,分享知识,
多年工作经验的梳理和总结,带着大家全面、
科学地建立自己的技术体系和技术认知!
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com