1.git源代码管理
- 思考:如何多人协同开发同一个项目?
- Git是目前世界上最先进的分布式版本控制系统(没有之一)
- 作用:源代码管理
- 为什么要进行源代码管理?
- 方便多人协同开发
- 方便版本控制
- Git诞生:
- 作者是Linux之父
- 当初开发Git仅仅是为了辅助Linux内核的开发(管理源代码)
- GitHub为开源免费项目提供Git存储
- Git管理源代码的特点:
- Git是分布式管理,服务器和客户端都有版本控制能力,都能进行代码提交,合并
- Git会在根目录下创建一个**.git**隐藏文件夹,作为本地代码仓库
2.Git单人本地仓库操作
- 安装git
sudo apt-get install git
- 查看安装结果
git
- 创建项目文件 test
- 创建本地仓库
- 进入test,并创建本地仓库 .git
- 新创建的本地仓库. .git是个空仓库
- git初始化
git init
- 配置仓库用户名与邮箱
- 默认不配置的话,会使用全局配置里面的用户名和邮箱
- 全局git配置文件路径:~/.gitconfig
git config user.name 用户名
git config user.email 提交邮箱
- 在项目文件创建py文件–login.py
- 查看文件状态
- 红色代表新建文件或新修改的文件,都在工作区
- 绿色代表文件在暂存区
- 查看文件状态
git status
- 跟踪文件(将文件提交到暂存区)
git add 文件名(.代表当前所有文件)
- 将修改内容放到暂存区(可以回退)
git add login.py
- 将暂存区内容提交到仓库区(commit会生成一条版本记录)
git commit -m '版本描述'
- 查看文件内容
cat login.py
- 查看日志
git log
查看所有版本信息
git reflog
- 版本回退
git reset --hard(强制性) HEAD^(^表示当前版本的前一个版本)
HEAD 表示当前最新版本
HEAD^ 表示当前版本的前一个版本
HEAD^^表示当前版本的前两个版本
HEAD^1表示前1个版本
HEAD^10表示前10个版本
- 回退到指定版本
git reset --hard c194322(版本号)
4.撤销工作区,暂存区代码
-
撤销修改
- 只能撤销工作区,暂存区代码,不能撤销仓库区代码
- 撤销仓库区代码相当于回退版本操作
- 撤销工作区代码
-
撤销暂存区代码‘
git reset HEAD login.py(文件名)
- 撤销工作区代码(回到前一次工作区)
git checkout 文件名
3.Git远程仓库GitHub
GitHub网站作为远程代码仓库时的操作和本地代码仓库一样的,只是仓库位置不同而已 GitHub–Add .gitignore:忽略文件是我们在写代码过程中(运行过程中)本地的一些文件,不需要提交到服务器进行代码管理 GitHub–Add a license: 多人开发协议,一般为MIT
- 远程仓库克隆到本地
git clone 仓库地址
warning: push.default 尚未设置,它的默认值在 Git 2.0 已从 'matching'
变更为 'simple'。若要不再显示本信息并保持传统习惯,进行如下设置:
git config --global push.default matching
若要不再显示本信息并从现在开始采用新的使用习惯,设置:
git config --global push.default simple
当 push.default 设置为 'matching' 后,git 将推送和远程同名的所有
本地分支。
从 Git 2.0 开始,Git 默认采用更为保守的 'simple' 模式,只推送当前
分支到远程关联的同名分支,即 'git push' 推送当前分支。
参见 'git help config' 并查找 'push.default' 以获取更多信息。
('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git,
为保持兼容,请用 'current' 代替 'simple')
sudo git config --global push.default simple
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: Authentication failed for 'https://github.com/wphnb/Git_test.git/'
设置自己的token,用token代替密码
个人token设置
- 在家修改公司的文件及在公司继续家里的项目
- 复制远程仓库地址(限没有此仓库的本地仓库的适用)
- 克隆仓库到本地 (限没有此仓库的本地仓库的适用)
git clone 仓库地址
3. 对项目进行修改
1. 非第一次克隆
2. 需执行 git pull
4. 提交项目
4.多人协同操作
- 文件
.git --> 源代码仓库
LICENSE-->权限
.gitignore-->忽略文件
- 配置经理身份信息
cd 克隆的文件位置
git config user.name '经理'
git config user.email 'manager@163.com'
- 配置用户身份信息
git config user.name '张三'
git config user.email 'zhangsan@163.com'
- 提交报错
git push报错:
fatal: unable to access 'https://github.com/.../.git': Could not resolve host: github.com
设置了:
git config --global http.sslVerify “false”
报错:
fatal: 配置变量 'http.sslverify' 的数字取值 '“false”' 设置错误: invalid unit
执行:
git config --global --edit
删除 sslVerify = “false” 保存退出
git push 成功!
可以在.git中config文件中的url添加用户名与token解决报错
http://用户名:token@github.com/wphnb/仓库名.git
- 总结
- 要使用git命令操作仓库,需要进入仓库内部
- 要同步服务器代码就执行 : git pull
- 本地仓库记录版本就执行: git commit -m ‘版本描述’
- 推送到服务器就执行: git push
- 编辑代码前先pul ,编辑完再commit ,最后推送是push
5.协同开发冲突
- 提示:多人开发避免不了出现代码冲突
- 原因:多人同时修改了同一个文件
- 冲突描述:
- 经理修改了login.py文件,造成git远程仓库有最新代码,张三在操作login.py文件时时没有pull ,自己新加的代码与经理的代码有冲突
- 解决:
- 原则:谁冲突谁解决,并且一定要协商解决.
- 方案:保留所有代码 或者 某一人代码
- 解决完冲突代码后,依然要add,commit,push
- 危害:
- 会影响正常的开发进度
- 容易冲突的操作方式:
- 多人同时操作了同一个文件
- 一个人一直写不提交
- 修改之前不更新代码
- 提交之前不更新最新代码
- 擅自修改同事代码
- 减少冲突的操作方式:
- 养成良好的操作习惯,先pull在修改,修改完立即commit,和push
- 一定要确保自己正在修改的文件是最新的
- 各自开发各自的模块
- 如果要修改公共文件,一定要先确认有没有人正在修改
- 下班前一定要提交代码,上班第一件事就是pull最新代码
- 一定不要擅自修改同事的代码
6.分支
- 作用:
- 区分生产环境代码以及开发环境代码
- 研究新的功能 或者 攻关难题
- 解决线上bug
- 特点:
- 项目开发中公用分支master,dev
- 分支master是默认分支,用于发布,当需要发布时将dev分支合并到master分支
- 分支dev是用于开发的分支,开发完阶段性的代码后,需要合并到master分支
- 涉及操作
git branch
git checkout -b pay
git checkout 分支名
git merge pay
git branch -D merge
git push --set-upstream origin 分支名
或者
git push -u origin order
|