3

引言

距离这篇文章已经快两年没动笔了,想想还是得总结点什么,不枉曾经走过的年月。

写篇git,虽然网上有很多教程,但是还是想自己写一篇, 给刚刚接触git的同学。

17年初用git时,用的是SourceTree(Git 客户端工具),这款git神器让不太懂git的我能够迅速上手,
当时不管三七二十五,一顿操作猛如虎,刷刷几下搞定了add,commit,push,pull,checkout,merge等常用的git操作,
但是为了追求装逼的我当然是不满足于工具啦,命令行才是我想要的。

正文

1 初次安装git时

  • git config --global user.name "chenyun" 设置Git的userName
  • git config --global user.email "chenyun@gmail.com" 设置Git的email
  • ssh-keygen -t rsa -C "chenyun@gmail.com" 生成SSH密钥

2 新建一个远程仓库
在github或是码云上新建一个git仓库,也就是我们所说的远程仓库.
点击New repository,仓库暂且命名为test
新建完成后点击clone or download, 选择ssh模式得到: git@github.com:frcy9/test.git

3 本地新建一个文件夹
右键鼠标选择Git Bash here,命令行窗口出现时输入:

  git clone git@github.com:frcy9/test.git

输入ls命令会发现出现了 test/ 文件夹
cd test 后就进入本地test仓库,此时你会发现右侧有一个master的标识
是因为git clone git@github.com:frcy9/test.git 默认拉的是远程master
分支。

4 本地分支创建文件并推送至远程分支

  • 命令行窗口输入touch a.text,生成一个a.text文件
  • 输入git status 查看本地分支的变更,会发现一个红色样式的a.text,表明本地分支已发生变更
  • 输入git pull origin master 拉取远程master分支的变更,同步本地master分支与远程master分支的一致性,注:

git add 之前先pull,因为实际工作中是多人协同开发,需要先拉取他人提交的代码。

  • 输入git add .git add a.text 提交到暂存区,add .表示所有文件提交暂存区, add a.text

表示提交a.text于暂存区,因为只有一个文件变更,所以两条命令的作用是一样的。

  • 输入git commit -m 'your message' 提交add暂存区的改动,如:git commit -m '新增a.text'
  • 输入git push origin master 向远程master分支推送本地提交的变更,也就是同步远程分支与本地分支的一致性。

5 本地新建一个dev分支,并推送至远程仓库
实际工作中,至少会有一个开发分支,和一个生产分支,生产分支作用于真实的线上环境,开发分支为日常开发测试分支,
在此我先令master分支为生产分支,dev分支为开发分支。

  • 输入git checkout -b dev 在本地master分支的基础上新建一个本地dev分支,此时本地dev分支和本地master分支内容是一致的。
  • 输入touch b.text,当前dev分支生成一个b.text文件
  • 依次输入git add b.textgit commit -m 'dev分支新增b.text文件'git push origin dev 等待push完成

后刷新github,会发现线上已经出现了一个dev分支,这个dev分支就是由本地推送上去的,本地输入git branch -r也能查看远程分支。

6 本地master分支合并本地dev分支

  • 输入git checkout master,本地dev分支切换至本地master分支
  • 因为本地dev分支较本地master分支多了一个b.text文件,如果我们想把dev分支的变更同步在master分支上,则需要用到合并分支:

输入git merge dev, 载入过程中键盘依次Ctrl + c && :wq && 回车键,完成合并后ll查看本地master分支的确多了一个b.text文件,此时合并已完成。

  • 输入git push origin master 推送至远程master分支上。此时远程master分支也有了b.text文件。

7 本地master分支合并远程dev分支
很多时候我们的目的不是由本地分支合本地分支再推送至远程分支,更多的是想远程分支合并到本地分支再行推送

  • 依次输入 git checkout devgit touch c.text,git add c.text && git commit -m '本地dev新建c.text文件' && git push origin dev
  • 此时我们刷新浏览器, 远程dev分支出现了c.text文件, 输入git checkout master,切换至本地master分支
  • 输入git merge origin/dev, 载入过程中键盘依次Ctrl + c && :wq && 回车键,完成合并后ll查看本地master分支多了一个c.text文件,此时远程dev合并至本地master已完成。
  • 输入git push origin master 推送至远程master分支上。
  • 自己比较一下本地合本地git merge dev 与 远程合本地 git merge origin/dev的命令区别, 自行感受哈。

8 一些tips

  • 如果发现clone && push 报错可能是因为github上你没有设置本地的公钥,查看C:\Users\chenyun\.ssh路径,记事本打开复制id_rsa.pub里的文本至github Deploy keys
  • git branch -d <BranchName> 删除本地xx分支
  • git push origin --delete <BranchName> 删除远程xx分支
  • git reset HEAD 撤销上一次add暂存的所有文件
  • git reset HEAD fileName 撤销上一次add暂存的某个文件
  • ...

结尾

命令行虽然蛮酷的,但是也不是叫大家不用工具哦,工具是解放生产力的,根据自己的需要选择适合自己的。对于我个人使用命令行,
只是因为每敲一行命令都知道自己在干什么。

更多js/php/摄影文章, 欢迎关注公众号: 轻罗
chenyun


愿作轻罗
12 声望1 粉丝

下一篇 »
Laravel初探