什么是Gihub?
1.Github是一个代码/文件托管+保管+提交修改+评论修改的工具。
2.GitHub主要操作一:创建一个仓库。简单理解为创建一个新模块、新主题。在创建时需要指明仓库所有者、仓库名、仓库说明、保密性以及是否开源等。
3.Github主要操作二:上传文件或者文件夹。点击addfile添加空文件或者上传若干文件,/表示文件夹,文件夹不可为空。
4.Github主要操作三:贡献操作之提交疑问或者描述和总结(Issues)。基于查看过代码仓库的前提提交问题和提交说明,仓库创建者有权利关闭问题并和网友评论问题以及添加标签。
5.Github主要操作四:贡献操作之提交更改(Pull Requests)。对他人的项目进行更改。
6.Github主要操作五:开源项目可以随意使用,但是要在指定的开源协议下进行。如果超出协议范围则不被允许,甚至会被追究责任。
7.Github主要操作六:版本管理。在对项目进行更新后,若不符合预期,则可以退回原始版本。
8.Github主要操作七:搜索资源。
什么是Git?
Git是一个分布式版本控制系统。GitHub、Gitlab、Gitee都是git的托管平台。Git最初是基于linux平台方便管理文件创建的,因此Git中的很多指令与linux相同。
一、安装与配置
1.下载与安装:
https://git-scm.com/download/
tips:对于小白来讲,安装的时候最好安装在C盘。一开始我安装在了C盘导致无法从Github上克隆,跟随教程进行了诸多尝试最后重装在了C盘一切问题迎刃而解。
2.使用入口
win:右键菜单—git bash
mac:终端窗口
3.基础配置
a.首次使用添加身份说明,使用以下两个命令:
$ git config --global user.name "username"
$ git config --global user.email "你的邮箱@example.com"
b.创建仓库
①在项目文件夹下使用git bash输入$git init,无需联网即可完成项目创建,在该仓库中可以使用任何git功能。此时仓库内会出现一个.git文件夹,该文件夹是用来管理版本的,禁止修改。
②使用他人项目创建仓库,get clone +URL 使用别人的项目。注意:在复制URL的时候会有https和ssh两种类型可选,https后续会有认证等其他步骤。
二、状态与提交版本
仓库中的文件共有四个状态,分别是:未跟踪、未修改、已修改、暂存。
1.跟踪
a.跟踪文件
$ git add <name>
作用:跟踪文件状态,当文件发生修改时,让系统能够记录文件修改之前的状态,可以随意切换不同的状态,避免文件修改后之前的版本丢失。当被设定跟踪之后,若不删除就会被一直跟踪。
b.跟踪当前目录
$ git add .
2.取消跟踪
a.rm删除
$ git rm <name>
b.保留但不跟踪
$ git rm-cache <name>
3.文件状态修改
a.将修改文件缓存
git add <file-name>
b.取消缓存
git reset HEAD <name>
c.提交缓存的修改
git commit(提交之后的文件是未修改、已缓存的文件)
d.git commit 具体操作
①git commit 进入提交界面,
按" i "键进入编辑模式后输入提交内容,
然后esc退出编辑模式, 按" : "进入命令栏, 输入"wq"保存并退出.(类似于linux的shell操作)
②git commit -m ' 提交内容 '
在命令行中直接输入,不必进入编辑模式,相当于是便捷方式。
③git commit -a
连带未缓存文件一起提交
git commit -am '提交描述'
④git reset head~ --soft
该命令可以取消提交, 首次提交不可撤回.
e.查看状态
①git status
红色代表 已修改, 未缓存
绿色代表 已缓存
提交后, 则不显示
②git diff
详细查看文件的第几行第几个字母被修改了
③git log
查看提交历史信息
git log --all
查看所有分支的提交
结合graph食用更佳
git log --all --graph
git log--pretty
git log--pretty=oneline
自定义格式...
④git log--graph
所有的版本控制系统都是只能跟踪文本文件的改动,比如txt文件、网页和代码等,无法跟踪图片和视频的改动。每一次改动文件,都会生成一个对应的版本号(用git reflog查看),如果前后两次提交文件没有发生改动,那么版本号也是不会改变的。选择对应的版本号(git reset --hard 版本号)即可回到该文件的对应状态。
三、远程仓库
Git是一个分布式的版本控制系统,并不像SVN一样具有中心服务器,因此它无需联网即可在本地创建自己的仓库并执行命令。当需要同他人协作时,就需要将数据放到其他开发人员能连接的服务器上(如GitHub)。
1.链接远程仓库到本地
git remote add origin 远程仓库链接(通常使用ssh密钥进行链接)
2.重命名仓库
git remote rename 目标仓库名 修改内容
3.推送到远程仓库
git push 仓库名 分支名
b.GitHub已禁止使用用户名与密码验证
①使用token令牌验证
②简单方式:ssh密钥
四、分支
1.分支的概念
master分支就是发布版分支,所有的分支在测试后都要回归到master进行发布;hot fixes分支是用来修复bug的分支;开发新特性的时候通常在feature分支上开发;开发完成之后会将几个feature合并到develop分支上并测试;在经过测试和功能验证后如果没有问题则会将项目合并至release分支;最终合并到master分支成为最终版本。可以用(git branch --list)查看当前的所处分支列表。
2.创建分支
git branch 分支名 :如git branch feature1,创建feature1分支
3.新建并切换到该分支
git checkout -b 分支名
4.查看分支
git branch --list
5.切换分支
git checkout 分支名
注意分支名前不能有--,git checkout --文件名表示放弃对文件的当前修改
五、分支合并
1.无冲突合并
在 合并至 的分支使用
git merge 要合并的分支
2.分支冲突 merge conflict
将 分支2 合并到 master分支 时, 与 分支1 冲突了. 原因是 分支1 和 分支2 修改了同一处内容.
git status 查看哪里有冲突
vi 到冲突文件中, 选择一个分支的内容保留下来, (:wq)保存退出
git add 文件名
git commit -m '提交描述'
git log --all --graph 查看合并状态
六、推拉与远程跟踪分支
1.推送
git push 仓库名 分支名
或者
git push -u 仓库名 分支名
第一次使用 -u 指定推送目标后, 此后可直接使用git push
2.拉取
git fetch 从远程仓库下载新分支与数据(通常会紧跟Git merge)
git checkout 远程分支
git checkout -b 本地分支名 远程分支
git checkout --track 远程分支
七、贮藏功能
1.git stash
当代码需要临时保存的时候,可以使用stash功能进行临时保存。
2.git stash apply
切换回分支, 恢复之前存储的内容
3.多次存储
a.回看存储记录
git stash list
b.恢复指定记录
git stash apply stash@{记录号}
c.恢复并删除记录
①恢复并删除最近一次记录
git stash pop
②删除指定记录
git stash drop @stash{记录号}
八、重置与变基
1.reset(重置)
a.head
head: 当前的提交
head~: 上次的提交
head~2: 倒数第二次的提交
b. --soft
仅取消commit操作, 把修改文件暂存.
如果不加 --soft 则表示恢复到暂存前, 修改的内容是存在的.
c. --hard
取消暂存, 取消修改内容, 回到上次提交的状态.
不推荐使用, 可能丢失数据.
2.rebase(变基)
a.将B分支的修改移动到A分支
git checkout B
git rebase A
b.注意事项
注意他人在远程分支二次开发时, 审慎使用变基
c.交互式操作
rebase -i