- 人类高质量代码git版本控制
- 一、git的概念
- 集中式版本控制软件
- 分布式版本控制软件
- 二、git初始化版本库使用
- 2.1 git 安装与下载
- 2.2 使用前准备
- 三、git工作理解
- 3.1 git使用过程
- 四、git的命令
- 4.1 常用命令
- 文件添加操作
- 文件删除操作
- 4.2 分支功能
- 分支定义
- 分支操作
- 五、git合并冲突解决
- 5.1 合并分支解决冲突
- 六 git 远程代码库使用
- 远程库
- 本地库
- 使用说明
- 本地库 关联 远程库
- 上传数据到远程库
- 远程库更新本地库
- 成功将本地库内容上传到远程库
- 注意事项
- 查看远程库信息
- 删除连接远程库
- 从远程库下载源码到本地库
- Git支持多协议方式
- 加密方式:
- 多人协作开发实现步骤
- 本地库连接远程库
- 本地库连接远程库
Git 是目前世界上最优秀的分布式版本控制系统。版本控制系统是能够随着时间的推进记录一系列文件的变化以便于你以后想要的退回到某个版本的系统。版本控制系统分为三大类:本地版本控制系统,集中式版本控制系统和分布式版本控制系统
本地版本控制(Local Version Control Systems)是将文件的各个版本以一定的数据格式存储在本地的磁盘(有的VCS 是保存文件的变化补丁,即在文件内容变化时计算出差量保存起来),这种方式在一定程度上解决了手动复制粘贴的问题,但无法解决多人协作的问题。
集中式版本控制软件- 集中式代表:SVN
- 集中式特点:
- 版本库是集中存放在中央服务器的。
- 必须实时联网才能工作。
- 分布式代表:Git
- 分布式特点:
- 个人电脑都可以作为版本库。
- 速度快,使用简单。
- 不必实时联网。
在这里git基本上的版本基本上都是一样的,在这里就不再叙述
2.2 使用前准备- 安装完成后,在开始菜单里找到“Git”->“Git Bash”,弹出命令行窗口,说明Git安装成功。
- 安装Git之后,你要做的第一件事情就是去配置你的名字和邮箱,因为每一次提交都需要这些信息。
$ git config --global user.name "Your Name" $ git config --global user.email "Your email@example.com"
- 这个命令,会在“ ~/.gitconfig”中以如下形式输出设置文件。
[user] name = Your_Name email = Your_email@example.com
- 将 color.ui 设置为 auto 可以让命令的输出拥有更高的可读性。
$ git config --global color.ui auto
- ~/.gitconfig”中会增加下面一行。
[color] ui = auto三、git工作理解
2.2、本地区、暂存区、仓库区
本地区:就是自己工作的文件夹
暂存区:初始的修改,我们对自己修改与添加文件内容还还没有作为最终版确定,吧文件暂时的先放在这个位置上,
仓库区:就是我们形成的前一个版本情况
# 创建文件夹
$ mkdir test
# 进入当前目录
$ cd test
# 查看目录
$ pwd
# 将当前目录变成Git可管理的版本库又名仓库,英文名repository
$ git init
Initialized empty Git repository in D:/Tools/Git/test/.git/
3.1 git使用过程
#将自己文件添加到暂存区 git add . #添加到仓库 git commit -m "注释内容" #推送 git push四、git的命令 4.1 常用命令 文件添加操作
# 1. 工作区中创建新文件hello.py
$ vi hello.py
# 2. 查看文件状态
$ git status
# 3. 将源码拷贝到暂存区
$ git add hello.py
# 4. 将暂存区移动到当前分支
$ git commit -m "创建新文件hello.py"
# 5. 查看状态
$ git status
On branch master
nothing to commit, working tree clean
文件删除操作
# 1. 删除工作区中的文件
rm hello.py
# 2. 删除暂存区中的文件
git rm hello.py
# 3. 删除当前分支中的文件
git commit -m '描述信息'
4.2 分支功能
分支定义
分支可以理解成 独立开发功能的 小房间。分支操作
# 创建分支
$ git branch 分支名
# 查看分支
$ git branch
# 切换分支
$ git checkout 分支名
# 创建+切换分支
$ git checkout -b 分支名
# 合并某分支到当前分支
$ git merge 分支名
# 删除某分支
$ git branch -d 分支名
五、git合并冲突解决
5.1 合并分支解决冲突
当前分支1 分支2 前提分支1和分支2都进行了代码修改。
将分支2的内容合并到分支1
# 1. 切换到当前分支1
$ git checkout 分支1
# 2. 和分支2进行合并
$ git merge 分支2
# 3. 执行第二步后出现冲突(CONFLICT)
$ git merge dev
Auto-merging hello.py
ConFLICT (content): Merge conflict in hello.py
Automatic merge failed; fix conflicts and then commit the result.
# 4. 解决方案:
print 'first'
<<<<<<< HEAD
print 'master second'
=======
print 'dev second'
>>>>>>> dev
1. 编辑合并分支1和分支2的内容
2. 修改好之后,$ git add 文件名
3. $ git commit -m "描述信息"
六 git 远程代码库使用
Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。
github网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。
github官网:https://github.com/远程库
1. github版本库即为远程库。本地库
1. 本地创建的Git版本库即为本地库。使用说明
1. 先在github官网中注册账户。
2. 创建SSH key。
由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的。
Windows下打开Git Bash,创建SSH key。
$ ssh-keygen -t rsa -C "youremail@example.com"
3. 在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件(密钥对)。
用户主目录:C:UsersAdministrator
4. 登陆GitHub,打开"Account settings","SSH Keys"页面。
5. 点"Add SSH Key",填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
本地库 关联 远程库origin:默认远程库名称
# 在本地库当前分支
$ git remote add origin git@github.com:pythonde/newRepository.git
上传数据到远程库
$ git push -u origin dev The authenticity of host 'github.com (13.250.177.223)' can't be established. RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'github.com,13.250.177.223' (RSA) to the list of known hosts. To github.com:pythonde/newRepository.git ! [rejected] master -> master (fetch first) error: failed to push some refs to 'git@github.com:pythonde/newRepository.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.远程库更新本地库
$ git pull --rebase origin dev From github.com:pythonde/newRepository * branch dev -> FETCH_HEAD First, rewinding head to replay your work on top of it... Applying: first add Applying: dev second Applying: test2 dev third成功将本地库内容上传到远程库
$ git push -u origin dev Counting objects: 9, done. Delta compression using up to 4 threads. Compressing objects: 100% (7/7), done. Writing objects: 100% (9/9), 852 bytes | 852.00 KiB/s, done. Total 9 (delta 0), reused 0 (delta 0) To github.com:pythonde/newRepository.git a69bffd..da7dd11 dev -> dev Branch 'dev' set up to track remote branch 'dev' from 'origin'.注意事项
1. 远程操作git push / git pull 时,本地库和远程库分支名相同。 2. 第一次push时:$ git push -u origin dev 3. 之后只需要简写:$ git push origin dev 4. 远程库分支之间的合并,创建一个pull request进行合并。查看远程库信息
$ git remote -v删除连接远程库
$ git remote rm origin从远程库下载源码到本地库
$ git clone git@github.com:pythonde/newRepository.git
Git支持多协议方式Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。 使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令。 但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。加密方式:
- 对称加密:性能高
用什么加密就用什么解密(异或) '123'^'456'--->'4321432' 加密 '4321432'^'456'--->'123' 解密
- 非对称加密:安全性高(支付宝采用下面加密方式)
公钥加密,私钥解密
客户端: 服务器端: 服务器端的公钥 服务器端的私钥 客户端的私钥 客户端的公钥
SSH密钥对(公钥+私钥)
客户端:git很简单-密钥配对(验证用户时使用SSH),git服务器会随机生成一个对称的密钥。 发给客户端,客户端通过对称的密钥对数据传输的时候使用的是对称加密。多人协作开发实现步骤
1. 由张三上传一个基本版本到张三的github远程库master上。 2. 李四登录github账户访问remoteb版本库。fork 将张三的版本转载到李四的个人github中。 3.李四:在github上新建一个分支dev 本地库中也得新建一个dev分支 4.李四:将本地库的dev分支和远程库的dev分支进行关联本地库连接远程库
- github注册账户
- 创建远程版本库
- 本地库和远程库进行关联
git remote -v
git remote add origin git@github.com:pythonde/remoteRepository.git
- 更新本地库
git pull --rebase origin master
git status
git add hello.py
git commit -m '描述信息'
5.将本地库内容上传至远程库
git push -u origin master
地库的dev分支和远程库的dev分支进行关联
本地库连接远程库- github注册账户
- 创建远程版本库
- 本地库和远程库进行关联
git remote -v
git remote add origin git@github.com:pythonde/remoteRepository.git
- 更新本地库
git pull --rebase origin master
git status
git add hello.py
git commit -m '描述信息'
5.将本地库内容上传至远程库
git push -u origin master



