一、Git登录篇
登陆github必须先创建SSH key
因为本地Git仓库和GitHub仓库之间的传输是通过SSH加密传输的,GitHub需要识别是否是你推送,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送,所以需要配置ssh key。
1.创建SSH Key。
在用户主目录(C:\Users\Administrator)下,看看有没有.ssh文件,如果有,再看文件下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接到下一步。如果没有,打开Git Bash,输入命令,创建SSH Key
$ ssh-keygen -t rsa -C "你自己注册GitHub的邮箱"
2.接下来
到GitHub上,打开“Account settings”–“SSH Keys”页面,然后点击“Add SSH Key”,填上Title(随意写),在Key文本框里粘贴 id_rsa.pub文件里的全部内容。
id_rsa.pub 默认在C:\Users\Administrator\.ssh
每台想要登陆某个github账号的主机都需要有一个对应的key,例如你有一个github账号,你在你的笔记本和台式上都要创建key
3.git bash里输入下面的命令登陆
$ ssh -T git@github.com
如果看到 hi + 你的用户名说明密钥验证通过了,你已经可以上传下载了
4.设置username和email,因为github每次commit都会记录他们
git commit 命令会记录提交者的信息,所以使用git前必须先添加两条信息
$ git config --global user.name "你的GitHub登陆名"
$ git config --global user.email "你的GitHub注册邮箱"
(其实可以不和github上面的用户名邮箱一致,只是为了避免混淆)
5.接下来就是把本地仓库传到github上去
$ git remote add origin git@github.com:userName/yourProject.git
//关联一个远程库命令,git@后面填写你的github repository(仓库),在github里面创建仓库后有http和ssh的链接,origin是你给这个仓库起的名字,可以自定义,下面命令中的origin也要相应改变
git push -u origin master //把本地已经commit 的结果push到github的origin 仓库的master分支中
6.Git添加多账号
我们可能会需要在一台电脑上以不同的github账户去使用git,这时就需要去解决如何管理本机上的多个ssh key的问题了。
(1).生成新ssh key
如果我们电脑上已经存在了一个ssh key,那么我们需要在我们电脑上生成第二个你想在本电脑上使用的id_rsa,使用命令:ssh-keygen -t rsa -C "你的github注册邮箱"
。
下图红色标注部分会提示你把新生成的id_rsa存放到哪里,此处默认会存放在c盘的用户名下的.ssh文件夹下(即你第一个github用户ssh key存放的目录),因此我们需要输入路径/c/Users/DodoMonster/.ssh(注意此路径是你的系统盘下用户目录安放ssh密钥的目录,请使用自己电脑上相对应的目录),最后我以“id_rsa_me”重新命名了ssh key防止默认与已有的ssh key重复。
在输入了路径后,会提示你输入提交项目时输入的密码,不输则表示不用密码,这是为了防止别人随便在你的项目上push东西,所以最好还是输入一下你的密码。回车,再重复输入确认回车即可。
(2).添加新ssh key
默认SSH只会读取id_rsa,所以为了让SSH识别新的私钥,需要将其添加到SSH agent
使用命令:ssh-add ~/.ssh/id_rsa_me
如果报错:Could not open a connection to your authentication agent.无法连接到ssh agent
可执行ssh-agent bash
命令后再执行ssh-add
命
然后将公钥添加到git账号中 https://github.com/settings/keys
(3).配置config文件
查看.ssh文件中是否存在config文件
如果已存在则直接编辑config文件,命令:vim config
#这是linux的命令,进入了vim界面后按a或i或A或I
进入编辑模式,编辑完成后按esc键输入:wq
保存文件退出
如果不存在则需要创建config文件,命令:touch config
,再对config文件进行编辑
对config文件进行配置填写:
#Default 第一个账号(123456@xxxx.com)
Host default
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_me
#second 第二个账号(38894403@xxxx.com)
Host zc
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
其中Host 后的名字可以随意方便自己记忆,但HostName必须为github.com(或者其它git地址)。
(4).测试是否配置成功
使用命令:
ssh -T git@zc
出现如图的欢迎语则为配置成功。
注意:配置完成后,在连接Host不是github.com的github仓库时,远程库的地址要对应地做一些修改:
而并非原来的git@github.com:38894403/react.git
这样每次连接都会使用id_rsa_me与服务器进行连接。
配置至此,大功告成!
(5).关键点
二、Git命令篇
1.Git:clone、update命令
1.把大神的代码clone到本地,或者clone自己github上的代码,使用指令:
git clone https://github.com/anran-world/Anranawsl.git
Or
git clone -b <指定分支名> <远程仓库地址>
2.在本地随便建个文件夹,地址栏输入cmd打开,然后输入上面指令
2.Git查看状态命令
1.查看当前的git仓库状态,可以使用git status
git status
2.如果是在刚才新建的文件夹输入git status会出现下图所示,git目录不对
3.先用cd 命令切换到yoyoketang这个repository目录
4.再输入git status可以看到On branch master,这个说明已经在master分支上了
3.Git更新文件命令
1.在yoyoketang文件夹下更新东西,比如我上传2个资料文件
2.更新后使用git add * (*是更新全部,包括.gitignore里面忽略的所有)
git add *
3.接着输入git commit -m “更新说明“,commit只是提交到缓存区域
git commit -m "更新说明"
4.如果是多人同时开发维护代码,得先git pull ,拉取当前分支最新代码
git pull
5.最后git push origin master,最后一步才是push到远程的master分支上
(最好不要上传太大文件,要不然太慢了)
6.打开github界面就能看到同步了
4.Git分支命令
1. Git创建分支命令
git branch anran
2. Git切换分支命令
git checkout anran
3. Git创建并切换分支命令
想要新建一个分支并同时切换到那个分支上,你可以运行一个带有 -b
参数的 git checkout
命令:
git checkout -b anran
//Switched to a new branch "anran"
// 即两条命令的简写
git branch anran
git checkout anran
4. 将anran分支推送到远程
git push origin anran:anran
git push origin anran(名称不变时的简写)
5. 建立本地至上游(远程)分支的链接,这样代码才能提交到远程
git branch --set-upstream-to=orgin/develop
6.取消对develop分支的跟踪
(需要取消跟踪时才操作)
git branch --unset-upstream develop
7.合并B分支到A分支
git checkout A //切换到A分支(都是最新版本的)
git merge B //合并B分支
5.Git常用配置命令
1.npm使用淘宝镜像源
(能加快npm下载速度)
npm config set registry https://registry.npm.taobao.org
2.node-sass使用淘宝镜像
(能解决node-sass安装失败问题)
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
3.npm恢复官方镜像源
(发布npm包时必须切换回官方镜像源)
npm config set registry https://registry.npmjs.org
4.git 配置全局用户名、邮箱
(用于git工具记录代码修改的作者信息)
git config --global user.name Anran
git config --global user.email Anran@qq.com
5.git 配置ssh
ssh-keygen -t rsa
6.git 配置全局字符集编码
(防止中文commit信息乱码)
git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8
7.git 配置全局不自动转换换行符
(解决windows和max系统的默认换行符不一致问题)
git config --global core.autocrlf false
8.git 设置能检测文件名大小写
(在需要配置的项目根目录下运行该命令)
git config core.ignorecase false
三、Git解惑区
1.git add .和git add *有什么区别
今天同事问我,git add . 和 git add * 有什么区别,只记得它们都是上传所有文件,但具体区别忘记了,因为自己一直都是用git add . 的,所以记录下,以备以后查阅。
2.git pull和git fetch哪个好
git pull 接近于 git fetch + git merge
git fetch:只把远程仓库新的变动同步到本地,本地的当前分支不发生改变,后期需要融合远程的相同分支
git pull:更新远程数据并融合
也不是很懂,此处mark下
3.error setting certificate verify locations: CAfile: F:/gitt/Git/mingw64/ssl/certs/ca-bundle.crt
将路径改成的git新的路径即可,原因是:安装多个git或者备份到另一个电脑时,git的盘符发生改变
git config --system http.sslcainfo "D:\git\Git\mingw64\ssl\certs\ca-bundle.crt