本文主要是介绍6git----------------Git多人开发协同工具-------------------全栈式开发46,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Git多人开发协同工具
- 一、Git是什么
- (一)工作区
- `1.指定管理的文件夹`
- `2.自动检测新文件和有变动文件`
- `3.放到暂存区`
- (二)暂存区
- `1.修改文件回到工作区`
- `2.提交到版本区`
- (三)版本库
- `1.切换版本`
- `2.修改提交版本`
- `3.删除已经提交的文件`
- 二、Git中的分支
- 三、GitHub、码云上传下拉代码
- (一)实现单人工作步骤
- (二)实现gitflow----多人协同开发工作流
- 四、场景实现
一、Git是什么
引入
- 在进行功能项目开发的时候,我们想切换版本,并且实现多人开发的时候怎么处理呢?
- 我们有软件类似于 QQ、office 实现多人共享,也有版本控制:类似于毕业论文、写文案、视频剪辑等,需要反复修改和保留原历史数据。但我们有更方便的开发人员用的工具git
- 为什么要做版本控制:要保留之前所有的版本,以便回滚和修改。
定义
- Git 是一个分布式的版本控制软件。
安装 Git
- Git 地址:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git
git管理下文件状态
基础命令
- git status:查看目录下的文件状态,文件有三种状态:工作区、暂存区、版本库。
- 在工作区:除了配置文件和指定不需要管理的文件都会被自动管理,管理起来的文件是在git status会显示红色
- 在暂存区:中介点,在git status会显示绿色
- 在版本库:此时文件已经提交了,所以该文件在git status是不存在的。
查看目录下的文件状态,共三个状态 工作区(红或白)、暂存区(绿)、版本库(无)
- git log:查看版本提交状态
- git log --oneline 一行查看
- history :查看历史命令
常见问题
- 刚初始化的文件夹需要配置个人信息,否则无法提交版本
- 这里设置的是全局global的配置信息。一般设置全局就行,项目local 全局global 系统system
# 没有配置的提示*** Please tell me who you are.
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
- git 出现中文乱码解决方法
git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8
git配置文件
- git 配置文件都是隐藏文件,一般都不修改,修改也只是全局和项目
- 因为配置文件是隐藏文件,所以并不会被git检测管理起来
- 项目配置文件路径:项目/.git/config
- 全局配置文件路径:~/.gitconfig
- 系统配置文件路径:/etc/.gitconfig
(一)工作区
1.指定管理的文件夹
- 进入要管理的文件夹,右键 Git Bash Here,进入git
- git init 初始化文件夹,会生成git配置文件,是隐藏文件夹,而且会变成master主线
2.自动检测新文件和有变动文件
创建新文件/有变动文件
- touch a.py 等方法创建或vim编辑文件,查看文件状态git status
- 已经被git检测管理了
如何取消git管理某个文件
- 因为有些文件如配置文件,如果上传到公众平台,有些关键的信息可能会暴露,所以我们需要将部分文件取消自动检测
#新建文件.gitignore touch .gitignore # 将需要取消管理的文件名写在里面,支持正则、取反 、文件夹 vim .gitignore # 例如*.txt取消所以txt文件 # 例如 !demo.py 除了demo.py文件其他都取消管理 # 例如files/ 该文件夹下的文件都取消管理
3.放到暂存区
- git add 文件名
- git add .提交所有文件
- 文件变绿说明就已经放到暂存区
(二)暂存区
1.修改文件回到工作区
2.提交到版本区
- git commit -m ‘描述信息’
(三)版本库
1.切换版本
回滚至之前/之后版本
- git reset – hard 版本号 ## 结合git log 查看版本号
2.修改提交版本
先进入修改页面
- git rebase -i 要修改的上一个的版本号,可多条
- git rebase -i HEAD~2 修改最近的几条记录
# 修改的命令Commands:# p, pick <commit> = 默认# r, reword <commit> = 编辑描述信息# e, edit <commit> = use commit, but stop for amending# s, squash <commit> = 合并版本# f, fixup <commit> = like "squash", but discard this commit's log message# x, exec <command> = run command (the rest of the line) using shell# d, drop <commit> = remove commit# l, label <label> = label current HEAD with a name# t, reset <label> = reset HEAD to a label# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]# . create a merge commit using the original merge commit's# . message (or the oneline, if no original merge commit was# . specified). Use -c <commit> to reword the commit message.
修改描述信息
- 将pick -> r -> 修改描述信息wq 退出
- 或者直接git commit --amend 进入最新一条,只能修改描述
合并版本
- 将后一个pick -> 改成s -> 修改合并后的描述wq 退出
放弃修改xxx|REBASE-i
- git rebase --abort 退出修改
3.删除已经提交的文件
git rm 文件名
git commit -m ‘描述信息’
二、Git中的分支
- 分支可以给使用者提供多个环境,意味着你可以把你的工作从开发主线分离开来,以免影响开发主线
- 默认是master主线,实际生产情况不可能直接在master进行代码开发
查看所有分支
- git branch -a
创建分支
- git branch 分支名字
切换分支
- git checkout 分支名称
- git checkout -b bbz创建分支并切换
分支合并(可能产生冲突)
- git merge 要合并的分支
删除分支
- git branch -d 分支名称
三、GitHub、码云上传下拉代码
- GitHub、码云作用:实现本地代码到上传到中心,这样无论在家还是在公司都可以对代码进行修改,同时还能实现多人共同修改
(一)实现单人工作步骤
注册账号、创建仓库
- 需要注册 github /码云账号,并创建远程仓库,然后再执行如下命令,将代码上传到 github/码云。
设置远程提交方式
- git remote add 操作名字 远程仓库地址
- eg:git remote add origin https://gitee.com/wyt33/weather-forecast.git
- 删除远程提交方式
- git remote rm origin
上推代码
- git push -u origin 分支名字
- 如果新建项目有自带的文件可能会导致上传失败,可以直接强制推,会直接覆盖项目git push -f origin master
下拉代码
- git pull origin 分支名字
- 下拉所有
- git clone 远程创库地址
- 初次在公司新电脑下载代码
解决推送代码每次都要输入用户名和密码
- 创建ssh公钥
# 在git bash 终端里输入 ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # 将邮箱替换成码云注册邮箱。 # 回车三次即可生成sshkey # 查看 public key,并把他添加到码云(Gitee.com) cat ~/.ssh/id_rsa.pub # 将ssh-rsa到邮箱部分的内容复制出来 # 添加用户sshkey,在github或码云通过个人>>设置,添加ssh公钥
- 验证是否绑定成功
ssh -T git@git.oschina.net # 返回Welcome to Git@OSC, yourname!表示添加成功。
- 使用
# 以后的https链接就换成成ssh协议认证 git remote add origin git@github.com:xxx/xxx.git # 如果之前远程提交设置的是http链接需要改变成ssh协议 git remote rm origin # 将远程的提交方式删除,然后添加新的提交方式 git remote add origin git@github.com:xxx/xxx.git
(二)实现gitflow----多人协同开发工作流
第一步
- 项目初始化,本地提交
第二步
- 通过码云创建了一个组织
- 在这个组织下面创建了一个仓库
- 在这个仓库中邀请开发成员
第三步
- 创建分支dev
- 创建 开发成员分支(不一定)
- 如果开发人员A,提交了pull request, 接下来要做code review
- 将开发人员的分支合并到 dev分支
第四步
- 在本地拉取最新的代码 dev 分支上的代码拉取下来
- 分支合并
- 切换到master分支
第五步
- 功能上线
- 提交到码云上
四、场景实现
重命名
- git mv 原先的文件名字 修改之后的文件名字
- 直接修改而没有修改git管理的文件的话会出错
初次在公司新电脑下载代码
- 在管理的文件地方,不需要建文件夹,直接右击git bash here,git clone 远程创库地址,就可以将代码文件夹全部下拉
git clone 远程创库地址
bug修复
- 创建bug支线,修改源文件,上传然后主线合并修改的文件,就可以将版本上传成功了
# 创建并切换到分支 git branch -b bug# 在分支修改源文件,修改好了就commit# 切换主线 git checkout master# 合并分支 git merge bug# 删除分支 git branch -d bug
拓展新功能
- 在开发支线新增文件,提交后由主线合并提交到版本库
-
# 创建并切换到分支 git branch -b dev# 在分支创建新文件,修改好了就commit# 切换主线 git checkout master# 合并分支 git merge dev
忘记上推
- 如果白天忘记上推,晚上换了台电脑继续工作,不可能把白天的全部码一遍,那么继续对文件修改并上推,第二天白天换到原来的电脑,那么昨天本机白天的代码和晚上写的代码就会冲突
- 直接对文件修改就行,把两段代码合并,删掉提示行,然后再提交文件就正常了
这篇关于6git----------------Git多人开发协同工具-------------------全栈式开发46的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!