Git以及Githup的使用
文章目录
- 一、Git
- 1.1 Git的工作流程
- 1.2 Git的基本使用
- 1.2.1 创建版本库(本地仓库Repository)
- 1.2.2 添加文件
- 1.2.3 修改文件
- 1.2.3.1 修改过程
- 1.2.3.2 查看修改历史(**)
- 1.2.3.3 还原修改(错删文件)
- 1.2.4 差异比较
- 1.2.5 删除文件
- 1.2.6 忽略文件语法规范
- 1.2.6 案例:将java工程提交到版本库
- 1.3 使用git命令将项目上传到githup
- 二、 远程仓库
- 2.1 添加远程仓库
- 2.2 ssh协议
- 2.2.1 什么是ssh?
- 2.2.2 ssh密钥生成
- 2.2.3 ssh密钥配置
- 2.3 同步到远程仓库
- 2.3.1 方式一:使用Git Bash命令同步
- 2.3.2 方式二:使用TortoiseGit同步
- 2.4 从远程仓库克隆
- 2.4.1 使用Git Bash
- 2.4.2 使用tortoiseGit
- 2.5 从远程仓库中获取代码
- 2.6 搭建私有服务器
- 2.6.1 服务器搭建
- Linux一些常用快捷键及命令
- 2.6.2 连接服务器
- 三、分支管理
- 3.1 创建合并分支
- 3.2 使用TortoiseGit实现分支管理
- 3.2.1 创建分支
- 3.2.2 合并分支
- 3.2.3 解决冲突
- 四、在IntelliJ IDEA中使用git
- 4.1 在IDEA中配置git
- 4.2 将工程添加至git
- 4.3 从远程仓库克隆
- 4.4 从服务端拉去代码
- 四、怎样在GitHup上找到自己感兴趣的开源项目
一、Git
1.1 Git的工作流程
一般工作流程如下:
1.从远程仓库中克隆 Git 资源作为本地仓库。
2.从本地仓库中checkout代码然后进行代码修改
3.在提交前先将代码提交到暂存区。
4.提交修改。提交到本地仓库。本地仓库中保存修改的各个历史版本。
5. 在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库
- 工作流程图:
1.2 Git的基本使用
如果要在本地仓库中进行上传文件的话,一定要将文件放入到工作目录中去(工作目录就是你所建立本地仓库(Repository)的根目录)
- 查看本地仓库的内容
直接选中TortoiseGit里面的版本库浏览器
1.2.1 创建版本库(本地仓库Repository)
- 方法一:使用GitBrash
右击工作目录中,然后点击Git Bash Here,然后再再命令窗口中输入git init即可;
- 方法二:使用TortoiseGIt
使用TortoiseGit时只需要在目录中点击右键菜单选择“在这里创建版本库”
注意:创建完成本地仓库后,在此目录下回新添加一个“.git”的隐藏文件
- 概念:
①版本库:“.git”目录就是版本库,将来文件都需要保存到版本库中
②工作目录:包含“.git”目录的目录,也就是.git目录的上一级目录就是工作目录。只有工作目录中的文件才能保存到版本库中
$ rm -rf .git #删除本地仓库
1.2.2 添加文件
添加完成后文件将进入暂存区,并没有提交到本地仓库,需要进行commimt提交,进行提交的时候一定要写日志内容(就是写修改了什么之类的)
1.2.3 修改文件
1.2.3.1 修改过程
①被版本库管理的文件不可避免的要发生修改,此时只需要直接对文件修改即可。修改完毕后需要将文件的修改提交到版本库
②修改完成后点击提交即可(记得在提交的时候写上日志)
1.2.3.2 查看修改历史(**)
1.2.3.3 还原修改(错删文件)
在你误删文件还没有进行commit的时,可以通过还原将误删的文件进行还原过来
1.2.4 差异比较
1.2.5 删除文件
删除文件:直接进行文件的删除然后提交就可以了
1.2.6 忽略文件语法规范
空行或是以 # 开头的行即注释行将被忽略。
可以在前面添加正斜杠 / 来避免递归,下面的例子中可以很明白的看出来与下一条的区别。
可以在后面添加正斜杠 / 来忽略文件夹,例如 build/ 即忽略build文件夹。
可以使用 ! 来否定忽略,即比如在前面用了 *.apk ,然后使用 !a.apk ,则这个a.apk不会被忽略。
* 用来匹配零个或多个字符,如 *.[oa] 忽略所有以".o"或".a"结尾, *~ 忽略所有以 ~ 结尾的文件(这种文件通常被许多编辑器标记为临时文件); [] 用来匹配括号内的任一字符,如 [abc] ,也可以在括号内加连接符,如 [0-9] 匹配0至9的数; ? 用来匹配单个字符。
看了这么多,还是应该来个栗子:
# 忽略 .a 文件
*.a
# 但否定忽略 lib.a, 尽管已经在前面忽略了 .a 文件
!lib.a
# 仅在当前目录下忽略 TODO 文件, 但不包括子目录下的 subdir/TODO
/TODO
# 忽略 build/ 文件夹下的所有文件
build/
# 忽略 doc/notes.txt, 不包括 doc/server/arch.txt
doc/*.txt
# 忽略所有的 .pdf 文件 在 doc/ directory 下的
doc/**/*.pdf
1.2.6 案例:将java工程提交到版本库
- 第一步:将参考资料中的java工程project-test复制到工作目录中
- 第二步:将工程添加到暂存区
- 第三步:忽略文件或文件夹(一般像out,idea没用的文件文件可以进行忽略)
选择保留本地文件。完成后在此文件夹内会多出一个.gitignore文件,这个文件就是文件忽略文件,当然也可以手工编辑。其中的内容就是把bin目录忽略掉。
- 第四步:先将.gitignore文件添加到暂存区
- 第五步:将java项目代码进行commit提交到版本库
1.3 使用git命令将项目上传到githup
- 其他的一些常用git命令
二、 远程仓库
2.1 添加远程仓库
直接在githup上新建一个远程仓库
2.2 ssh协议
2.2.1 什么是ssh?
SSH 为 Secure Shell(安全外壳协议)的缩写,由 IETF 的网络小组(Network Working Group)所制定。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题
2.2.2 ssh密钥生成
右击鼠标点击Git Bash Here然后执行命令ssh-keygen-t rsa 生成公钥和私钥
执行命令完成后,在window本地用户.ssh目录C:\Users\用户名.ssh下面生成如下名称的公钥和私钥
2.2.3 ssh密钥配置
将公钥复制到githup官网上的setting里面的SSH and GPGkeys里面
2.3 同步到远程仓库
2.3.1 方式一:使用Git Bash命令同步
注意:在githup上创建仓库的时候会有提示命令(一般使用ssh方式比较简单)
①在仓库所在的目录(D:\computerTools\GitRepository\Repository\repo1)点击右键选择“Git Bash Here”,启动git bash程序
②然后在git bash中执行如下语句:
git remote add origin git@github.com:sublun/mytest.git
git push -u origin master
- 如果出现一下错误
那样就先执行如下命令:$ git remote rm origin
再执行上面命令
2.3.2 方式二:使用TortoiseGit同步
- 先配置网络
Url:远程仓库的地址
推送URL:也是相同的
Putty密钥:选择刚才生成的密钥中的私钥 - 同步提交
2.4 从远程仓库克隆
克隆远程仓库也就是从远程把仓库复制一份到本地,克隆后会创建一个新的本地仓库。选择一个任意部署仓库的目录,然后克隆远程仓库
2.4.1 使用Git Bash
$ git clone git@github.com:sublun/mytest.git
2.4.2 使用tortoiseGit
2.5 从远程仓库中获取代码
Git中从远程的分支获取最新的版本到本地有这样2个命令:
1.git fetch:相当于是从远程获取最新版本到本地,不会自动merge(合并代码)
2. git pull:相当于是从远程获取最新版本并merge到本地
上述命令其实相当于git fetch 和 git merge
在实际使用中,gitfetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
如果使用TortoiseGit的话可以从右键菜单中点击“拉取”(pull)或者“获取”(fetch)
2.6 搭建私有服务器
2.6.1 服务器搭建
搭建Git服务器需要准备一台运行Linux的机器,在此我们使用CentOS。以下为安装步骤:
- 1、安装git服务环境准备
yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc - 2、下载git-2.5.0.tar.gz
1)解压缩
2)cd git-2.5.0
3)autoconf
4)./configure
5)make
6)make install - 3、添加用户
adduser -r -c ‘git version control’ -d /home/git -m git
此命令执行后会创建/home/git目录作为git用户的主目录 - 4、设置密码
passwd git
Linux一些常用快捷键及命令
登录及内部命令操作
- login:root password:xxzj…
- Ctrl + Alt 跳出Linux系统中鼠标位置进入本机中
- Ctrl + L 实现快熟清屏
- git操作 自己虚拟机上安装的git中的用户名和密码都是git
Linux命令 | 作用 |
---|---|
Ctrl + Alt | 快速清屏 |
cd | 切换目录 |
pwd | 查看用户当前的目录 |
cd. . | 回到上一级目录 |
cd ~ | 进入用户主目录的绝对路径名 |
ls | 显示文件或目录信息 |
ll | (ls -l)的别名,作用:显示当前目录下文件详细信息 |
mkdir | 在当前目录下创建一个空目录 |
cp | 复制文件或目录 |
rm | 删除文件或目录 |
cat | 查看文本文件内容 |
mv | 移动文件或目录、文件或目录改名 |
find | 查找文件或目录 |
chmod | 修改文件权限(例如:chmod 777 file.java //file.java的权限-rwxrwxrwx,r表示读、w表示写、x表示可执行) |
鼠标右击Linux页面 | 粘贴操作 |
以斜线(/)开头 | 到文件位置的完整说明,任何时候指定文件都可以使用 |
不以斜线(/)开头 | 指定相对于你当前工作目录而言的位置 |
2.6.2 连接服务器
- 私有git服务器搭建完成后就可以向连接github一样连接使用了,但是我们的git服务器并没有配置密钥登录,所以每次连接时需要输入密码。
使用命令连接:
$ git remote add origin ssh://git@192.168.25.156/home/git/first
这种形式和刚才使用的形式好像不一样,前面有ssh://前缀,好吧你也可以这样写:
$git remote add origin git@192.168.25.156:first - 使用TortoiseGit同步的话参考上面的使用方法
三、分支管理
3.1 创建合并分支
- 在我们每次的提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD指针严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
- 一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:
每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。
当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:
你看,Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!
不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:
假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并:
所以Git合并分支也很快!就改改指针,工作区内容也不变!
合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:
3.2 使用TortoiseGit实现分支管理
使用TortoiseGit管理分支就很简单了
3.2.1 创建分支
在本地仓库文件夹中点击右键,然后从菜单中选择“创建分支”:
如果想创建完毕后直接切换到新分支可以勾选“切换到新分支”选项或者从菜单中选择“切换/检出”来切换分支:
3.2.2 合并分支
分支切换到dev后就可以对工作区的文件进行修改,然后提交到dev分支原理的master分支不受影响。例如我们修改mytest.txt中的内容,然后提交到dev分支。
切换到master分支后还是原理的内容:
将dev分支的内容合并到master分支,当前分支为master。从右键菜单中选择“合并”:
再查看mytest.txt的内容就已经更新了:
3.2.3 解决冲突
两个分支中编辑的内容都是相互独立互不干扰的,那么如果在两个分支中都对同一个文件进行编辑,然后再合并,就有可能会出现冲突。
例如在master分支中对mytest.txt进行编辑:
然后提交到版本库
切换到dev分支,对mytest.txt进行编辑:
最后进行分支合并,例如将dev分支合并到master分支。需要先切换到master分支然后进行分支合并
出现版本冲突
冲突需要动手解决
在冲突文件上单机右键选择“解决冲突”菜单项:
把冲突解决完毕的文件提交到版本库就可以了
四、在IntelliJ IDEA中使用git
4.1 在IDEA中配置git
选择File→Settings打开设置窗口,找到Version Control下的git选项
选择git的安装目录后可以点击“Test”按钮测试是否正确配置
4.2 将工程添加至git
1)在idea中创建一个工程,例如创建一个java工程,名称为idea-git-test,如下图所示
2)创建本地仓库
在菜单中选择“vcs”→Import into Version Control→Create Git Repository
选择工程所在的上级目录。本例中应该选择idea-projects目录,然后点击“OK”按钮,在工程的上级目录创建本地仓库,那么idea-projects目录就是本地仓库的工作目录,此目录中的工程就可以添加到本地仓库中。也就是可以把idea-git-test工程添加到本地仓库中。
选择之后在工具栏上就多出了git相关工具按钮:
3)将工程添加至本地仓库
直接点击commit按钮,将工程提交至本地仓库
然后点击“commit”按钮,将工程添加至本地仓库。
4)推送到远程
在github上创建一个仓库然后将本地仓库推送到远程。
在工程上点击右键,选择git→Repository→push
或者在菜单中选择vcs→git→pus
点击“Define remote”链接,配置https形式的URL,git形式的无法通过。然后点击OK
点击“push”按钮就讲本地仓库推送到远程,如果是第一次配置推送需要输入github的用户名和密码
4.3 从远程仓库克隆
关闭工程后,在idea的欢迎页上有“Check out from versioncontrol”下拉框,选择git
此处仍然推荐使用htts形式的url,点击“test”按钮后显示连接成功。
点击OK按钮后根据提示将远程仓库克隆下来,然后导入到idea中
4.4 从服务端拉去代码
如果需要从服务端同步代码可以使用工具条中的“update” 按钮
四、怎样在GitHup上找到自己感兴趣的开源项目
- 搜索词之间用空格隔开
- 按照项目名/仓库名称搜索(大小写不敏感)
in:name xxx - 按照README搜索(大小写不敏感)
in:description xxx - stars数大于xxx
stars:>xxx - forks数大于xxx
forks:>xxx - 编程语言为xxx
language:xxx - 最新更新时间晚于YYYY-MM-DD
pushed:>YYYY-MM-DD
Git以及Githup的使用相关推荐
- git 命令 githup
文章目录 前言 一.Git 常用命令 二 创建完成仓库再次提交 git / githup 可以用 vscode 提交代码 vscode找到当前要提交的根目录,打开终端 在终端右上角有一个下拉框,可以切 ...
- Githup邀请多人协作开发,某个人push的时候,显示remote:Permission to XXX/XXX.git denied to XXX
这是因为没有邀请他一起协作,或是邀请他一起协作了,但没把邀请链接发给他,没有得到他的协作同意. 首先,打开Githup账号,看下你有没有邀请他们一起协作?Settings--->Manage a ...
- 前端、git入门至常用指令
谈git首先要谈到svn.SVN是比git诞生更早.所以最核心的区别Git是分布式的,而Svn不是分布的.能理解这点,上手会很容易.用git就首先要明白git命令.下面是我自己整理经常使用到的git命 ...
- git fetch和git pull之间的区别--转载
原文地址:http://blog.csdn.net/a19881029/article/details/42245955 git fetch和git pull都可以用来更新本地库,它们之间有什么区别呢 ...
- hexo+githup搭建属于自己的博客
hexo+githup搭建属于自己的博客 第一次搭建博客,遇到不少坑.CSDN.bing.谷歌.百度上都有大神的博客教授如何一步一步搭建属于自己的博客.不过我毕竟属于小白,文字有时给我的感受不是那么的 ...
- python 版本控制及django,git的使用
一.安装pyenv 安装pyenv首先安装好python编译需要的rpm包环境: yum install readline readline-devel readline-static -y yum ...
- 上传本地项目到githup(githup改版后将master改为main)
从2020.10githup官方给出,将master改为main,导致我们在上传项目时,容易把项目依然提交到master分支,导致进入该repository时显示main分支,且为空的.为了避免一进入 ...
- ftp、go-fastdfs、HelpManual、redis、git、ngnix
-----------------------------------------1.创建FTP服务器的两种方法----------------------------------------- 本文 ...
- git使用及上传代码到github
git使用及上传代码到githup git使用 git安装 git上传代码到github git commit之后想要撤销 不删除工作空间改动代码,撤销commit,不撤销git add . git使 ...
- docker 中安装Jenkins-Jenkins持续化集成(GIT/maven/钉钉机器人)详细步骤
Dokcker 中jenkins容器配置发布连接应用服务器 docker安装jenkins 如:192.168.86.129服务器中docker 部署jenkins >> 1. 拉取镜像 ...
最新文章
- 一个肯德基拖着6个“拖油瓶”的百胜中国,如何赢下中国市场?
- centos下redis安装
- 腾讯从百度挖来的AI Lab负责人张潼离职,要去阿里?...
- Shell 编程基础之 Case 练习
- Tensorflow object detection API 搭建自己的目标检测模型并迁移到Android上
- free() 是如何释放不同内存区块大小的指针?
- php显示当前访问人数,PHP与jquery实时显示网站在线人数实例详解
- 2012、12、17
- 如何远程连接软件加密狗
- 会员等级图标js脚本
- 科普|股东需要对企业债务承担连带责任
- android版本5.1下载,嘉兴禾点点下载-禾点点 安卓版v5.1.1-PC6安卓网
- Inventory文件扩展
- 陈丹琦 关系抽取 2020 sota ner
- ChatGPT介绍世界杯历史与编写足球游戏python程序
- 探店通系统,短视频矩阵源码,抖音矩阵系统,look
- 最坏适应算法c语言源码,首次适应算法,最佳适应算法,最坏适应算法源代码
- 硫酸软骨素-聚乙二醇-卵清蛋白,Chondroitin sulfate-PEG-OVA/Ovalbumin
- rtx2060为什么叫智商卡_二哈拆家,却把自己卡在了沙发里,智商确实令人捉急...
- latex 调整表格的行高_latex表格大小调整
热门文章
- IT男不得不看的影视剧---《数字追凶》
- ubuntu18.04清理磁盘空间
- 【正一专栏】阿根廷和葡萄牙都进不了世界杯可能吗?
- Leetcode995 Minimum Number of K Consecutive Bit Flips解决方案
- js浏览器 文本语音播报
- opencv实现图片及视频流(摄像头)的人脸检测
- word论文封面下划线对齐
- mw150r 虚拟服务器,水星MW150R V1.3路由器刷DD-WRT使用WIWIZ或wifiap做web认证登录
- python docx 表格复制粘贴_python Word 表格转 Excel
- 快速查看本机公网IP地址