Git与GitHub
1、Git的起源地
1. “保守主义罗马教皇”莱巴斯·托雷尼
Linux
Git
2. Git是甚么?
Git是现阶段当今世界上最一流的分布式系统管理工具 (没众所周知)。
2、Git的采用
1. Git的加装
Windows版的Git,从https://git-scm.com/download/win浏览接着按预设快捷键加装方可。
加装顺利完成后,滑鼠关上EditGrid找出“Git”->“Git Bash”,冒出来两个类似于命令行询问处的小东西,就表明Git加装获得成功!
加装顺利完成后,还须要最终一步棋增设,在实用性文件输出:
n git config –global user.name “Your Name”
n git config –global user.email “
[email protected]”
附注:以内三步的英文名字和电子邮箱可随便实用性,但最合适采用他们的电子邮箱。
n git config user.name 用作查阅实用性的联系电话
n git config user.email 用作查阅实用性的电子邮箱
n 即使Git是分布式系统管理工具系统,因此每一电脑都要自报家门:你的英文名字和Email门牌号。
2. Linux的命令
mkdir xxx 新建文件夹
vi x.txt 新建文件(Visual editor)
输出 i 进入编辑模式
ESC + :+ wq 保存并退出
ESC + :+ q! 不保存并退出
cd xxx 进入xxx目录
cd .. 返回上一级目录
ls 列出当前文件夹中所有文件
pwd 显示当前目录
cat x.txt 显示文件内容
clear 清屏
3. 工作区+版区+暂存区
工作区(working Directory):简单的理解——你在电脑里能看到的目录。
暂存区(stage):介于工作区和版区中间,工作区到版区的“必经之路”
版库(Repository):工作区有两个隐藏目录.git,准确的来说这个不算工作区,而是Git的版库。
n 第一步棋:git add把文件添加进暂存区。
n 第二步:git commit把暂存区的所有内容提交到当前版库。
4. 创建版库
1) git init命令:初始化版库
创建获得成功会提示:Initialized empty Git repository in c:/Users/xxx/Desktop/demogit/.git/
目录上多出两个.git的文件夹,这个文件夹是Git来跟踪管理版库的,不要去修改和删除这个文件里的内容。
2) git add x.xx命令:添加指定文件到暂存区中
没任何提示,代表交获得成功了
若未初始化,会提示fatal: Not a git repository (or any of the parent directories): .git
失败会提示fatal: pathspec x.txt did not match any files
可能会出现警告:warning: LF will be replaced by CRLF in xxxxx
原因: linux和window的换行符不一致导致的。
解决方式:执行命令git config –global core.autocrlf false
3) 怎么查阅文件有没添加获得成功呢?
git status
1. 红色表示在工作区。
2. 绿色表示在暂存区。
3. 没任何显示代表所有文件位于版区。
4) git commit -m xxx 提交暂存区所有文件到版区
提交获得成功会提示:
[master (root-commit) 88bbb64]
first commit1 file
changed,
2 insertions(+)create mode 100644 x.txt如果只输出git commit会出问题,这时须要ESC + :+ q! 退出就好
5. 差异对比(了解)
git diff : 比较暂存区与工作区
git diff –cached : 比较版区与暂存区
git diff master : 比较版区与工作区
6. 日志+版号
git log 显示从最近到最远的所有提交日志
git reflog 显示每次提交(commit)的commit id
7. 版回退+版穿梭+版撤销
git reset –hard HEAD^ 版回退(回退一次提交)
git reset –hard Obfafd 回退到指定Obfafd的commit id版
git reset HEAD 用版库中的文件去替换暂存区的全部文件。
git checkout — x.txt 用暂存区指定文件去替换工作区的指定文件(危险)
git checkout HEAD x.txt 用版库中的文件替换暂存区和工作区的文件(危险)
git rm –cached x.txt 从暂存区删除文件
8. 删除文件
git rm x.txt 删除文件
git rm -r xxxx 删除文件夹
git完整图示如下:
9. 分支
git checkout -b dev 创建dev分支,并切换到dev分支
git branch 查阅当前分支
git checkout master 切换分支
git merge dev 合并dev分支到当前分支
git branch -d dev 删除指定分支
git diff branch1 branch2 显示出两个分支之间所有有差异的文件的详细差异
git diff branch1 branch2 –stat 显示出两个分支之间所有有差异的文件列表
git diff branch1 branch2 xxx 显示指定文件的详细差异
10. 版冲突
合并分支时,如果在同两个文件,在同两个地方,都修改了或新增内容会引起版冲突。
解决版冲突最合适的办法是借助IDE解决,简单且高效。
第3章:管理工具系统的区别
1. 集中式管理工具系统
代表有SVN、CVS
集中式管理工具系统,版库是集中存放在中央服务器的,每一开发人员电脑里只有其中两个版。
2. 分布式系统管理工具系统
代表有Git、BitKeeper
每一开发人员电脑里都有两个完整的版库。同时,它也须要一台充当“中央服务器”的电脑,来方便“交换”大家的代码修改。
3. 集中式与分布式系统的区别
类别
项目集中式管理工具系统分布式系统管理工具系统主要区别每一开发者只有应用代码库的两个版。每一开发者都有整个代码库的所有版。在离线状态下开发者无法进行版管理开发。在离线状态下开发者可以进行版管理开发, 等到有网时再push到仓库中。4、GitHub
1. GitHub是甚么?
GitHub是两个Git项目托管网站。
2. GitHub能做甚么?
能够分享你的代码或者其他开发人员配合一起开发。
GitHub是两个基于Git的代码托管平台,Git并不像SVN那样有两个中心服务器。现阶段我们采用到的Git命令都是在本地执行,你就须要将数据放到一台其他开发人员能够连接的服务器上。
3. GitHub远程仓库的采用
3.1. 场景一(关联):本地有仓库,要和远程仓库做关联
git init
git add .
git commit -m “first commit”
在GitHub上创建两个远程仓库
git remote add origin https://github.com/xpromise/oa.git (HTTPS)
附注:如果此步关联错了,解决办法如下。
暴力解决:删除.git文件夹,重新建立本地仓库。
优雅解决:git remote remove origin,再在重新关联仓库。
3.2. 场景二(推送):本地有仓库有内容,要推送给远程库
git push -u origin master (首次加-u)
根据提示输出用户名密码
我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地master分支和远程的master分支关联起来,在以后的推送时可以简化命令git push origin master。
附注:正常情况下,获得成功推送一次后,电脑会记住和账号与密码,下次推送时不会再提示输出。若在电脑不能够自动记住github的账户和密码,需执行以下命令解决:git config –global credential.helper store
3.2. 场景三(拉取)
第一种拉取方式:git pull origin master
将远程仓库的master分支上代码版复制/合并到本地master分支上
第二种拉取方式:git fetch origin master:tmp
新建两个tmp分支,将远程仓库的master分支上代码版复制到tmp分支上,不会自动合并。
3.2. 场景四
4. 采用SSH方式与github交互
1) 输出cd ~/.ssh,由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,因此我们须要实用性验证信息。
No such file or directory 表示第一次
2) 创建SSH Key:ssh-keygen -t rsa -C “
[email protected]”
它会在~/下生成.ssh文件夹,进去打开id_rsa.pub文件复制里面全部的内容 将其复制到你的GitHub里的SSH keys中
3) 采用
5. GitHub其他功能
6.1. Fork
将别人的项目clone一份,但是owner变成他们,这样你就可以在遵守open source license的前提下任意修改这个项目了。
相当于你在原项目的主分支上又建立了两个分支,你可以在该分支上任意修改如果想将你得修改合并到元项目中式,可以pull request,这样原项目的作者就可以将你修改的小东西合并到原项目的主分支上去,这样你就为开源项目贡献了代码,开源项目就会在大家的努力下不断地壮大和完善。
6.2. GitHub Pages
1) 推送本地代码到GitHub仓库
创建本地仓库
git init
git add .
git commit -m “xxx”
创建GitHub远程仓库
本地仓库关联远程仓库
git remote add origin
[email protected]:xpromise/jd.git
推送本地更新
git push -u origin master
2) 实用性GitHub Pages快捷键
3) 须要注意的问题
目录第一层须要有两个index.html文件作为启动文件,命名不可更改。
总结:
常用命令:
– mkdir XX:创建两个空目录 XX指目录名
– pwd:显示当前目录的路径
– cat xx:查阅xx文件内容
– <font color=red>git init:把当前的目录变成可以管理的git仓库,生成隐藏的.git文件夹</font>
– <font color=red>git add xx:把xx文件添加到暂存区</font>
– <font color=red>git commit -m “xx”:提交文件 -m后面的是注释,要写!</font>
– git status:查阅仓库状态
– git log:查阅历史记录
– git reset –hard HEAD^:往上回退两个版
– git reflog:查阅历史记录的版号id
– git checkout — xx:把xx文件在工作区的修改全部撤销
– git rm xx:删除xx文件
– <font color=red>git remote add origin https://github.com/xxxxx/a.git 关联两个远程库</font>
– <font color=red>git push -u(第一次尽量加上-u,以后不用)origin master:把当前master分支推送到远程库</font>
– <font color=red>git clone https://github.com/xxxxx 从远程库中克隆</font>
– <font color=red>git checkout -b dev:创建dev分支 并切换到dev分支上</font>
– <font color=red>git branch:查阅当前所有的分支</font>
– <font color=red>git checkout master:切换回master分支</font>
– <font color=red>git merge dev:在当前分支合并dev分支</font>
– git branch -d dev:删除dev分支
– <font color=red>git branch xxx:创建分支xxx</font>
– git remote:查阅远程库信息
– git remote -v查阅远程库的详细信息
– <font color=red>git pull origin master 将远程库的更新拉取到本地并自动合并</font>
– <font color=red>git push origin master:git会把master分支推送到远程库对应的分支上</font>