go中
git clone https://git.....
go mod tidy 加载库
git branch 分支
git status 查看状态 on branch master
git checkout -b feature/add-node-disk-io 创建分支
git add .
git commit -m “…”
git remote add upstream https://git.woa.com/tke/eks/monitor-agent.git 添加上游库
git remote -v
git push origin feature/aaa:feature/aaa 提交分支(push)(添加功能分支名):(feature/aaa)
git push origin fix/aaa:fix/aaa 提交分支(push)(修复功能分支名):(fix/aaa)
git pull origin master --allow-unrelated-histories --把远程仓库中的内容 pull 到本地工作目录
git push -u origin master -f --在 pull 下来的项目中做修改,通过以上命令 push 到远程仓库了
文章目录
一、 Git的基本使用
1 安装及初始化本地仓库
安装完成后打开Git Bash窗口
输入git --version 输出版本信息证明安装成功
填写用户名和邮箱作为一个标识
git config --global user.name “用户名”
git config --global user.email “邮箱地址”
在本地创建一个目录作为git仓库,并通过git init命令进行初始化,初始化成功后会在当前目录生成一个.git目录文件,不要删除及修改。
2 Git存储流程
代码工作区—>执行git add —>暂存区(临时存储)—>执行git commit—>本地库(历史版本)
工作区、暂存区和本地仓库,逻辑上是本地计算机。当我们新建一个文件时,文件位于工作区,处于已修改(modified)状态,表明文件已进行了修改,但还没有提交保存;通过命令 git add 将其添加到暂存区,文件是已暂存(staged)状态,表示把已修改的文件放到下次提交时要保存的清单中;通过命令 git commit将文件放入本地仓库,文件为已提交(commited)状态,表示该文件已经被安全地保存在本地数据库中,到这一步可以说是成功生成了一个新的版本。
远程仓库用来将本地仓库上传到网络,实现备份、共享和合作。
3 Git 常用命令
3.1 添加文件
git add 文件名
将文件添加到暂存区
3.2 提交文件
git commit -m “提交注释”
将文件提交到本地仓库
3.3 查看状态
git status
查看目录中是否还有文件未提交
3.4 查看文件修改对比差异
git diff
比较文件差异
git diff [文件名]
将工作区中的文件和暂存区进行比较
3.5 查看日志
git log
查看历史记录,显示从最近到最远的日志
3.6 简化显示
git log --pretty=oneline
3.7 查看简短日志
git reflog
查看历史记录,并以简短信息显示
HEAD@{移动到当前版本需要多少步}
删除文件
3.8 前进回退
git reset --hard [局部版本号]
前进后退版本
3.9 删除文件
rm [文件名]
3.9.1 彻底删除
将文件添加到缓存区中,然后提交。
3.10 恢复文件
对于删除文件也可使用reset命令恢复
如果删除文件后未提交可以使用git checkout – [文件名]恢复
3.11 分支操作
在版本回退那里,已经知道每次提交,git都会把他们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在git里,这个分支叫主分支,即master。切换分支即可以理解为切换时间线。
在版本控制过程中,使用多条线同时推进多个任务。每条线成为一个分支。
例如:
3.11.1 创建分支
git branch [分支名]
3.11.2 查看分支
git branch –v
3.11.3 切换分支
git checkout [分支名]
3.11.4 合并分支(merge/rebase)
第一步:切换到接受合并的分支
git checkout [接受合并的分支名]
第二步:执行merge命令
git merge [待合并的分支名]
3.11.5 删除分支命令
git branch –d [分支名]
Git常用命令集
mkdir: XX(创建一个空目录XX指目录名)
pwd: 显示当前目录的路径
git init 把当前的目录变成可以管理的git仓库,生成隐藏的.git文件。
git add XX 把XX文件添加到暂存区。
git commit -m “XX” 提交文件 -m后面的是注释
git status 查看仓库状态
git diff XX 查看XX文件修改了哪些内容
git log 查看历史记录
git reset -hard HEAD^ 或者git reset -hard HEAD~ 回退到上一个版本 (如果想回退到100个版本,使用git reset -hard HEAD~100)
cat XX 查看XX文件内容
git reflog 查看历史记录的版本号id
git checkout --XX 把XX文件在工作区的修改全部撤销
git rm XX 删除XX文件
git remote add origin https://gitee.com/oldlu_wk/gittest.git关联一个远程库
git push -u (第一次提交要用-u以后不需要)origin master把当前master分支推送到远程库
git clone https://gitee.com/oldlu_wk/gittest.git从远程库中克隆
git checkout -b dev 创建dev分支 并切换到dev分支上
git branch 查看当前所有分支
git checkout master 切换回master分支
git merge dev 在当前分支上合并dev分支
git branch -d dev 删除dev分支
git branch name 创建分支
git stash 把当前的工作隐藏起来等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop删除文件
git stash pop 恢复文件的同时也删除文件
git remote 查看远程库的信息
git remote -v 查看远程库的详细信息
git push origin master Git会把master分支推送到远程库对应的远程分支上
二、 远程仓库操作(以码云为例,github同理)
基本操作
1、创建SSH Key
因为数据保存在远程服务器,服务器需要对你的身份进行识别,SSH key 可以让你的电脑和码云之间建立安全的加密连接。
1、 运行命令 ssh-keygen -t rsa -C “你的邮箱”,会有三次提示输入,直接回车即可。
2、 在用户目录下生成 .ssh目录,里面有一个 id_rsa.pub文件,保存的就是公钥。
登录码云,在SSH公钥文本框里粘贴 id_rsa.pub文件的内容
3、 验证秘钥是否添加成功
执行命令 ssh -T git@git.oschina.net
4 、 Git使用SSH连接第一次验证服务器的key时,需要你进行确认,此时输入yes回车即可。
再次执行 ssh -T git@git.oschina.net
2、 克隆远程仓库到本地
2.1 复制远程仓库地址
2.2 在bash窗口中执行 git clone + 复制的地址,回车
2.3 进入克隆目录,添加新文件
2.4 执行 git add . 将工作区所有内容上传到暂存区
2.5 执行git commit -m ‘本次提交的注释’ 提交到本地仓库
2.6 执行git push [别名] [分支名] 其中别名和分支名可省略。将本地仓库所有内容上传到远程仓库码云 ,码云刷新可看到最新内容
2.7 git pull 拉取远程库内容
远程库扩展操作
1、 创建远程库地址别名
git remote -v 查看当前所有远程地址别名
git remote add [别名] [远程地址] 增加远程地址
git remote remove [别名] 删除远程地址
2、 解决冲突
问题:文件add、commit、push后,git提示冲突,然后pull文件,再打开文件后提示冲突,然后手动解决,重新add、commit、push。
要点
如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉
取。
拉取下来后如果进入冲突状态,则修改->add->commit即可。
3、 远程仓库邀请成员
设置->数据管理->私有仓库成员->选中仓库->邀请成员
三、IDEA中操作Git
1 使用IDEA提交代码
1.1 在idea中配置git路径
1.2 在远程仓库上创建仓库
创建本地仓库
1.3 将项目添加到缓存
1.4 提交项目
1.5 提交并上传
1.6 添加远程仓库地址
1.7 查看上传状态
注意:如果上传时出现Push rejected: Push to origin/master was rejected
解决办法:
1.选择你要上传代码的文件夹,鼠标右键git Bash Here
2.输入下面两行命令
git pull origin master --allow-unrelated-histories --把远程仓库中的内容 pull 到本地工作目录
git push -u origin master -f --在 pull 下来的项目中做修改,通过以上命令 push 到远程仓库了
2 在idea中用git获取新项目代码
2.1 第一步
2.2 第二步 :克隆远程仓库
3 解决冲突
3.1 产生冲突的原因
冲突产生的根本原因是:两个人修改了同一个文件的同一块区域,在前者已经提交代码到远程仓库的情况下,后者修改代码前没有使用pull命令更新代码,而是修改完代码后再使用pull命令,这时就会产生冲突。这也是最常见的冲突,下面介绍解决冲突的办法也主要针对这种冲突。
3.2 预防冲突
在修改代码前,使用pull命令更新代码,能够保证在开始修改代码前本地的代码与远程仓库中的版本一致,这样能够大大降低冲突发生的概率。
3.3 解决冲突
协商手动解决
冲突产生的表现:后面状态为 MERGING
dell@DESKTOP-VSDN0Q2 MINGW64 /d/Git-Space/SH0720(master|MERGING)
步骤:
1)编辑有冲突的文件,删除特殊符号,决定要使用的内容
特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix
2)添加到暂存区
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master|MERGING)
$ git add hello.txt
3)执行提交(注意:此时使用 git commit 命令时不能带文件名)
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master|MERGING)
$ git commit -m “merge hot-fix”
[master 69ff88d] merge hot-fix
–发现后面 MERGING 消失,变为正常
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$
四、Git简介
Git概念
Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目。
本质:
项目开发的管理工具,使用Git可以方便的完成团队的协作开发。以及项目开发过程中的资源管理。
分布式的概念:
我们目前开发一个功能,是在一个项目中将功能进行实现。然后将开发好的功能部署到tomcat服务器中,对外进行服务。但是呢在实际的应用场景中,有很多的用户都会访问我们的功能,造成我们的服务器压力过大。于是我们对服务器进行水平扩容。搭建很多的服务器,每个服务器都在运行我们的功能。比如:查询账户余额的功能,如果我们此功能只部署在一个服务器中运行,有一亿个用户来访问,造成服务器崩溃。我们搭建N个服务器,同时运行我们的查询功能,用户请求任意服务器都可以处理其请求。但是呢,我们还需要一个特殊的服务器,该服务器不对外进行功能的服务器,而是根据用户的请求,将用户的请求分发到对应的空闲的服务器来处理,避免单个服务器的拥堵。但是我们的一个系统是由很多的
功能组成,根据上面的理论,我们将系统中的某个功能搭建了多台服务器提供服务器,那么
系统的其他功能怎么办呢?因为其他的功能不是高并发的,无需水平扩容,将系统拆分为
多个子功能,每个功能都可以独立的运行在服务器中,并提供服务器。相较于我们以前
将一个系统中的所有功能部署到一个服务器,变为将系统功能拆分后,部署到N个服务器中对外提供访问,并且可以根据高并发的需求,都某个功能的服务器进行水平扩容。此种
方式就是分布式。
总结:
分布式:就是将由一个服务器运行的资源,拆分到多个服务器中运行。
其他常见的版本控制工具
Subversion(简称SVN)、CVS等
版本控制工具的作用
协同修改 :
多人并行不悖的修改服务器端的同一个文件。
数据备份:
不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。
版本管理 :
在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文件系统快照的方式。
权限控制 :
对团队中参与开发的人员进行权限控制。
对团队外开发者贡献的代码进行审核——Git 独有。
历史记录 :
查看修改人、修改时间、修改内容、日志信息。
将本地文件恢复到某一个历史状态。
分支管理 :
允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。
集中式版本控制工具及分布式版本控制工具示意图
集中式版本控制工具示意图
分布式版本控制工具工作示 意图
Git 的优势
大部分操作在本地完成,不需要联网
尽可能添加数据而不是删除或修改数据
分支操作非常快捷流畅
与 Linux 命令全面兼容
7 Git 和代码托管中心
代码托管中心的任务:维护远程库
局域网环境下
GitLab 服务器
外网环境下
GitHub
码云(gitee)
图片
git reset
git rebase