一、创建远程仓库
登录github,创建一个仓库
地址为:git@github.com:yangphp/gitTest.git
二、生成SSH Key
1、生成SSH key
由于你的本地 Git 仓库和 GitHub 仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息:
使用以下命令生成 SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
your_email@youremail.com 改为你在 Github 上注册的邮箱
之后会要求确认路径和输入密码,我们这使用默认的一路回车就行
成功的话会在 ~/ 下生成 .ssh 文件夹,进去,打开 id_rsa.pub,复制里面的 key
2、添加SSH key
a、复制 id_rsa.pub里面的内容
b、打开github 点击右上角的头像 然后点击Settings
c、左边点击SSH and GPG keys 然后点击 New SSH key 按钮,
title 设置标题,可以随便填,粘贴在你电脑上生成的 key
点击 add ssh key 添加
3、测试是否添加成功
a、在git bash中输入
ssh -T git@github.com
b、如果出现
Hi xxxxxx! You've successfully authenticated, but GitHub does not provide shell access.
则表示连接成功了
三、关联远程仓库
本地关联远程仓库
git remote add origin git@github.com:yangphp/gitTest.git
git remote -v #查看远程库
首先运行拉取命令
git pull --rebase origin master
首次本地库的所有内容推送到远程库上
git push -u origin master
加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来
本地库的所有内容推送到远程库上
git push origin master
删除远程仓库
git remote -v #查看远程库
git remote rm origin #删除远程库和本地库的连接
注:只是删除关联,并没有删除远程仓库
四、clone远程仓库
1、git clone 和 git pull 的区别
clone是将一个库复制到你的本地,是一个本地从无到有的过程。
pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库。
git clone是远程操作的第一步,通常是从远程主机克隆一个版本库。
git pull 作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。
2、使用场景:
本地修改代码后,每次从本地仓库push到远程仓库之前都要先进行git pull操作,保证push到远程仓库时没有版本冲突。
3、git clone
git clone git@github.com:yangphp/gitTest.git
需要注意GitHub给出的地址不止一个,还可以用https://github.com/ 这样的地址
实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。
使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,
但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https
五、分支管理
创建并切换分支
git checkout -b devuser01 #命令加上-b参数表示创建并切换
创建分支
git branch devuser01
切换分支
git checkout devuser01
查看分支
git branch
合并分支
git checkout master #切换回master
git merge devuser01 #将devuser01分支内容合并过来
git merge --no-ff -m "merge with no-ff" devuser01
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
合并后没问题就可以删除分支
git branch -d devuser01
推送分支内容到远程仓库
git push origin master #推送主分支
git push origin devuser01 #推送分支devuser01
删除远程分支
git branch -a #查看所有分支
git checkout master #将分支切换到master上面
git push origin --delete devuser01 #删除远程分支devuser01
分支应用场景:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的。
到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
六、冲突解决
手动修改内容后,重新提交即可
1、先创建分支 devuser01
git checkout -b devuser01
2、修改分支上面 git011的内容并提交
git add git011_conflict.txt
git commit -m 'change git011 content'
3、切换分支并修改git011内容
git checkout master
git add git011_conflict.txt
git commit -m 'test solve conflict'
4、合并解决冲突
git merge devuser01 #可以看到提示git011_conflict.txt 冲突了
修改 git011_conflict.txt 并解决冲突后
git add git011_conflict.txt
git commit -m 'solve conflict'
5、查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit
6、删除子分支 devuser01
git branch -d devuser01