引言
距离这篇文章已经快两年没动笔了,想想还是得总结点什么,不枉曾经走过的年月。
写篇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.text
,git 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 dev
,git 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
里的文本至githubDeploy keys
上 -
git branch -d <BranchName>
删除本地xx分支 -
git push origin --delete <BranchName>
删除远程xx分支 -
git reset HEAD
撤销上一次add暂存的所有文件 -
git reset HEAD fileName
撤销上一次add暂存的某个文件 - ...
结尾
命令行虽然蛮酷的,但是也不是叫大家不用工具哦,工具是解放生产力的,根据自己的需要选择适合自己的。对于我个人使用命令行,
只是因为每敲一行命令都知道自己在干什么。
更多js/php/摄影文章, 欢迎关注公众号: 轻罗
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。