1 一般工作流程
1.从远程仓库中克隆 Git 资源作为本地仓库。
2.从本地仓库中checkout代码然后进行代码修改
3.在提交前先将代码提交到暂存区。
4.提交修改。提交到本地仓库。本地仓库中保存修改的各个历史版本。
5.在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库。
2 文件状态
Git工作目录下的文件存在两种状态:
untracked 未跟踪(未被纳入版本控制)
tracked 已跟踪(被纳入版本控制)
Unmodified 未修改状态
Modified 已修改状态
Staged 已暂存状态
这些文件的状态会随着我们执行Git的命令发生变化
3 本地仓库操作
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息
设置用户信息
git config --global user.name “itcast”
git config --global user.email “hello@itcast.cn”
查看配置信息
git config --list
git config user.name
通过上面的命令设置的信息会保存在~/.gitconfig文件中
获取Git仓库
获取Git仓库通常有两种方式:
在本地初始化一个Git仓库
从远程仓库克隆
git status 查看文件状态
也可以使用git status –s 使输出信息更加简洁
git add 将未跟踪的文件加入暂存区
将新创建的文件加入暂存区后查看文件状态 git status –s
git reset 将暂存区的文件取消暂存
git commit -m "head" hello.txt 将暂存区的文件修改提交到本地仓库 需要 -m 写日志 不加-m会打开vim编辑器编写
commit前需要add进暂存区 add需要具体文件名不要也行 commit不需要
git rm 删除文件 只是删除工作区文件而且进暂存区了 工作区指文件夹 中间隔一个暂存区 本地版本库指git记录的
上面删除的只是工作区的文件,需要提交到本地仓库
直接用delete删除文件 需要加入暂存区后才可提交
将文件添加至忽略列表
一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文
件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以在工作目录中创建一个名为
.gitignore 的文件(文件名称固定),列出要忽略的文件模式。
.gitignore 的文件(文件名称固定),列出要忽略的文件模式。
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf
touch .gitignore #.class
git log 查看日志记录 q退出界面
4 远程仓库操作
查看远程仓库 git remote git remote -v git remote show origin
如果想查看已经配置的远程仓库服务器,可以运行 git remote 命令。 它会列出指定的每一个远程服务器的简写。
如果已经克隆了远程仓库,那么至少应该能看到 origin ,这是 Git 克隆的仓库服务器的默认名字
添加远程仓库 可以指定多个远程仓库
运行 git remote add 添加一个新的远程 Git 仓库,同时指定一个可以引用的简写
git remote add origin https://gitee.com/ajj98ajj/repo1.git
git remote add myremote https://gitee.com/ajj98ajj/my-repo1.git
从远程仓库克隆
当你执行 git clone 命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。
移除无效的远程仓库
git remote rm myremote
此命令只是从本地移除远程仓库的记录,并不会真正影响到远程仓库
从远程仓库中抓取与拉取
git fetch 是从远程仓库获取最新版本到本地仓库,不会自动merge
git pull 是从远程仓库获取最新版本并merge到本地仓库
git fetch origin master origin 远程仓库地址 master分支 没有合并到工作区
git merge origin/master 把远程仓库origin/master 分支合并到工作区
git pull origin master == fetch + merge
注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件(且进行过commit),此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories),解决此问题可以在git pull命令后加入参数--allow-unrelated-histories
推送到远程仓库
当你想分享你的代码时,可以将其推送到远程仓库。 命令形式:git push [remote-name][branch-name]
git push origin master
5 分支
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。Git 的master分支并不是一个特殊分支。 它跟其它分支没有区别。 之所以几乎每一个仓库都有master 分支,是因为git init 命令默认创建它,并且大多数人都懒得去改动它。
查看分支
# 列出所有本地分支
$ git branch -- master
# 列出所有远程分支
$ git branch -r -- origin/master
# 列出所有本地分支和远程分支
$ git branch -a
创建分支
git branch b1
git branch b2
切换分支
git checkout b1
本地推送至远程仓库分支
git push origin b1
git push origin b2
合并分支
git merge b1 b1分支内容合并到master分子 当前在master分支下
有时候合并操作不会如此顺利。 如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git就没办法合并它们,同时会提示文件冲突。此时需要我们打开冲突的文件并修复冲突内容,最后执行git add命令来标识冲突已解决
手动删除、保留所需要内容 之后git add User.java
git push origin master -- 本地master分支推到远程仓库
删除分支
git branch -d b1
如果要删除的分支中进行了一些开发动作,且没有推送到远程或没有合并到其他分支,此时执行上面的删除命令并不会删除分支,如果坚持要删除此分支,可以将命令中的-d参数改为-D
如果要删除远程仓库中的分支,可以使用命令git push origin –d branchName
工作场景如下: 创建分支以当前分支为基础进行创建
开发某个网站。
为实现某个新的需求,创建一个分支。
在这个分支上开展工作。
正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。 你将按照如下方式来处理:
切换到你的线上分支(production branch)。
为这个紧急任务新建一个分支,并在其中修复它。
在测试通过之后,切换回线上分支,然后合并这个修补分支,最后将改动推送到线上分支。
切换回你最初工作的分支上,继续工作。
6 标签
Git标签 分支为动态的往前推进 标签为静态的,不会改变了
像其他版本控制系统(VCS)一样,Git 可以给历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 、v1.2等)。标签指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态。
列出已有的标签
# 列出所有tag
$ git tag
# 查看tag信息
$ git show [tag]
创建新标签
# 新建一个tag
$ git tag [tagName] -0.1
将标签推送至远程仓库
# 提交指定tag
$ git push [remote] [tag]
git push origin v0.1
检出标签
# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]
git checkout -b b3 v1.0
删除标签
# 删除本地tag
$ git tag -d [tag]
# 删除远程tag
$ git push origin :refs/tags/[tag]
7 TortoiseGit
TortoiseGit是一款开源的Git图形界面工具,使用TortoiseGit可以简化Git相关的操作(本质上还是执行的Git相关命令)。
创建仓库
克隆仓库
将文件添加到暂存区
提交文件
推送本地仓库至远程仓库
拉取代码
创建分支
切换分支
合并分支
推送分支至远程仓库
8 IDEA
在IDEA中使用Git
在IDEA中配置Git
安装好IntelliJ IDEA后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。
选择File→Settings打开设置窗口,找到Version Control下的git选项:
在IDEA中创建工程并将工程添加至Git
将文件添加到暂存区
提交文件
将代码推送到远程仓库
从远程仓库克隆工程到本地
从远程拉取代码
版本对比
创建分支
切换分支
分支合并
9 SSH协议
由于Git的远程仓库并不在我们本地,当我们在使用远程仓库的时候(例如克隆、拉取、推送)就会涉及到数据的网络传输,Git支持多种数据传输协议
本地协议(Local)
HTTPS 协议
SSH(Secure Shell)协议
Git 协议
SSH 为 Secure Shell(安全外壳协议)的缩写,由 IETF 的网络小组(Network Working Group)所制定。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
由于本地Git仓库和远程仓库之间的传输是通过SSH加密的,所以必须要让远程仓库服务器认证你的SSH key,在此之前,必须要生成SSH key。
使用ssh协议通信时,推荐使用基于密钥的验证方式。你必须为自己创建一对密匙(公钥和私钥),并把公匙放在需要访问的服务器上。
可以使用Git提供的命令行工具Git Bash生成公钥和私钥,具体操作过程如下:
1、使用命令ssh-keygen –t rsa生成公钥和私钥,执行完成后在window本地用户.ssh目录C:\Users\用户名\.ssh下面生成如下名称的公钥和私钥
2、复制公钥文件内容至码云服务器