引言
距离这篇文章已经快两年没动笔了,想想还是得总结点什么,不枉曾经走过的年月。
写篇git,虽然网上有很多教程,但是还是想自己写一篇, 给刚刚接触git的同学。
17年初用git时,用的是SourceTree(Git 客户端工具),这款git神器让不太懂git的我能够迅速上手, 当时不管三七二十五,一顿操作猛如虎,刷刷几下搞定了add,commit,push,pull,checkout,merge等常用的git操作, 但是为了追求装逼的我当然是不满足于工具啦,命令行才是我想要的。
正文
1 初次安装git时
git config --global user.name "chenyun"设置Git的userNamegit config --global user.email "chenyun@gmail.com"设置Git的emailssh-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暂存的某个文件- ...
结尾
命令行虽然蛮酷的,但是也不是叫大家不用工具哦,工具是解放生产力的,根据自己的需要选择适合自己的。对于我个人使用命令行, 只是因为每敲一行命令都知道自己在干什么。
更多web全栈技术文章/摄影 欢迎关注公众号: 轻罗
