Git是一个免费的、开源的分布式版本控制系统 ,可以快速高效地处理从小型到大型的各种项目
Git易于学习,占地面积小,性能 极快 。 它具有廉价的本地 库 ,方便的暂存区域和多个工作
流分支等特性。 其性能优于 Subversion、 CVS、 Perforce和 ClearCase等 版本控制 工具。
官网地址:http://git-scm.com/
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库
➢ 局域网
➢ 互联网
最好安装在自己电脑开发或者环境目录下
Git 选项配置,推荐默认设置,然后下一步。
Git安装目录名,不用修改,直接点击下一步。
Git 的默认编辑器,建议使用默认的 Vim 编辑器,然后点击下一步。
默认分支名设置,选择让Git决定,分支名默认为 master,下一步。
调整你的 path 环境变量,这里选择的是第二种的推荐方式
第一种是仅从 Git Bash 使用 Git。这个的意思就是你只能通过 Git 安装后的 Git Bash 来使用 Git ,其他的什么命令提示符啊等第三方软件都不行。
第二种是从命令行以及第三方软件进行 Git。这个就是在第一种基础上进行第三方支持,你将能够从 Git Bash,命令提示符(cmd) 和 Windows PowerShell 以及可以从 Windows 系统环境变量中寻找 Git 的任何第三方软件中使用 Git。推荐使用这个。
第三种是从命令提示符使用 Git 和可选的 Unix 工具。选择这种将覆盖 Windows 工具,如 “ find 和 sort ”。只有在了解其含义后才使用此选项。一句话,适合比较懂的人折腾。
选择后台客户端连接协议,选默认值OpenSSL,然后下一步。
配置Git文件的行末换行符, Windows使用 CRLF Linux使用 LF,选择第一个自动转换,然后继续下一步。
选择Git终端类型,选择默认的 Git Bash终端,然后继续下一步。
选择Git pull合并的模式,选择默认,然后下一步。
选择Git的凭据管理器,选择默认 的跨平台的凭据管理器 ,然后下一步 。
其他配置,选择默认设置,然后下一步。
实验室功能,技术还不成熟, 有已知的 bug,不要勾选,然后点击右下角的 Install按钮,开始安装 Git
点击Finsh按钮, Git安装成功!
右键任意位置,在右键菜单里选择Git Bash Here即可打开 Git Bash命令行终端。在Git Bash终端里输入 git --version
查看 git版本,如图所示,说明 Git安装成功。
命令名称 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户签名 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m " 日志信息 " 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard 版本号 | 版本穿梭 |
基本语法
git config --global user.name
用户名git config --global user.email
邮箱查看
在C:\Users\扶苏目录下下有个 .gitconfig
文件,打开里面就是我们设置的用户签名
说明:
签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。
注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。
基本语法:git init
在项目目录下,右键打开git bash即可进入该目录,使用命令git init可以创建本地库
基本语法:git add 文件名 或者用 git add .
. 表示全部
基本语法:git commit -m "日志信息" 文件名
若是所有文件就不指定文件名
git commit -m “first commit”
提交完可以使用git status
查看状态,可以使用git reflog
查看历史记录(包含版本号的前七位),git log
查看完整日志信息
语法:vim 文件名
提交后查看状态
基本语法:
git reflog
查看版本信息git log
查看版本详细信息语法:git reset --hard 版本号
Git 切换版本,底层其实是移动的HEAD 指针,具体原理如下图所示
HEAD 指针指向 master 分支,master分支指向 first 版本,
之后有了 second 版本,master 指针指向 second 版本
如果我们想穿越回去,只需要让 master 指针指向 first 版本或者 second 版本
命令名称 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
基本语法:git branch -v
基本语法:git branch 分支名
基本语法:git checkout 分支名
基本语法:git merge 分支名
,
将指定分支合并到当前分支
git checkout master
git merge hot-fix
cat hello.txt
冲突产生的原因:
例如,我们首先在 master 分支的倒数第二行进行修改,并将其添加到暂存区,再提交到本地库
接着,我们去 hot-fix 分支的倒数第一行进行修改,并将其添加到暂存区,再提交到本地库
之后我们在 master 分支上合并 hot-fix 分支,发现产生冲突
编辑有冲突的文件,删除特殊符号,决定要使用的内容
特殊符号:<<<<<< HEAD
当前分支的代码 =======
合并过来的代码 >>>>>>>hot-fix
删除完成之后保存,再次添加到暂存区,并再次提交到本地库(注意:此时使用 git commit 命令时候不能带文件名)
创建分支和切换分支图解
master、hot-fix 其实都是指向具体版本记录的指针。当前所在的分支,其实是由 HEAD 决定的。所以创建分支的本质就是多创建一个指针。
HEAD 如果指向 master,那么我们现在就在 master 分支上。
HEAD 如果执行 hotfix,那么我们现在就在 hotfix 分支上
令狐冲请东方不败改代码,东方不败通过 fork 命令从岳不群的的远程库中拿取代码,再通过 clone 克隆命令到自己的本地库,修改完成后使用 push 推送到在自己的远程库,使用 Pull request 拉取请求给岳不群,岳不群审核完成后使用 merge 命令合并对方的代码到自己的远程库中,再通过 pull 命令到自己的本地库中,这样修改过后的华山剑法岳不群和令狐冲就都可以使用了。
GitHub 网址:https://github.com
命令名称 | 作用 |
---|---|
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程地址 | 起别名 |
git push 别名 分支 | 推送本地分支上的内容克隆到本地 |
git clone 远程地址 | 将远程仓库的内容克隆到本地 |
git pull 远程库地址别名 远程分支名 | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
基本语法:
git remote -v
查看当前所有远程地址别名git remote add 别名 远程地址
起别名注意:起的别名最好和本地库的名称一致
基本语法:git push 别名 分支
没有起别名可以直接用链接
第一个选项是通过浏览器的账号登录,本次使用第二种方式,with a code
登录成功授权后
语法:git pull 别名 分支
基本语法:git clone 远程地址
我们另一台用户需要克隆我们的远程仓库到他的本地库,由于是使用一台电脑模拟,所以在克隆之前需要在 凭据管理器下删除我们之前的 git 凭据
我们新建一个文件夹 git-clone,然后在此文件夹下右键 git bash here,之后进行克隆
克隆完成后初始化本地仓库
clone 会做如下操作。1、拉取代码。2、初始化本地仓库。3、创建别名
选择邀请合作者
复 制 地 址 并 通 过 微 信 钉 钉 等 方 式 发 送 给 该 用 户 , 复 制 内 容 如 下 : https://github.com/atguiguyueyue/git-shTest/invitations
接收邀请的人在自己账号中的地址栏,粘贴链接点击接收邀请
成功之后可以 这个账号上看到 guli_parent1 的远程仓库。
此时可以进行推送代码等操作
将远程仓库的地址复制发给邀请跨团队协作的人,比如东方不败。
在 东方不败的 GitHub账号里的地址栏复制收到的链接,然后点击 Fork将项目叉到自己的仓库
此时东方不败的账号就有一个仓库,此时可以clone后在本地改
东方不败可以在线编辑叉取过来的文件。编辑完毕后,填写描述信息并点击左下角绿色按钮提交。
此时可以点击Pull Request按钮
点击new pull request
创建后,在主账号中看到Pull Request按钮中有提示,点开看
审核后可以合并代码
在 C盘 User 自己的账户下右键 git bash here,ssh-keygen -t rsa -C 自己的邮箱签名
C:\Users\扶苏
这样就会生成 .ssh 文件夹,里面有私钥和公钥
进入.ssh目录复制公钥
复制公钥,打开github,在设置中,打开SSH
这样我们可以借助 ssh 链接来拉取和推送代码,并且不需要进行登录
我们的Eclipse 、IDEA都会生成一些无关文件,如图
我们之所以要忽略他们,是因为他们与项目的实际功能无关,不参与服务器上部署运行。如何忽略他们?
创建忽略规则文件 xxxx.ignore(前缀名随便起,建议是 git.ignore)
这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig 文件引用,建议也放在用户家目录下
C:\Users\扶苏
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (
.mtj.
# Package Files
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see
http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
在 .gitconfig 文件中引用忽略配置文件(.gitconfig 在家目录中)
注意复制路径时要改反斜杠
[core]
excludesfile = C:/Users/Augenestern/git.ignore
在 IDEA 里面定位
点击VCS
默认创建的 git 仓库就是我们打开的项目所在的目录,我们添加了 git 仓库之后
添加到暂存区就变为了绿色,我们可以写些代码,然后将 project 添加到暂存区
我们添加到暂存区,再接着进行提交到本地库
之后代码文件都会变成正常黑色
我们修改 GitTest 中的代码,再次添加暂存区(已经追踪过(就是已经添加过暂存区的)的文件也可以不用),提交到本地库
在IDEA的左下角,点击 Git,然后点击 Log查看版本,右键选择要切换的版本,然后在菜单里点击 Checkout Revision
右键项目 -> Git -> Branches
在弹出的Git Branches框里 点击 New Branch按钮。
填写分支名称
然后再 IDEA的右下角看到 hot-fix,说明分支创建成功,并且当前已经切换成 hot-fix
在IDEA窗口的右下角,切换到 master分支 。
在IDEA窗口的右下角,将 hot-fix分支合并到当前 master分支。
如果代码没有冲突,分支直接合并成功,分支合并成功以后,代码自动提交,无需手动提交本地库
如图所示,如果master分支和 hot-fix分支都修改了代码,在合并分支的时候就会发生冲突。
我们现在站在master分支上合并 hot-fix分支,就会发生代码冲突。
点击 Conflicts框里的 Merge按钮,进行手动合并代码。
点击这两个X后进行合并,手动合并完代码以后,点击右下角的 Apply按钮。代码冲突解决,自动提交本地库。
打开设置
点击add Acount后弹窗
也可以使用Token和账号密码登录,但是一般账号密码登录不进,所以使用Token,在Github的Settings中,找到Developer Settings,点击Personal access tokens,生成新口令,取名,权限拉满,复制口令(刷新就没了)
右键点击项目,可以将当前分支的内容 push 到 GitHub的远程仓库中 。
先修改,然后提交,再push
使用ssh进行push
成功
注意:push是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push的操作是会被拒绝的。也就是说, 要想 push成功,一定要保证本地 库的版本要比远程库的版本高! 因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先 pull拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!
因为前面push了代码了,现在把本地的代码文件夹直接删掉,然后打开IDEA,选择
选择Git,用ssh链接
众所周知,GitHub 服务器在国外,使用 GitHub 作为项目托管网站,如果网速不好的话, 严重影响使用体验,甚至会出现登录不上的情况。针对这个情况,大家也可以使用国内的项 目托管网站-码云
码云是开源中国推出的基于 Git 的代码托管服务中心,网址是 https://gitee.com/ ,使用 方式跟 GitHub 一样,而且它还是一个中文网站,如果你英文不是很好它是最好的选择。
注册成功后登录
点击首页右上角的加号,选择下面的新建仓库
填写仓库名称,路径和选择是否开源(共开库或私有库)
最后根据需求选择分支模型,然后点击创建按钮。
Idea 默认不带码云插件,我们第一步要安装 Gitee插件。
安装完成重启 IDEA 即可
Idea连接码云和连接 GitHub几乎一样,首先在 Idea里面创建一个工程,初始化 git工程,然后将代码添加到暂存区,提交到本地库。
在上方栏目Git中选择Share
当然我们也可以自己在码云Gitee上创建远程库,然后获取到远程库的 HTTPS/SSH 链接,将我们的代码 push 即可
自定义远程库链接: Define remote,给远程库链接定义个 name,然后再 URL里面填入码云远程库的 HTTPS链接即可,码云服务器在国内,用 HTTPS 链接即可,没必要用 SSH 免密链接
我们在远程库修改代码,然后使用本地库 pull 拉取远程库的代码
与GitHub一模一样
码云提供了直接复制 GitHub 项目的功能,方便我们做项目的迁移和下载 。
将 GitHub的远程库 HTTPS链接复制过来,点击创建按钮即可。
如果GitHub项目更新了以后,在码云项目端可以手动重新同步,进行更新!