git是一款免费/开源的分布式版本控制系统.
github是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管.
git的工作原理图:
workspace:工作区
index/staged:暂存区
repository:本地仓库
remote:远程仓库
workspace首先是add到index上,让后commit到repository,再push到remote.
git的运行逻辑:3步>>>>>>>>>
1.创建git仓库.
创建仓库分为2步:
<1>本地是没有库的,从服务器pull库到本地来.
<2>本地有库,上传库到服务器中.
2.提交本地代码
<1>git add . 是添加所有当前目录的所有文件
<2>git commit -m "这里是添加注释" :和服务器的代码合并
3.拉取远程代码 git pull >>>合并有冲突的代码(conflict:merger,修改了服务器原来的代码替换成你的代码,这些代码有冲突,是选择你的还是选择原来的,有冲突的时候,会自动修改你写的代码,并保留服务器原来的代码,如果你是要修改服务器的,只要删除自动添加的,再进行2<2>执行下一步步骤就行)>>>提交代码 git push
两种方式clone服务器上的代码库:
1)https方式,通过填写账号和密码就可以clone代码库
cmd例子: git clone https://xxx.xxx
2)ssh公钥和私钥方式,先在本地制作公钥和私钥.
cmd例:ssh-keygen -t rsa或者是ssh-key -t rsa -C "可以填任何东西文字一般写邮箱,这段文字就在公钥私钥中文本的最后面"
>>>解释:ssh-keygen -t rsa是直接制作公钥和私钥 -t是填写加密的标准rsa 按下三层Enter的键可以看见公钥和私钥放在哪里了.(一般在C:\Users\Administrator\.ssh的文件夹中公钥.pub后缀)
然后在服务器中生成公钥,生成之后,在本地cmd中:git clone git@gitxx.x网址x.git就搞定clone代码库了
分支的作用:你的项目进行中遇到了一个问题,解决方案不确定,但是你不希望因此影响到当前的开发,那么你可以为此创建分支,然后在分支上测试你的方案,如果可行那么可以通过合并分支功能将你的更新应用到主干,反之你可以放弃它。
git常用命令
git status -s: 查询repo的状态,-s表示short,输出标记有两列,第一列是对staging区域,第二列是working目录
git log >>显示每条分支的合并历史
--oneline --graph:可以图形化表示分支合并历史
--author=[author name]指定作者提交历史
git add . :帝国添加当前工作目录中的所有文件
git commit:提交已经被add进来的改动
git的分支操作命令:
git branch -b name:创建分支
git branch:查看当前目录的分支
git branch -d name:删除分支
git push origin:name 删除远程分支
git checkout name:切换分支
git checkout --file撤销修改
git rm file :删除文件
git log --graph :分支情况图
git新建本地分支与远程分支关联问题>>>>>>>>>>
1)git在本地新建分支,push到远程服务器上之后,再次pull下来的时候,如果不做出来会报提示要求要up-to-data
所以,git本地新建一个分支后,必须要做远程分支关联.
例子>>
本地新建分支:git branch -b new_branch
将本地分支和远程服务器关联:git branch --set-upstream-to=origin/master new_branch(将本地新建的分支new_branch分到服务器的origin/master的分支下)
跟踪远程的分支
git branch --set-upstream-to=origin/分支名 分支名