前置条件:
什么是版本控制?
文件的每一次修改可以认为是一个版本,而记录和保留文件的每一个版本的思想就是版本控制。
什么是版本控制工具?
实现版本控制思想的工具。
简述:
什么是Git?
分布式版本控制工具。简单、高效。
为什么使用Git?和同类型的版本控制工具相比有什么优势?Git的原理是什么?
同类型的软件如SVN是集中式版本控制工具,本地只保存最新版本的文件内容,一旦中央服务器发生故障那么将影响所有开发者的使用。
因此Git诞生了。分布式版本控制工具使本地的每台电脑上不仅仅保存最新的文件内容还包括所有的历史记录,每一台电脑上保存的文件
内容都和服务器上的一致,因此每一台电脑都可以作为一个单独的版本控制服务器来使用。这样就不担心中央服务器发生故障,也不用
考虑中央服务器的带宽了。
什么时候使用Git?
在开发过程中任何文件都可以使用git来控制。涉及到文件修改时都可以使用Git。
官网介绍:
https://git-scm.com/book/zh/v2
基础使用?
Git文件的状态:未跟踪、未修改、已修改、已暂存、已提交。
Git区域: 工作目录、暂存区、Git库
初始化
git init
git clone url name
git config
git help config
git config --global --list
git config --global user.name "zhangsan"
git config --global user.email 123123@qq.com
基本操作
git add 该命令可以开始跟踪文件(新增文件),把已跟踪的文件放入暂存区,把有冲突的文件标记为已解决。简单的说就是把文件放入暂存区使它下一次可以提交。
git rm
git rm --force [file] 强制删除,如果修改之后的文件已经提交到暂存区但是还没有提交到Git库,那么只能以这种方式进行删除。删除之后不可恢复。
git rm --cached [file] 删除Git库之中的文件但是保留本地目录中的该文件。
git status
git status -s (A/??/M / M) 左M表示对已经在暂存区的文件进行了修改,右M表示对未在暂存区(就是新增的文件提交到跟踪之后又进行了修改)的文件进行了修改。
.gitignore
git diff 比较暂存区的文件和工作目录中已经修改的文件内容。暂存区文件1 和 暂存区文件1修改之后但并没有再一次提交到暂存区 两者之间的不同。
git diff --staged 查看暂存区中下一次将要提交到Git仓库的文件内容。也就是说 git diff 命令展示出来的文件只有执行完 git add 命令之后才能出现在 git diff --staged 里。
git commit 默认在提交之前调用git status
git commit -m "说明";
git commit -v 默认在提交之前调用 git diff --staged
git commit -a 跳过暂存区直接将已跟踪的文件提交,注意是已跟踪的文件。新增的文件不适用。
标签: 轻量标签、附注标签(含有标签详细信息,建议)
git tag
git tag -a v1.0 -m "测试创建标签"
git show [tag] : 展示标签信息。
git mv oldName newName
git log
-p :展示每次提交不同。
-数字 : 展示最近几条提交日志。
--stat :
--pretty :
git checkout -- fileName : 还原
分支
git branch
git branch [branch] : 创建 branch 分支
git checkout [branch] : 切换到 branch 分支
git checkout -b [branch] : 等于 git branch [branch] 和 git checkout [branch]
git merge [branch] : 把branch分支融入到当前分支中
git branch -d [branch] : 删除branch分支
本地初始化库上传到github
git init
git config --global user.name "guofengzhi"
git config --global user.email 820209825@qq.com
git remote add test https://github.com/guofengzhi/test.git
...
git add *
git commit -v -m "首次提交"
git push test master
直接从github下载到本地
git clone https://github.com/guofengzhi/test.git test
git fetch [remote] [branch] : 从某一服务器的某一个分支抓取到 FETCH_HEAD 中。
git push [remote] [branch] :推送到某一服务器的某一个分支上。
git pull = git fetch + git merge
解决冲突:
方式一:
编写代码
git add
git commit -m ""
git pull test master
手动解决冲突
git add
git commit
git push test master
方式二:
编写代码
git add
git commit -m ""
git fetch test master
git merge FETCH_HEAD
手动解决冲突
git add
git commit
git push test master
ssh访问
ssh-keygen -t rsa -C "820209825.com" 【设置密码】
cat id_rsa.pub
github网站添加公钥
ssh -vT git@github.com 【输入密码】
git clone git@github.com:guofengzhi/TEST.git 【输入密码】
github 太卡
修改windows里的hosts文件,C:WindowsSystem32driversetc ,添加如下内容
# Github
151.101.44.249 github.global.ssl.fastly.net
192.30.253.113 github.com
103.245.222.133 assets-cdn.github.com
23.235.47.133 assets-cdn.github.com
203.208.39.104 assets-cdn.github.com
204.232.175.78 documentcloud.github.com
204.232.175.94 gist.github.com
107.21.116.220 help.github.com
207.97.227.252 nodeload.github.com
199.27.76.130 raw.github.com
107.22.3.110 status.github.com
204.232.175.78 training.github.com
207.97.227.243 www.github.com
185.31.16.184 github.global.ssl.fastly.net
185.31.18.133 avatars0.githubusercontent.com
185.31.19.133 avatars1.githubusercontent.com
192.30.253.120 codeload.github.com