Git和Github的使用
文章目录
1. Git
版本控制
版本控制软件是一个用来记录文件变化,以便将来查阅特定版本修订情况的系统,因此有时也叫做“版本控制系统”。
版本控制系统的分类,本地直接放在客户本地,集中,将最新版本放本地,其它放服务器,但是服务器坏了,就全崩了(代表SVN)且不支持离线,分布,本地和客户都保留全部的版本,谁坏了就从另一方恢复(代表Git):
Git基础
Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。Git直接完整记录快照,而非只记录差异,这样便于版本之间的切换,但就是有点浪费内存,而且所有操作都是本地执行
- 使用 Git 管理的项目,拥有三个区域,分别是工作区、暂存区、Git 仓库。对应的三个状态如下:
- 工作区的文件被修改了,但还没有放到暂存区,就是已修改状态。
- 如果文件已修改并放入暂存区,就属于已暂存状态。
- 如果 Git 仓库中保存着特定版本的文件,就属于已提交状态。
- Git的工作流程:① 在工作区中修改文件② 将你想要下次提交的更改进行暂存③ 提交更新,找到暂存区的文件,将快照永久性存储到 Git 仓库
- Git安装路径:https://git-scm.com/downloads,运行完之后在git对应的文件夹下进行使用
- 安装完 Git 之后,要做的第一件事就是设置自己的用户名和邮件地址。因为通过 Git 对项目进行版本管理的时候,Git 需要使用这些基本信息,来记录是谁对项目进行了操作.在Git.bash中进行操作:
使用了 --global 选项,那么该命令只需要运行一次,即可永久生效。
可以在C:/Users/用户名文件夹/.gitconfig 文件中查看自己曾经对 Git 做了哪些全局性的配置。 - 工作区文件有四种状态,分别如下所示,Git 操作的终极结果:让工作区中的文件都处于“未修改”的状态:
- 获取 Git 仓库的两种方式,能够在自己的电脑上得到一个可用的 Git 仓库:
① 将尚未进行版本控制的本地目录转换为 Git 仓库
② 从其它服务器克隆一个已存在的 Git 仓库
Git基本命令(提交修改等操作的命令)
-
git help config(直接在浏览器打开)获取帮助信息,想要直接在终端打开,使用 git config -h即可
-
在项目目录中,通过鼠标右键打开“Git Bash”, 执行 git init 命令将当前的目录转化为 Git 仓库。git init 命令会创建一个名为 .git 的隐藏目录,这个 .git 目录就是当前项目的 Git 仓库,里面包含了初始的必要文件,这些文件是 Git 仓库的必要组成部分。
-
可以使用 git status 命令查看文件处于什么状态, Untracked files(未跟踪的文件), 也可以使用精简的形式git status -s或者git status --short,未跟踪文件前面会有两个红色的感叹号。Changes to be committed 这行的下面,说明已被跟踪,并处于暂存状态,精简方式是会在文件前面有一个绿色的A
-
使用命令 git add 文件名,后面写上要跟踪文件名,运行后该文件就会处于Changes to be committed 状态。
-
将暂存区的文件与Git仓库文件内容保持一致(要保证所有的项目文件都已经放到了暂存区),提交到Git仓库进行保存,使用,git commit -m “提交的描述信息”,此时git status 为nothing to commit, working tree clean证明工作区中所有的文件都处于未修改的状态,没有任何文件需要被提交
-
对已经提交的文件进行修改后,git status 为红色的modified,代表已修改,此时-s为红色的M
- 将已修改的文件执行add的操作后为绿色的modified,绿色的M,代表已经把已跟踪的、且已修改的文件放到暂存区
- 继续执行commit的命令后,文件又恢复到“未修改”的最终状态
- 撤销对文件的修改指的是:把对工作区中对应文件的修改,还原成 Git 仓库中所保存的版本。要注意此修改后的文件没有提交到git仓库(也不能是暂存状态)中,使用git checkout – 文件名称,将其恢复到暂存或者已经被提交后的状态
-
git add . 一次性将所有的新增和修改过的文件加入暂存区
-
git reset HEAD 要移除的文件名,或者直接git reset . 将全部文件从暂存区移出
-
git commit -a -m “描述信息” 可以直接将已经放入工作区中的文件直接放到本地git仓库,从而跳过暂存区
-
Git 仓库中移除文件的方式有两种:
① 从 Git 仓库和工作区(本地)中同时移除对应的文件 git rm -f 文件名
② 只从 Git 仓库中移除指定的文件,但保留工作区中对应的文件git rm --cached 文件名
此时状态会变成绿色的D
创建一个名为 .gitignore 的配置文件(直接创建修改名字),列出要忽略的文件的匹配模式,使得这些文件无需纳入 Git 的管理:
① 以 # 开头的是注释
② 以 / 结尾的是目录
③ 以 / 开头防止递归,意思只匹配这个目录下的,其它目录下的改内容不受影响)
④ 以 ! 开头表示取反
⑤ 可以使用 glob 模式进行文件和文件夹的匹配(glob 指简化了的正则表达式),常用的正则表达式
- git log 如果希望回顾项目的提交历史,具体使用总结如下。自定义格式中间可以使用其它连接如“-”:
- 可以使用如下命令,将文件返回至指定的版本,回退到以前版本要还想查看之前的全部历史,需要使用下述第三条命令:
2. Github
基础介绍
开源是指不仅提供程序还提供程序的源代码 。闭源是只提供程序,不提供源代码。开源并不意味着完全没有限制,为了限制使用者的使用范围和保护作者的权利,每个开源项目都应该遵守开源 许可协议(Open Source License) ,常用的为GPL和MIT
- 专门存放开源项目源代码的网站,叫做开源项目托管平台,常用的如下,因为都是以Git管理为基础,故都以Git开头:
- Github 是全球最大的开源项目托管平台。因为只支持Git作为唯一的版本控制工具,常用的功能如下:
- Github 上的远程仓库,有两种访问方式,分别是HTTPS 和SSH。它们的区别是:
①HTTPS :零配置;但是每次访问仓库时,需要重复输入Github 的账号和密码才能访问成功
②SSH:需要进行额外的配置;但是配置成功后,每次访问仓库时,不需重复输入Github 的账号和密码,推荐使用SSH的方式进行访问
Github文件交互方式(SSH)
- 生成SSH key的方法如下,不用在意bash的路径,其都会在c盘生成对应的文件:
- 配置SSH Key的方法:
- 测试SSH Key是否配置成功:
- ssh -T git@github.com 输入yes 看到下述信息,证明成功:Hi 你的github用户名! You’ve successfully authenticated, but GitHub does not provide shell access.
- 使用ssh上传文件,首先还是先把git前面的配置好(包括SSH的设置,设置一次就行,不用像http那样每次都要用户名和密码),然后提交到仓库后,执行下述命令后刷新即可:
- 将远程仓库的数据克隆到本地,使用git clone 远程仓库的地址,远程仓库的地址可以从下面进行获取,优先选择ssh形式的:
需要注意的是,虽然本地上传的文件名和git仓库可以不一致,但是从git仓库下载的就是git仓库中的文件名 - git remote -v 查看远程仓库的地址
3. Git分支
分支的使用:在进行多人协作开发的时候,为了防止互相干扰,提高协同开发的体验,建议每个开发者都基于分支进行项目 功能的开发。
初始化本地Git仓库的时候,Git默认已经帮我们创建了一个名字叫做master 的分支。通常我们把这个 master 分支叫做主分支。 master 主分支的作用是:用来保存和记录整个项目已完成的功能代码。 因此,不允许程序员直接在master 分支上修改代码,因为这样容易导致整个项目崩溃。为了开发,便有了功能分支,功能分支指的是专门用来开发新功能的分支,它是临时从master 主分支上分叉出来的,当新功能开发且测试 完毕后,最终需要合并到master 主分支上。
在两个不同的分支中对同一文件进行了修改并提交仓库后,进行文件的合并的时候会发生冲突,这个时候需要手动打开冲突的文件,进行修改,然后再提交到git即可。
Git分支 常用命令
- git branch 结果前面带*表示当前所处的分支。
- git branch 分支名称创建一个新的分支,此时,新分支的代码和当前分支完全一样,并且执行完该语句后还是处于之前的那个分支中。
- git checkout 分支名称实现切换分支。
- git checkout -b 分支名称创建并且切换到该分支上。
- git checkout A然后git merge B,即吧B分支的内容合并到A分支上,注意,在完成分支上的功能后别忘了将其add和提交git后,在进行切换合并
- git branch -d 删除的分支删除本地分支,注意不要删除当前所在的分支,且保证被删除的分支已经被合并
- git branch -D 删除的分支强制删除本地分支,注意不要删除当前所在的分支,且不管是否已经被合并
- git push 远程仓库名称 --delete 远程分支名称 删除远程仓库中的分支
- git push -u 远程仓库名称 本地分支的名字:提交到仓库后的重命名将远程仓库github中没有的分支提交到github,注意,没有的时候爷提交需要加 -u 存在后直接git push即可,同时,如果提交之后不需要重命名,冒号后面可以省略不写。远程仓库的别名默认情况下为origin
- git remote show 远程仓库的名字(默认origin)查看远程仓库(github)的所有分支
- git checkout 远程分支的名称 从远程仓库中下载分支到本地
- git checkout -b 本地分支名称 远程仓库名称/远程分支名称 远程仓库的别名默认情况下为origin,将远程仓库中的分支下载到本地并进行重命名,并且当前处于下载后的新分支上。