ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

git 项目管理

git 项目管理 git是一个分布式的版本控制工具github是代码托管平台git有什么用呢1保存文件的所有修改记录2使用版本号进行区分3随时可浏览历史版本记录4历史版本可以任意还原5可以对比不同版本的文件差异为什么要用git呢1多人协作开发一个大型项目2每个人都在代码库下载代码然后进行修改把大家不同版本的代码合在一起上传到平台。3公司都有自己的代码托管平台github是开源的免费学习的项目。4为协作开发而生学习意义比较大1、安装git下载安装包安装windows版本下载链接CNPM Binaries Mirror1.1 配置本地私钥到远程仓库中1打开git输入ssh-keygen2然后一直按回车在C:\Users\T14s Gen 3.ssh目录上会生成一个公钥文件和私钥文件3复制 ~/.ssh/id_ed25519.pub文件的内容4登录 GitHub(gitlab) → Settings → SSH and GPG keys → New SSH key → 粘贴并保存。验证添加私钥是否成功ssh -T 远程仓库链接地址2、常用git指令1、先进入项目所在的文件夹打开git 2、git init 3、git add . //添加所有文件 //或 git add 文件名1 文件名2 //添加指定文件 //创建本地用户 4、git config --global user.name 你的名字 4、git config --global user.email 你的邮箱example.com //提交到本地仓库 5、git commit -m 第一次提交项目初始化 6、链接远程仓库 git remote add origin gitgithub.com:magua/9.1-kvstore.git //检查是否成功 git remote -v // 应该显示 // origin https://github.com/你的用户名/仓库名.git (fetch) // origin https://github.com/你的用户名/仓库名.git (push) //将本地仓库推至远程仓库 # 将本地 main/master 分支推送到远程并建立关联 git push -u origin main # 或 git push -u origin master # -u 参数表示建立跟踪关联以后可以简写为 git push下面介绍一下git中常用的几种命令git config配置信息git clone -b magua 链接地址-b是下载分支代码checkout(检出)从本地仓库中检出一个仓库分支然后进行修订git commit提交命令git add添加文件到缓存命令git status查看文件的状态命令git diff查看更新的详细信息命令git fetch(抓取)从远程仓库抓取到本地仓库不进行任何的合并动作一般操作的比较少git pull(拉取)从远程仓库拉到本地库自动进行合并然后放到工作区相当于fetchmergegit push推送git reset HEAD取消缓存命令git rm删除命令git mv移动或重命名命令我们可以通过git config来配置用户名和邮箱地址便于我们将代码提交到远程仓库具体格式如下git config --global user.name 你的用户名 git config --global user.email 你的邮箱git add 命令可将文件添加到缓存如新项目中添加所有文件很普遍可以使用如下命令git add .当然我们也可以指定某一类文件如将java文件添加到缓存中可以使用如下命令git add *.java我们可以使用 git status 命令来查看相关文件的状态直接执行如下命令git status如果有修改的文件则执行结果如下根据上面git status命令的提示内容我们可以得到三种处理情况暂存文件的命令git add 文件名放弃未暂存文件的修改命令git checkout --文件名将被修改的文件暂存并提交的命令git commit -a如果你对Git的各种状态比较熟悉了也可以使用 git status -s 来查看简写的状态这种简写的状态和SVN上的差不多 M - 被修改A - 被添加D - 被删除R - 重命名?? - 未被跟踪 等等。如果有修改的文件则执行结果如git diff执行 git diff 来查看更新的详细信息与git status不同的是git status只显示更新的状态而 git diff 可以显示已写入缓存与已修改但尚未写入缓存的改动的区别具体的详细信息。尚未缓存的改动git diff查看已缓存的改动git diff --cached查看已缓存的与未缓存的所有改动git diff HEAD显示摘要而非整个 diffgit diff --stat为常用指令配置别名打开windows用户目录创建.bashrc文件可以在git bash上使用命令创建touch ~/.bashrc2. 在文件中输入以下内容#用于输出git提交日志 alias git-loggit log --prettyoneline --all --graph --abbrev-commit #用于输出当前目录所有文件及基本信息 alias llls -al3. 打开git bash执行我们刚刚创建的文件source ~/.bashrc解决git bash乱码问题打开git bash执行下面命令git config --global core.quotepath false2.${git_home}/etc/bash.bashrc文件最后加入下面两行git_homegit的安装目录export LANGzh_CN.UTF-8 export LC_ALLzh_CN.UTF-83、获取本地仓库要使用Git对我们的代码进行版本控制首先需要获得本地仓库 1)在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库2)进入这个目录中点击右键打开Gitbash窗口3)执行命令git init4)如果创建成功后可在文件夹下看到隐藏的.git目录。4、基础操作指令Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态这些修改的状态会随着我们执行Git的命令而 发生变化。本章节主要讲解如何使用命令来控制这些状态之间的转换:git add(工作区--本地暂存区)git commit(本地暂存区--本地仓库)-m 后面可以跟注释注释4.1、*查看修改的状态(status)作用查看的修改的状态(暂存区、工作区)命令形式git status4.2、*添加工作区到暂存区(add)作用添加工作区一个或多个文件的修改到暂存区.命令形式git add单个文件名|通配符.。将所有修改加入暂存区:git add .4.3、*提交暂存区到本地仓库(commit)作用提交暂存区内容到本地仓库的当前分支命令形式git commit -m 注释内容4.4、*查看提交日志(log)在3.1.3中配置的别名git-log就包含了这些参数所以后续可以直接使用指令git-log作用查看提交记录命令形式git log [option]options--all 显示所有分支--prettyoneline 将提交信息显示为一行--abbrev-commit 使得输出的commitld更简短--graph以图的形式显示H4.5、版本回退作用版本切换 命令形式git reset --hard commitIDcommitID可以使用git-log或git log指令查看如何查看已经删除的记录?git reflog这个指令可以看到已经删除的提交记录3.3.6、添加文件至忽略列表一般我们总会有些文件无需纳入Git的管理也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件比如日志文件或者编译过程中创建的临时文件等。在这种情况下我们可以在工作目录中创建一个名为gitignore的文件(文件名称固定)列出要忽略的文件模式。下面是一个示例:1、创建一个.gitigore文件将不需要管理的文件添加到该文件中git就会剔除这部分的文件 # no .a files *.a # but do track lib.a, even though youre ignoring .a files above!lib.a # only ignore the ToDo file in the current directory, not subdir/ToDo /TODO # ignore all files in the build/ directory bui1d/ # ignore doc/notes.txt, but not doc/server/arch.txt doc/*.txt # ignore all .pdf files in the doc/ directory doc/**/*.pdf5、基础练习操作########仓库初始化############################# 创建目录(git_test01)并在目录下打开gitbash略 #初始化git仓库 git init #####################创建文件并提交######################目录下创建文件 fi1e01.txt略 #将修改加入暂存区 git add #将修改提交到本地仓库提交记录内容为:commit 001git commit --m commit 001 #查看日志 git log ###林#林#林##########修改文件并提交#########修改fi1e01的内容为:count1 略 #将修改加入暂存区 git add ##将修改提交到本地仓库提交记录内容为:update fi1e01 git commit --m update file01 #查看日志 git log # 以精简的方式显示提交记录git-log ###将最后一次修改还原############牛####查看提交记录 git-log # 找到倒数第2次提交的commitID6、git分支管理几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能以免影响开发主线。6.1 查看本地分支命令git branch6.2 创建本地分支命令git branch分支名6.3 *切换分支checkout命令git checkout 分支名我们还可以直接切换到一个不存在的分支(创建并切换)命令git checkout -b 分支名6.4 合并分支一个分支的提交可以合并到另一个分支命令git merge 分支名称6.5 删除分支不能删除当前分支只能删除其他分支git branch -d b1删除分支时需要做各种检查git branch -D b1不做任何检查强制删除6.6 解决分支冲突决冲突步骤如下: 当两个分支上对文件的修改可能会存在冲突例如同时修改了同一个文件的同一行这时就需要手动解决冲突解决冲突步骤如下:1.处理文件中冲突的地方2.将解决完冲突的文件加入暂存区(add)3.提交到仓库(commit)冲突部分的内容处理如下所示:6.7 开发中分支使用原则与流程几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能以免影响开发主线。在开发中一般有如下分支使用原则与流程:master(生产)分支 线上分支主分支中小规模项目作为线上运行的应用对应的分支;develop(开发)分支 是从master创建的分支一般作为开发部门的主要开发分支如果没有其他并行开发不同期上线要求都可以在此版本进行开发阶段开发完成后需要是合并到master分支,准备上线。feature/xxxx分支 从develop创建的分支一般是同期并行开发但不同期上线时创建的分支分支上的研发任务完成后合并develop分支。hotfix/xxxx分支 从master派生的分支一般作为线上bug修复使用修复完成后需要合并到master、test、develop分支。 还有一些其他分支在此不再详述例如test分支(用于代码测试)、pre分支(预上线分支)等等。7、git远程仓库7.1 常用的托管服务[远程仓库]前面我们已经知道了Git中存在两种类型的仓库即本地仓库和远程仓库。 那么我们如何搭建Git远程仓库呢? 我们可以借助互联网上提供的一些代码托管服务来实现其中比较常用的有GitHub、码云、GitLab等。 gitHub(地址: https://github.com/)是一个面向开源及私有软件项目的托管平台 因为只支持Git 作为唯一的版本库格式进行托管 故名gitHub 码云(地址:https://gitee.com/)是国内的一个代码托管平台由于服务器在国内 所以相比于GitHub码云速度会更快 GitLab (地址:https://about.gitlab.com/)是一个用于仓库管理系统的开源项目 使用Git作为代码管理工具并在此基础上搭建起来的web服务 一般用于在企业、学校等内部网络搭建git私服。7.2 远程仓库添加/查看/推送添加远程仓库origin仓库名git remote add origin 远程仓库地址查看远程仓库git remote推送到远程仓库master远程仓库分支git push --set-upstream origin master:master命令:git push [-f] [--set-upstream] [远端名称 [本地分支名] [:远端分支名] ]。如果远程分支名和本地分支名称相同则可以只写本地分支git push origin master:master 将本地的仓库的master分支推送到远程origin仓库的master分分支--set-upstream 推送到远端的同时并且建立起和远端分支的关联关系。git push --set-upstream origin master如果当前分支已经和远端分支关联则可以省略分支名和远端名。git push 将master分支推送到已关联的远端分支。-f 强制覆盖远程分支查看本地分支和远程分支的对应关系git branch -vv7.3 从远程仓库中抓取和拉取远程分支和本地的分支一样我们可以进行merge操作只是需要先把远端仓库里的更新都下载到本地再进行操作。抓取命令git fetch [remote name] [branch name]。抓取指令就是将仓库里的更新都抓取到本地不会进行合并。如果不指定远端名称和分支名[则抓取所有分支]。拉取命令git pull [remote name] [branch name]拉取指令就是将远端仓库的修改拉到本地并自动进行合并等同于fetchmerge如果不指定远端名称和分支名则抓取所有并更新当前分支。在test01这个本地仓库进行一次提交并推送到远程仓库7.4 解决远程合并冲突在一段时间A、B用户修改了同一个文件且修改了同一行位置的代码此时会发生合并冲突。A用户在本地修改代码后优先推送到远程仓库此时B用户在本地修订代码提交到本地仓库后也需要推送到远程仓库此时B用户晚于A用户故需要先拉取远程仓库的提交经过合并后才能推送到远端分支,如下图所示。在B用户拉取代码时因为A、B用户同一段时间修改了同一个文件的相同位置代码故会发生合并冲突。远程分支也是分支所以合并时冲突的解决方式也和解决本地分支冲突相同相同在此不再赘述需要学员自己练习。推荐一个零声教育学习教程个人觉得老师讲得不错分享给大家[LinuxNginxZeroMQMySQLRedisfastdfsMongoDBZK流媒体CDNP2PK8SDockerTCP/IP协程DPDK等技术内容点击立即学习:链接
返回列表