| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> Git项目管理工具的原理及使用步骤(小白教程) -> 正文阅读 |
|
[开发工具]Git项目管理工具的原理及使用步骤(小白教程) |
目录 Git(全称是分布式版本控制系统)的功能特性1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。 2、在自己的机器上根据不同的开发目的,创建分支,修改代码。 3、在单机上自己创建的分支上提交代码。 4、在单机上合并分支。 5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。 6、生成补丁(patch),把补丁发送给主开发者。 7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。 8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。 ? Git与SVN的区别两者都是版本控制器,不过Git是分布式的,SVN是集中式的。 因为 Git 是分布式的,所以 Git 支持离线工作,在本地可以进行很多操作,包括接下来将要重磅推出的分支功能。而 SVN 必须联网才能正常工作。、 Git复杂概念多,SVN简单易上手 Git分支廉价,SVN分支昂贵 Git的使用方法Git 下载地址:https://git-scm.com/downloads 安装时全部选择Next就可以 安装好后鼠标右键选择Git Bash Here启动Git命令行界面,后面讲到的所有指令都将在Git Bash中运行。 ?Git相关配置?git config 命令的 --global 参数,用了这个参数,表示你这台机器上所有的 Git 仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址(不加 --global)。 可以使用 git config --list 检查已有的配置信息。 Git相关命令拉取远程分支代码时,后面要加对应的分支名 Git的工作就是创建和保存你项目的快照及与之后的快照进行对比 ?Git 常用的是以下 6 个命令:git clone、git push、git add 、git commit、git checkout、git pull。 git add可以将本地的文件上传到缓存区 git commit将缓存区的文件上传到本地的仓库或版本库 git push将本地仓库的文件上传到远程仓库 ?workspace工作区,本地的;staging area暂存区,缓存区;local repository版本库,本地仓库;remote repository远程仓库 1.初始化本地仓库cd?? ?改变目录 mkdir?? ?创建目录 pwd?? ?用于显示当前目录 git init?? ?把当前目录初始化为 git 仓库 ls -ah?? ?查看当前目录下的文件,包含隐藏文件 (不带 -ah 看不了隐藏文件) 2.添加仓库文件先在之前创建的本地文件夹learngit中新建README文件,test1.c文件,test2.c文件,test3.c文件。 命令git status -s 查看仓库状态:??表示未上传的文件,A表示上传到缓存区的文件,AM表示本地的和缓存区的文件内容不一样 使用 "git add ." 命令来添加当前项目的所有文件。 只添加一个的话就可以:git add README 使用“git add *.c”可以添加后缀名为.c的所有文件 ? ?修改README文件后再次查看状态;AM 状态的意思是这个文件在我们将它添加到缓存之后又有改动。改动后我们再执行 git add . 命令将其添加到缓存中, 使用 git add <file> 添加文件到仓库 使用 git commit -m "description" 提交该文件到仓库, description 为对该次提交的描述说明 使用 git status 查看仓库目前状态 (项目是否有修改、添加、未追踪的文件等) 4.查看修改内容,查看文件不同git diff 查看工作区(work dict)和暂存区(stage)的区别 git diff --cached 查看暂存区(stage)和分支(master)的区别 git diff HEAD -- <file> 查看工作区和版本库里面最新版本的区别 如: git diff hello.txt ?表示查看 hello.txt 修改了什么,有什么不同 ?5.Git 回退版本git reset 命令用于回退版本,可以指定退回某一次提交的版本。 格式如下: git reset [--soft | --mixed | --hard] [HEAD] --mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。 例如: $ git reset HEAD^ ? ? ? ? ? ?# 回退所有内容到上一个版本 $ git reset HEAD^ hello.php ?# 回退 hello.php 文件的版本到上一个版本 其余参数: --soft 参数用于回退到某个版本: 实例: $ git reset --soft HEAD~3 # 回退上上上一个版本 --hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交: 实例: $ git reset –hard HEAD~3 ?# 回退上上上一个版本 ? $ git reset –hard bae128 ?# 回退到某个版本回退点之前的所有信息。 $ git reset --hard origin/master ? ?# 将本地的状态回退到和远程的一样 注意:谨慎使用 –hard 参数,它会删除回退点之前的所有信息。 git reset HEAD 命令用于取消已缓存的内容。 现在两个文件修改后,都提交到了缓存区: 我们现在要取消其中一个的缓存,指令: $ git reset HEAD README 之后再执行 git commit, 只会将 test1.c 文件的改动提交,而 README 没有。 可以看到 README ?文件的修改并未提交。 这时我们可以使用以下命令将 hello.php 的修改提交 6.删除工作区文件git rm 命令用于删除文件。 git rm 删除文件有以下几种形式: 1. 将文件从暂存区和工作区中删除: $ git rm <file> 2. 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f。 3. 如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可 7.移动或重命名工作区文件git mv 命令用于移动或重命名一个文件、目录或软连接。 $ git mv [file] [newfile] 如果新但文件名已经存在,但还是要重命名它,可以使用 -f 参数: $ git mv -f [file] [newfile] 我们可以添加一个 README 文件(如果没有的话),然后对其重命名 8.管理分支$ git branch?? ?# 列出所有本地分支 $ git branch -a?? ?# 列出所有本地分支和远程分支 $ git branch [branch-name]?? ?# 新建一个分支,但依然停留在当前分支 $ git checkout -b [new_branch] [remote-branch]?? ?# 新建一个分支,并切换到该分支 $ git checkout [branch-name]?? ?# 切换到指定分支,并更新工作区 $ git merge [branch]?? ??? ?# 合并指定分支到当前分支 $ git cherry-pick [commit]?? ??? ?# 选择一个 commit,合并进当前分支 $ git branch -d [branch-name]?? ?# 删除本地分支,-D 参数强制删除分支 $ git push [remote] :[remote-branch]?? ?# 删除远程分支 如果我们要手动创建一个分支。执行 git branch (branchname) 即可。 也可以使用 git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下,从而在该分支中操作。 删除分支命令: $ git branch -d (branchname) $ git merge 命令将任何分支合并到当前分支中去,合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改 Git vim使用详解:https://blog.csdn.net/zym18351887819/article/details/80468525 9.Git 标签如果项目达到一个重要的阶段,并希望永远记住那个特别的提交快照,可以使用 git tag 给它打上标签。 比如说,我们想为我们的 learngit 项目发布一个"1.0"版本 当你执行 git tag -a 命令时,Git 会打开你的编辑器,让你写一句标签注解,就像你给提交写注解一样。 执行 git log --decorate 时,我们可以看到我们的标签了: ?Git 远程仓库(Github)Git 并不像 SVN 那样有个中心服务器。 目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。 这里,我们使用了 Github 作为远程仓库。 从远程仓库克隆我们使用 git clone 从现有 Git 仓库中拷贝项目(类似 svn checkout)。 克隆仓库的命令格式为:git clone <repo> <directory> 其中repo表示Git 仓库,directory代表本地目录,比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令: git clone git://github.com/schacon/grit.git mygrit ?添加远程库以 Github 为例作为远程仓库。由于本地 Git 仓库和 GitHub 仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息,使用以下命令生成 SSH Key: $ ssh-keygen -t rsa -C "youremail@example.com" 后面的 your_email@youremail.com 改为你在 Github 上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。 成功的话会在 ~/ 下生成 .ssh 文件夹,进去,打开 id_rsa.pub,复制里面的 key ?回到 github 上,进入 Account=>Setting=>SSH and GPG keys=>New SSH key,在key处填入 id_rsa.pub 中的内容,新建SSH key,成功结果如图: 为了验证是否成功,输入以下命令:$ ssh -T git@github.com,结果如图: ?之后登录后点击" New repository " 如下图所示:之后在在Repository name 填入 runoob-git-test(远程仓库名) ,其他保持默认设置,点击"Create repository"按钮,就成功地创建了一个新的Git仓库:以上信息告诉我们可以从这个仓库克隆出新的仓库,也可以把本地仓库的内容推送到GitHub仓库。 现在,我们根据 GitHub 的提示,在本地的仓库下运行命令(方框中内容为用户名/远程仓库名): ?然后输入 $ git push -u origin master,现在刷新github,就可以看到我们提交的内容了。 提取远程仓库查看当前的远程库:$ git remote ? # 查看当前配置有哪些远程仓库 ? ??? ??????????????????????????$ git remote -v? # 查看每个别名的实际链接地址 提取远程仓库:$ git fetch? # 从远程仓库下载新分支与数据: ? ? ? ? ? ? ? ? ? ? ? ? ?$ git merge # 从远端仓库提取数据并尝试合并到当前分支 ?假设你配置好了一个远程仓库,并且你想要提取更新的数据,你可以首先执行 git fetch [alias] 告诉 Git 去获取它有你没有的数据,然后你可以执行 git merge [alias]/[branch] 以将服务器上的任何更新(假设有人这时候推送到服务器了)合并到你的当前分支。 在github上修改其中一个文件,提交后,在Git中输入$ git fetch origin,结果如图: 方框中的信息" 8e510f3..4ae2b8b master -> origin/master" 说明 master 分支已被更新,我们可以使用以下命令 $ git merge origin/master 将更新同步到本地: ? ?查看本地文件,发现test2.c已经被修改。 推送到远程仓库推送你的新分支与数据到某个远端仓库命令:$ git push [alias] [branch] 以上命令将你的 [branch] 分支推送成为 [alias] 远程仓库上的 [branch] 分支,实例如下 重新回到我们的 Github 仓库,可以看到文件已经提交上来了。 删除远程仓库?删除远程仓库你可以使用命令:$ git remote rm [别名] 具体实例如下: ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:59:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |