300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Git基础使用(包括Git安装 idea集成git和github gitlib)

Git基础使用(包括Git安装 idea集成git和github gitlib)

时间:2024-06-16 19:33:27

相关推荐

Git基础使用(包括Git安装 idea集成git和github gitlib)

Git基础知识

Git优点安装git基础概念版本控制工具集中式版本控制工具分布式版本控制工具构架仓库git文件的三种状态git项目的三个工作区常用命令基础配置为常用指令配置别名解决GitBash乱码问题基本语法用户信息配置查看版本初始化本地库查看本地库状态新建一个hello.txt再次查看状态添加暂存区添加暂存区后查看状态git add . 和 git add * 区别提交本地库提交本地库后查看状态修改文件hello.txt+再次查看文件状态将修改的文件再次添加暂存区再次提交查看历史版本版本穿梭分支分支的好处分支的操作查看分支创建分支切换分支使用dev分支修改hello.txt并提交分支提交日志分支合并从dev分支切换到主分支把dev分支的内容合并到主分支上产生冲突首先是主分支修改hello.txt切换到dev分支也做修改切换到主分支合并dev分支冲突产生的原因:解决冲突手动打开hello.txt执行提交(注意:此时使用 git commit 命令时不能带文件名)最后查看合并后的文件删除分支远程仓库操作创建远程仓库别名推送本地分支到远程仓库拉取远程库到本地克隆远程仓库到本地小结:clone 会做如下操作。1、拉取代码。2、初始化本地仓库。3、创建别名,并且别名默认为originSSH 免密登录进入当前用户家目录--运行命令生成.ssh 秘钥目录[注意:这里-C 这个参数是大写的 C]idea集成git创建忽略规则文件git.ignore在.gitconfig 文件中引用忽略配置文件(此文件在 Windows 的家目录中)idea设置初始化本地库添加暂存区直接在项目上进行添加所有到缓冲区提交到本地库提交成功后可以看到颜色又恢复正常了切换版本创建分支切换分支idea右下角也可以直接创建分支和切换分支合并分支解决冲突IDEA 集成 GitHubtoken方式登录分享工程到github上面去push 推送本地库到远程库pull 拉取远程库到本地库clone 克隆远程库到本地码云的使用码云复制github项目github搜索项目

Git

Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具

优点

速度快简单的设计对非线性开发模式的强力支持(允许上千个并行开发的分支)完全分布式有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

安装git

选择 Git 安装位置,要求是非中文并且没有空格的目录(可以自己选择位置),然后下一步

Git 选项配置,推荐默认设置,然后下一步。

Git 的默认编辑器,建议使用默认的 Vim 编辑器,然后点击下一步。

默认分支名设置,选择让 Git 决定,分支名默认为 master,下一步。

修改 Git 的环境变量,选第一个,不修改环境变量,只在 Git Bash 里使用 Git。

选择后台客户端连接协议,选默认值 OpenSSL,然后下一步

配置 Git 文件的行末换行符,Windows 使用 CRLF,Linux 使用 LF,选择第一个自动转换,然后继续下一步。

选择 Git 终端类型,选择默认的 Git Bash 终端,然后继续下一步

选择 Git pull 合并的模式,选择默认,然后下一步。

选择 Git 的凭据管理器,选择默认的跨平台的凭据管理器,然后下一步。

其他配置,选择默认设置,然后下一步。

实验室功能,技术还不成熟,有已知的 bug,不要勾选,然后点击右下角的 Install按钮,开始安装 Git。

基础概念

版本控制工具

集中式版本控制工具

集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新

好处

每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易

坏处

是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作

分布式版本控制工具

像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。

分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:

服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

构架

版本库:工作区中有一个隐藏目录.git,这个目录不属于工作区,而是git的版本库,是git管理的所有内容

暂存区:版本库中包含一个临时区域,保存下一步要提交的文件。

分支:版本库中包含若干分支,提交的文件存储在分支中

仓库

对应的就是一个目录,这个目录中的所有文件被git管理起来。

以后会将一个项目的根目录,作为仓库。

仓库中的每个文件的改动都由git跟踪。

有两种取得 Git 项目仓库的方法。第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库。第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来。

git文件的三种状态

git项目的三个工作区

常用命令

基础配置

为常用指令配置别名

有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名。

打开用户目录

部分

windows系统不允许用户创建点号开头的文件,可以打开gitBash,执行

touch ~/.bashrc

在.bashrc文件中输入如下内容:

#用于输出git提交日志alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'#用于输出当前目录所有文件及基本信息alias ll='ls -al'

打开gitBash,执行

source ~/.bashrc

解决GitBash乱码问题

打开GitBash执行下面命令

git config --global core.quotepath false

找到git的安装目录 ${git_home}/etc/bash.bashrc文件最后加入下面两行

export LANG="zh_CN.UTF-8"export LC_ALL="zh_CN.UTF-8"

基本语法

用户信息配置

第一个要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录:

git config --global user.name "xxx" #名称git config --global user.email "xxx.@" #邮箱git config -l #查看信息git config --global --list

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的仓库都会默认使用这里配置的用户信息。如果要在某个特定的仓库中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前仓库的 .git/config 文件里。

签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git 首次安装必须设置一下用户签名,否则无法提交代码。

※注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。

查看版本

git version #查看git版本

初始化本地库

git init

查看本地库状态

git status

新建一个hello.txt

再次查看状态

添加暂存区

git add 文件名

但是一般都会使用

git add .

添加暂存区后查看状态

git add . 和 git add * 区别

git add . :会把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤git add * :会忽略.gitignore把任何文件都加入

提交本地库

git commit -m "日志信息" 文件名

提交本地库后查看状态

修改文件hello.txt+再次查看文件状态

将修改的文件再次添加暂存区

再次提交

查看历史版本

git reflog 查看版本信息git log 查看版本详细信息

参数

–all 显示所有分支–pretty=oneline 将提交信息显示为一行–abbrev-commit 使得输出的commitId 更简短–graph 以图的形式显示

版本穿梭

git reset --hard 版本号

分支

分支,是一个个版本的最终存储的位置

分支,就是一条时间线,每次 git commit 形成一个个版本,存储在分支的一个个提交点

分支由多个提交点组成,分支上会有一个指针,默认总是指向最新的提交点

分支的好处

同时并行推进多个功能开发,提高开发效率。

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可

分支的操作

查看分支

git branch -v #查看本地所有分支,带*的是当前分支git branch -r # 列出所有远程分支

仓库中默认只有master分支

执行git commit时,默认是在master分支上保存版本。

在商业项目开发过程中,我们不会轻易的在master分支上做操作。

当代码确实没有问题时,才会将开发分支上成熟的代码版本添加到master分支上。

保证开发过程中,可以及时记录版本,又保证master分支上每个提交点都是稳健版本。

创建分支

git branch 分支名git branch dev #创建名字为dev的分支

默认情况下,当前使用的分支是master分支

可以切换到dev分支,则后续的git commit便会在dev分支上新建版本(提交点)

切换分支

git checkout 分支名git checkout dev #从主分支切换到dev分支

使用dev分支修改hello.txt并提交

分支提交日志

git log --oneline #简易日志

git log #完整日志

分支合并

两个分支内容的合并

git merge分支a合并分支a

git merge 分支名 #合并指定分支到当前分支

从dev分支切换到主分支

把dev分支的内容合并到主分支上

合并的方式有两种:快速合并和三方合并。

8.4.1快速合并

如果分支A当前的修改,是完全基于分支B的修改而来,则B分支合并A分支,就是移动指针即可。

三方合并

在不具备快速合并的条件下,会采用三方合并。

两个分支进行合并,但它们含有对同一个文件的修改,则在合并时出现冲突,git无法决断该保留改文件哪个分支的修改。

出现冲突后,如要由两个开发人员当面协商,该如何取舍,为冲突文件定义最终内容。

解决方案:

1.保留某一方的,删除另—方的

2.保留双方的

3.但无论如何,要记得删除<<<<=三== >>>>这些

4.本质是两人协商为冲突的内容,定制出合理的内容。

5.协商后,需要再次提交修改后的内容

产生冲突

首先是主分支修改hello.txt

切换到dev分支也做修改

切换到主分支合并dev分支

冲突产生的表现:后面状态为 MERGING

冲突产生的原因:

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替

我们决定使用哪一个。必须人为决定新代码内容

解决冲突

编辑有冲突的文件,删除特殊符号,决定要使用的内容

特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> dev

手动打开hello.txt

修改完后保存退出

执行提交(注意:此时使用 git commit 命令时不能带文件名)

最后查看合并后的文件

删除分支

git branch -d 分支名

删除远程分支

git push origin --delete 分支名git branch -dr 分支名

远程仓库操作

创建远程仓库别名

git remote -v 查看当前所有远程地址别名git remote add 别名 远程地址

推送本地分支到远程仓库

git push 别名 分支

拉取远程库到本地

git pull 远程库地址别名 远程分支名

克隆远程仓库到本地

git clone 远程地址

小结:clone 会做如下操作。1、拉取代码。2、初始化本地仓库。3、创建别名,并且别名默认为origin

SSH 免密登录

我们可以看到远程仓库中还有一个 SSH 的地址,因此我们也可以使用 SSH 进行访问。

进入当前用户家目录

–运行命令生成.ssh 秘钥目录[注意:这里-C 这个参数是大写的 C]

ssh-keygen -t rsa -C 1106649325@敲3个回车复制 id_rsa.pub 文件内容

接下来再往远程仓库 push 东西的时候使用 SSH 连接就不需要登录了。

在工作目录中初始化新仓库

要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行:

git init # 在当前目录新建一个Git代码库

2、执行后可以看到,仅仅在项目目录多出了一个.git目录,关于版本等的所有信息都在这个目录里面。

克隆远程仓库

# 克隆一个项目和它的整个代码历史(版本信息)$ git clone [url]

Git 仓库基础操作

1.初始化一个Git仓库

git init#初始化一个Git仓库

2.将文件添加到Git的暂存区

git add . #可以将当前仓库的所有改动加到暂存区

3.查看仓库状态

git status #可以看到工作区中文件的状态

4.从Git的暂存区提交版本到仓库,参数-m后为当次提交的备注信息

git commit -m "备注信息xxx" #将暂存区的文件存入分支形成版本

5.将本地的Git仓库信息推送上传到服务器

git push /***/test.git

6.查看git提交的日志

$ git log

Git关联远程仓库

git remote add origin [url] #关联远程仓库

查看远程仓库地址

git remote -v #查看远程仓库地址

推送文件到远程仓库

将本地仓库以及commit的内容推送到远程仓库,共享自己的代码

git push -u origin master 将本地的master分支上传到远程master分支

克隆远程仓库

如果仓库已由别人创建完毕,我们需要其中的内容,则可以通过 git clone 将其复制到本地

git clone [url]

代码共享

多人协同开发时,写好的代码git push 上传到远程仓库,需要代码的git pull拉取

git pull origin master #拉取远程的master分支内容

idea集成git

创建忽略规则文件git.ignore

这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig 文件引用,建议也放在用户家目录下

git.ignore 文件模版内容如下:

# Compiled class file*.class# Log file*.log# BlueJ files*.ctxt# Mobile Tools for Java (J2ME).mtj.tmp/# Package Files #*.jar*.war*.nar*.ear*.zip*.tar.gz*.rar# virtual machine crash logs, see /en/download/help/error_hotspot.xmlhs_err_pid*.classpath.project.settingstarget.idea*.iml

在.gitconfig 文件中引用忽略配置文件(此文件在 Windows 的家目录中)

[user]name = dykemail = 1106649325@[core]excludesfile = C:/Users/Dell/git.ignore注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”

idea设置

初始化本地库

添加暂存区

右键点击项目选择 Git -> Add 将项目添加到暂存区

直接在项目上进行添加所有到缓冲区

提交到本地库

提交成功后可以看到颜色又恢复正常了

切换版本

在 IDEA 的左下角,点击 git,然后点击 Log 查看版本

创建分支

切换分支

idea右下角也可以直接创建分支和切换分支

合并分支

在 IDEA 窗口的右下角,将 dev分支合并到当前 master 分支。

还是点击右下角的分支

如果代码没有冲突,分支直接合并成功,分支合并成功以后,代码自动提交,无需手动提交本地库

合并后结果:

解决冲突

IDEA 集成 GitHub

token方式登录

首先要在github上生成token口令

分享工程到github上面去

push 推送本地库到远程库

注意:push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,

push 的操作是会被拒绝的。也就是说,要想 push 成功,一定要保证本地库的版本要比远程

库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地

代码的区别!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地

代码更新到最新以后,然后再修改,提交,推送!

pull 拉取远程库到本地库

注意:pull 是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动

合并,如果自动合并失败,还会涉及到手动解决冲突的问题

clone 克隆远程库到本地

码云的使用

基本和github相同,但是idea要下一个gitee的插件

码云复制github项目

码云提供了直接复制 GitHub 项目的功能,方便我们做项目的迁移和下载。

因为github是国外的服务器。所以下载很慢我们用码云通不过来再通过码云下载速度就快很多

具体操作如下:

github搜索项目

文档链接

in:name example名字中有“example”in:readme examplereadme中有“example”in:description example描述中有“example”stars:>1000star>1000forks:>1000fork>1000pushed:>-09-019月1日后有更新的language:java用Java编写的项目

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。