——前语
作为一个资深的sourcetree用户(git可视化操作东西),平时对git指令行指令用的少之又少。根本就是clone,pull,add,commit,push.无非也就是这些。(一般兼并,处理抵触都是结合可视化东西的)。我觉得可能是我对自己东西人特点的过于肯定。我就在简历上面写了熟练使用git进行版别操作。这可坑惨了自己。
真实尴尬小剧场
-
面试官问:假如你在add,commit之后发现自己提交的内容不太好,想要返回修正怎么办。
-
我? 那我直接在修正一次add,commit不就行了?
-
面试官看了我一眼笑了笑,那你就不害怕留下记载,被当成bad case在大会上点名’表扬‘吗?
-
我。。。。。。
(ps:后边我补了补,只要git checkout . 将本地库中的提交返回作业区去修正就行了。)
—— (脑补面试官追问,要是已经push到长途分支呢? git reset 我强制删去提交分支,不留痕迹。什么太暴力了,那git revert回滚给自己留有余地)
下面正式介绍一些常用git指令,让你摆脱一个东西人的名号
如图所示:
首要下拉代码
git clone +库房地址,能够将长途库房克隆到本地(当然合作开发需求权限),后续更新代码只需求git pull 即可。
git pull 下载代码和作业区代码快速兼并。 (相当于git fetch + git merge)可是后者比较合理能够比较之后兼并,前者的话,易呈现抵触。需求手动去处理
弥补一下fork
git fork 也有拉取的意义。不过详细一点说,它相当于在你的github 长途库房里仿制了一份他人的库房 此刻你在git add, git commit ,git push 是修正你自己长途库房里边的代码。假如想要修正原库房需求pull request ,原库房主人就会收到恳求,并决定要不要承受你的代码
如上图 就有一个fork按钮也是这个效果。
设置装备
- git config [–global] user.name “[name]”
- git config [–global] user.email “[email address]” 用来符号你个人信息,避免你瞎改一通之后找不到人。(小心一点,你被着的)
提交三大流程
- git add. 追踪作业区的代码(只有add后才干commit)
- git commit -m “弥补说明信息” 上传暂存区代码到本地作业区
- git push 上传本地作业区代码并快速兼并
git status 检查修正状况
抵触
一般状况下,呈现分支的场景有如下:
- 多个分支代码兼并到一个分支时
- 多个分支向同一个远端分支推送
需求手动在文件中处理。如图所示,挑选Accept current change (承受本次修正),Accept incoming change(承受传入的修正) 或许手动兼并两者。然后保存修正 ,持续add commit push上传。
(ps:合作开发时候,每次push之前一定要先pull ,拉一下代码,处理一下抵触。千万不能暴力上传)
吊销
- git checkout [file] 康复暂存区的指定文件到作业区
- git checkout [commit] [file] 康复某个commit的指定文件到暂存区和作业区
- git checkout . 康复暂存区的一切文件到作业区
- git revert 保留之前的提交记载 (也就是说,万一你是一个小马虎,revert之后发现没错,是后端过错,你还能够持续在回去上一个版别)
- git reset 相当于直接删去本版别,回归上一个版别。
暂存
-git stash 对作业区代码暂时保存。 这是一个十分实用的功能,只是很可能被疏忽掉。
举个
你开发一个大项目到一半,突然线上有个暂时bug要修正,可是代码还不想进行提交,这时候能够运转git stash 进行暂存,作业区会康复到上次提交前的状态。 然后咱们就能够新开分支修正bug。待一切完成 之后 git stash pop 拿回记载持续开发。当然假如此期间修正了同一文件需求手动处理抵触。
关于git stash
常见的指令如下:
- git stash 暂存
- git stash list 检查本分支一切暂存代码
- git stash pop 后加stash的name 取出对应的暂存。(name一般自动命名,如下图形式)
- git stash apply 使用某个暂存与pop 不同的是pop后会从list中消失
- git stash drop 后加name 删去某个暂存
- git stash clear 删去一切暂存
总结