目录
来了来了!,它终于来了,心心念念的Git使用复习总结~废话不多说,开始吧!
一、Git是什么以及相关概念?
Git是在2005年,Linux系统的创建者Linus Torvalds,为了帮助全球的开发者,维护Linux系统内核的开发 而开发了自己的开源分布式版本控制工具,分为两种类型的仓库:本地仓库和远程仓库。简单一句话:就是一个分布式版本管理工具。
对了要知道git出众于其他版本控制工具的原因就是快照。每次提交更新,或在 Git 中保存项目状态时, 它主要对当时的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 在进行提交操作时Git 会保存一个提交对象(commit object),Git更像是一个小型的文件系统。
相关概念: 工作区:就是工作的文件目录,开发中就是代码存放的位置。特点就是经常改动(增删文件和内容)。
暂存区:文件提交到本地仓库之前的临时存储空间,可以理解为缓存区。通过输入命令:git add 被改动过的文件名
,此次改动就将工作目录中的文件放到了 ‘暂存区’。
Git仓库:用来保存项目的元数据和对象数据库。克隆仓库时,拷贝的就是这里的数据。即.git
目录
本地仓库(简称:本地):存放各个不同提交版本的文件或代码输入命令:git commit -m 加上此次修改的描述
,此次改动就放到了 ’本地仓库’,每个 commit,我叫它为一个 ‘版本’。
远程仓库(简称:远程):本质就是部署在公网上的一个网站(例如GitHub,码云等),可以将本地仓库的文件提交到远程仓库中保管。也可将远程仓库的文件拉取或更新到本地。
三种状态: 已提交(Committed):数据已经安全的保存在本地数据库中。
已修改(modified):修改了文件,但还没有保存到数据库中。
已暂存(staged):对一个已经修改的文件的当前版本做了标记,使之包含在下次提交的快照中。
分支:进行版本控制的重点,从主线上分出来的工作线,为了不影响主线的开发,最终要和主分支进行合并。
拉取:一般指从远程仓库中拉取下载文件到本地仓库
推送:一般是将本地仓库中的文件上传至远程仓库中
二、Git的有什么作用?
解决开发中所存在的问题:
1.版本控制:无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况,有可能改完还不如以前的版本,还需要进行版本回退。
2.代码备份:可能一个模块马上就要完工了但是突然电脑崩了,磁盘下岗了,几个月的工作都白做了。所以需要及时将代码备份到本地和云端2
3.利于协同工作:两位同事先后从文件服务器上下载了同一个代码文件,两同时对一处做了相反的改动,很不利于工作进展。
4.方便责任追溯:项目中Bug过多,导致项目进度拖延,项目经理老徐因此被骂,但不清楚Bug是手下哪一个程序员写的,用Git可以明确提交代码的人和提交的时间。
核心就是对版本进行控制,有利于开发的效率。
三、Git常规操作怎么用?
3.1 下载安装
Git的下载和安装请自行百度,都特简单,几乎都是一路next结束。可以参考这里~。安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明Git安装成功。运行Git命令客户端,使用git --version 命令,可以查看git版本
3.2 配置和生成秘钥(SSH)
配置: 尤其是首次使用时要进行用户名和邮箱的配置
# 设置用户名
git config –global user.name "xxxxx"
# 设置用户邮箱
git config –global user.email "xxx@xx.xxx"
注:查下是否配置成功,用命令
git config --global --list
生成秘钥:通过邮箱生成秘钥,以后如果采用SSH从远程仓库拉取文件时就不需要每次输入用户名和密码
# 通过邮箱设置秘钥
ssh-keygen -t rsa -C "上面的邮箱"
注:执行上面命令后,连续回车3次
# 查看自己生成的SSH 先进入到这个目录下
cd ~/.ssh
# 查看自己的SSH
cat id_rsa.pub
3.3 配置公钥到远程仓库
为了方便之后和远程仓库进行交互,所以配置公钥。这里以GitHub为例:
3.3.1 首先根据上面步查到自己的公钥复制下来
3.3.2 进入github中,打开个人设置,点击SSH and GPG keys选项
3.3.3 点击新增公钥,将之前复制的内容全部粘贴到公钥内容里,公钥名称会自己生成,也可以自己修改,点击添加
3.3.4 测试,进入git bash,进行命令行测试,首次建立链接会要求信任主机。输入命令 ssh -T git@github.com。 提示成功则表示已经正确的完成了添加 shh keys
的全部操作!!!
3.4 常用操作命令
3.4.1 获取Git仓库
git init #在现有目录中初始化仓库 用来初始化一个GIT仓库(注意在想要将其变为仓库的目录下执行这个语句),该命令会创建一个名为.git的子目录
git clone [url] #直接克隆远程仓库中现有的项目,URL可以是https://协议,也可以是ssh传输协议,两者的区别是ssh不用每次都输入用户名密码,因为上面已经配好了
例: git clone https://github.com/libgit/libgit
git clone user@server:path/to/repo.git
3.4.2 添加和提交
git add 文件名 #将修改后文件添加到暂存区
git add * #将所有修改过的文件添加到暂存区
git commit -m "提交代码更改的描述信息" # 将暂存区存储的修改后的文件实际提交到本地仓库
注意:commit命令是可以一次性提交多个文件的,即commit一次是将上面 add 之后未 commit 的全部文件提交上去!
3.4.3 推送和拉取
# git push 使用本地的对应分支来更新对应的远程分支
git push <远程主机名> <本地分支名>:<远程分支名>
注: 命令中的本地分支是指将要被推送到远端的分支,而远程分支是指推送的目标分支,即将本地分支合并到远程分支。如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
例: git push origin master # 将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。origin是一个远程厂库地址
# git pull 获取并合并其他的厂库,或者本地的其他分支
git pull <远程主机> <远程分支>:<本地分支> # git pull 与 git push操作的目的相同,但是操作的目标相反
例: git pull origin master:my_test # 将origin厂库的master分支拉取并合并到本地的my_test分支上
git pull origin master # 如果省略本地分支,则将自动合并到当前所在分支上
3.4.4 分支的操作
git br -r # 查看远程分支
git br 分支名 # 创建新的分支
git checkout 分支名 # 切换到某个分支
例: git checkout -b feature_x # 创建一个叫做“feature_x”的分支并切换过去
git br -v # 查看已经被合并到当前分支的分支
git br --merged # 查看已经被合并到当前分支的分支
git br --no-merged # 查看尚未被合并到当前分支的分支
git co -b <new_branch> <branch> # 基于branch创建新的new_branch
git br -d <branch> # 删除某个分支
git br -D <branch> 强制删除某个分支 (未被合并的分支被删除的时候需要强制)
3.4.5 其他常用命令
3.4.6 与IDEA开发工具整合
3.4.6.1 IDEA中配置Git(应用)
(1) File -> Settings (2) Version Control -> Git -> 指定git.exe存放目录 (3) 点击Test测试
3.4.6.2 创建本地仓库(应用),一般配置好后默认所用的工程目录就是本地仓库
(1) VCS->Import into Version Control->Create Git Repository (2) 选择工程所在的目录,这样就创建好本地仓库了
(3) 点击git后边的对勾,将当前项目代码提交到本地仓库。注意: 项目中的配置文件不需要提交到本地仓库中,提交时,忽略掉即可
3.4.6.3 版本切换(应用)
(1) 方式一: 控制台Version Control->Log->Reset Current Branch...->Reset。这种切换的特点是会抛弃原来的提交记录
(2)方式二:控制台Version Control->Log->Revert Commit->Merge->处理代码->commit。这种切换的特点是会当成一个新的提交记录,之前的提交记录也都保留
3.4.6.3 分支管理(应用)
(1)创建分支 VCS->Git->Branches->New Branch->给分支起名字->ok
(2)切换分支 idea右下角Git->选择要切换的分支->checkout
(3)合并分支 VCS->Git->Merge changes->选择要合并的分支->merge
处理分支中的代码
删除分支
3.4.6.3 本地仓库推送到远程仓库(应用)
(1) VCS->Git->Push->点击master Define remote (2)将远程仓库的路径复制过来->Push
3.4.6.4 远程仓库克隆到本地仓库(应用) File->Close Project->Checkout from Version Control->Git->指定远程仓库的路径->指定本地存放的路径->clone