再也不让git坑自己了

——前言

作为一个资深的sourcetree用户(git可视化操作工具),平时对git命令行命令用的少之又少。基本就是clone,pull,add,commit,push.无非也就是这些。(一般合并,解决冲突都是结合可视化工具的)。我觉得可能是我对自己工具人属性的过于肯定。我就在简历上面写了熟练使用git进行版本操作。这可坑惨了自己。

真实尴尬小剧场

  • 面试官问:假如你在add,commit之后发现自己提交的内容不太好,想要返回修改怎么办。

  • 我? 那我直接在修改一次add,commit不就行了?

  • 面试官看了我一眼笑了笑,那你就不害怕留下记录,被当成bad case在大会上点名’表扬‘吗?

  • 我。。。。。。

(ps:后面我补了补,只要git checkout . 将本地库中的提交返回工作区去修改就行了。)

—— (脑补面试官追问,要是已经push到远程分支呢? git reset 我强制删除提交分支,不留痕迹。什么太暴力了,那git revert回滚给自己留有余地)

下面正式介绍一些常用git命令,让你摆脱一个工具人的名号

image.png

如图所示:

首先下拉代码

git clone +仓库地址,可以将远程仓库克隆到本地(当然合作开发需要权限),后续更新代码只需要git pull 即可。

git pull 下载代码和工作区代码快速合并。 (相当于git fetch + git merge)但是后者比较合理可以比较之后合并,前者的话,易出现冲突。需要手动去解决

补充一下fork

git fork 也有拉取的含义。不过具体一点说,它相当于在你的github 远程仓库里复制了一份别人的仓库 此时你在git add, git commit ,git push 是修改你自己远程仓库里面的代码。如果想要修改原仓库需要pull request ,原仓库主人就会收到请求,并决定要不要接受你的代码

image.png

如上图 就有一个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 ,拉一下代码,解决一下冲突。千万不能暴力上传)

image.png

撤销

  • 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一般自动命名,如下图形式)

image.png

  • git stash apply 应用某个暂存与pop 不同的是pop后会从list中消失
  • git stash drop 后加name 删除某个暂存
  • git stash clear 删除所有暂存

总结

image.png

分类:
开发工具
标签: