Git系列之新手入门
工欲善其事,必先利其器。git一个不可或缺的利器,其魅力值得我们慢慢品尝!
安装
官网下载最新版本安装,然后查看是否安装成功
1 | $ git -v |
全局个人信息配置
1 | $ git config --global user.name "username" |
windows环境也可以打开计算机用户文件夹下的.gitconfig编辑
1 | [user] |
基本命令
初始化本地仓库
1 | $ cd storage |
第一次提交(提交到本地)
1 | $ git add README.md |
查看状态
查看当前文件处于何种状态
1 | $ git status |
回退
当你add
或commit
了错误的文件时,可以使用以下命令来撤回add
或者commit
;
那么你必须首先明白工作区和暂存区是什么?
直白的说.git文件夹所在的目录(即git init
初始化的目录)为当前工作区
当add
之后,add
的文件就会进入暂存区
当commit
之后,暂存区就会清空,commit
的文件就会进入本地当前的分支(如master分支)
PS:关于工作区和暂存区更详细的解释可以去看廖雪峰工作区和暂存区
丢弃工区的修改
命令git checkout -- filename
可以把filename
文件在工作区的修改全部撤销
1 | $ git checkout -- README.md |
撤销暂存区的修改
命令git reset HEAD filename
可以把filename
文件在暂存区的修改全部撤销
1 | $ git reset HEAD README.md |
当然reset
命令,不仅能够撤销暂存区的内容,还能回退版本,即使你错误提交,也可以用reset
回滚到之前的版本
如果你提交了错误文件,可以使用以下命令来回退;
1 | $ git reset --hard HEAD^ |
git reset --hard HEAD^
表示回退到上一个版本,HEAD
后面的参数可以跟commit ID
,这个ID可以通过以下命令获得
1 | $ git log |
commit 97c8460bc1cda8233866686d9cae270e0e0113f1
,这一长串就是我们所需的ID,一般情况下,只需要前7位就够了。
1 | $ git reset --hard HEAD 2d93622 //回退到commit 2d936223341333384dd41533dd44ba8e0640493c |
提交到服务器
当commit
后,你做出的修改只是提交到了暂存区,下一步就需要把代码提交到服务器。这里的服务器,可以自己搭建,也可以是公司的,或者第三方的。这里我们将代码提交到github
上(假设你是已经有一个github
账户,并创建了一个仓库)。
本地生成SSH KEY
SSH KEY
就是连通本地与github
的桥梁,钥匙,使用以下命令来生成:
1 | $ ssh-keygen -t rsa -C "youremail@example.com" |
然后回车:
- 提示设置密码
- 如果不设置,直接按回车,然后会提示你确认密码,再按一次回车
- 如果设置密码,输入你想设置的密码,并确认,这样以后每次提交需要输入密码
- 提示生成key的文件名
- 如果不修改,则使用默认文件名
id_rsa
- 如果你有在该电脑管理多个key或者已经有生成的key占用了该文件名,则需要重命令
- 如果不修改,则使用默认文件名
这里简单起见,先不设置密码,并保持文件名默认
然后在用户主目录(例如如果是windows系统一般就在:C:\Users\Administrator)找到.ssh
,其中id_rsa
表示私钥不能泄露和id_rsa.pub
表示公钥,用于对外。
github设置本地公钥
打开id_rsa.pub
,复制里面的全部内容;
进入github
账户;
找到 setting
;
打开SSH KEYS
新建一个SSH KEY
,名字随便取,然后粘贴id_rsa.pub
的内容,保存;
测试是否连通
理论上讲,上一步操作无特殊错误,就已经和github
连通的,为了放心,我们可以测试一下
1 | $ ssh -T git@github.com |
上面就是成功的提示
github仓库和本地仓库关联
有两种方式把本地仓库和github
仓库关联起来
方法一:clone自己的仓库,简单,并且本地文件目录和github上名字一样
登陆账号,新建仓库(new repository);
进入仓库主页,找到按钮clone or download
按钮,复制里面的git@github.com:userName/repositoryName.git
;
打开git bash
,clone;
1 | $ git clone git@github.com:userName/repositoryName.git |
就会把这个项目克隆到你当前目录下。此时你就可以顺畅的像github
推送你的东西了。
方法二:利用命令关联仓库,本地仓库名可以和github
的仓库名不一样
假设你github上有一个项目,git@github.com:userName/repositoryName.git
1 | $ mkdir testRepository //新建目录testRepository |
提交(push)
第一次提交
1 | $ git push -u origin master |
第二次及以后
1 | $ git push origin master |
第一次提交带参数-u
是为了让你本地和github
的仓库保持同步。
更新代码(pull)
当我们在一台设备上对github
提交(push)代码之后,在另外的设备上修改这个项目时就必须先从github
更新代码,以保持代码的同步
1 | $ git pull |
总结
至此一个比较完整的流程走通了,当然在这些过程中也许还会遇到其它的问题,如,代码冲突,分支,分支合并等等。
github
上创建一个新的项目github repositoryName
:testGitgithub userName
:2ue
1 | $ makdir testGit //创建一个空文件夹testGit(名字任意取),做仓库 |