——前语

作为一个资深的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坑自己了

如图所示:

首要下拉代码

git clone +库房地址,能够将长途库房克隆到本地(当然合作开发需求权限),后续更新代码只需求git pull 即可。

git pull 下载代码和作业区代码快速兼并。 (相当于git fetch + git merge)可是后者比较合理能够比较之后兼并,前者的话,易呈现抵触。需求手动去处理

弥补一下fork

git fork 也有拉取的意义。不过详细一点说,它相当于在你的github 长途库房里仿制了一份他人的库房 此刻你在git add, git commit ,git push 是修正你自己长途库房里边的代码。假如想要修正原库房需求pull request ,原库房主人就会收到恳求,并决定要不要承受你的代码

再也不让git坑自己了

如上图 就有一个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坑自己了

吊销

  • 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坑自己了

  • git stash apply 使用某个暂存与pop 不同的是pop后会从list中消失
  • git stash drop 后加name 删去某个暂存
  • git stash clear 删去一切暂存

总结

再也不让git坑自己了