版本控制
- 本地版本控制系统
- 集中式版本控制系统 ( SVN) : 必须要联网
- 分布式版本控制系统 (Git)
Git 优势 (Git 诞生自2005, Linux 开源社区):
- 速度
- 简单的设计
- 允许上千个并行分支
- 分布式
工具安装
常用命令
使用前的准备
- 创建公钥私钥:
ssh-keygen -t rsa -b 4096 -C "这里输入邮箱"
- 复制公钥
cat ~/.ssh/id-rsa.pub
要把公钥添加到GitHub的SSH key - 设置用户名邮箱
git config --global user.name "xxx"
git config --global user.email "xxx"
-- global 表示一次设置好以后所有仓库都可以用,不用再次设置
- 查看用户名,查看邮箱
git config user.name
git config user.email
- 设置 git 记住密码
git config --global credential.helper store
- 查看 git 设置
git config --list
常用操作
将目录变成仓库
git init
clone项目
- 克隆仓库
git clone <仓库地址>
clone项目,把GitHub上的项目clone(下载)到本地变为本地仓库
git clone git@github.com:XXX
- 克隆某一个分支
git clone --single-branch -b <分支名称> <地址>
将本地的更新推送到远程仓库
1.把文件添加到暂存区
git add .
说明:add 后面这个点 代表添加所有更新到暂存区。如果只想添加某个文件到暂存区,可以用 git add + 文件名
,比如 git add a.md
表示只添加 a.md 这个文件;
如果只想添加本地仓库下的某个文件夹里的的所有文件,可以用git add 文件夹名/.
,比如 git add demo10/.
表示添加本地仓库下 demo10 这个文件夹下的所有文件到暂存区
2. 提交到本地库
git commit -am "add file"
说明:这个 add file 是对是本次提交的说明,根据实际情况修改 。
如果提交消息包含大量字符串,提交参数不用加 m ;此时会进入 vim 界面(按下 i 可以进入编辑状态),进行编辑,编辑完成后按下esc 进入命令状态,输入:wq (表示保存并退出)就好了。
3.将当前本地库的改动推送到远程库(origin)的master分支
git push origin master
查看状态
git status 可以查看当前状态
删除 某个文件夹
git rm -r --cached .idea // .idea是要删除的文件夹名, --cached不会把本地的.idea删除
git commit -m 'delete .idea dir'
git push -u origin master
提交过程中的异常/特殊情况
-
撤销commit (已经add 和 commit)
git reset --hard origin/master
可以通过git log 查看是否成功(这个会把上次提交之后本地的更新也抹掉) -
忽略某个文件夹
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
ignoring files
将远程仓库的变动更新合并到本地仓库
git pull
本地创建一个 git 项目推送到远程空仓库
1.、创建一个本地文件夹并将空文件夹初始化成一个仓库
git init
2、在GitHub上新建一个空仓库,只勾选 Public, 不选择“Initialize this repository with a README”
3、把远程库的地址添加个标签叫origin
git remote add origin git@github.com:xxx
xxx 是新建的仓库的SSH地址
4、最后就是正常的 git add ,git commit,git push 了
拓展:
-
添加 / 删除 / 修改标签
添加标签:git remote add 标签名 git@gitlab.com:xxx
删除标签:git remote remove 标签名
修改标签:
git remote rename 旧的标签名 新标签名
-
修改origin标签对应的地址
git remote set-url origin git@github.com:xxx
分支操作
-
创建本地库分支,比如dev
git branch dev
-
切换到dev 分支
git checkout dev
(git checkout master 可以回到主干) -
推送到origin地址的dev分支上
git push origin dev
- 把dev分支上的内容合并到master分支上
git checkout master
git merge dev
-
查看当前分支
git branch -a -
查看分支合并图
git log --graph
-
建立本地分支和远程分支的关联
git branch --set-upstream branch-name origin/branch-name
Git在本地新建分支后,必须要做远程分支关联。关联目的是如果在本地分支下进行git pull 和 git push操作时 ,不需要指定在命令行指定远程的分支。
使用 gh-pages 在同一个 repository中预览多个demo
- 本地创建 gh-pages 分支
git branch gh-pages
- 将本地gh-pages 推送到远程
git push origin gh-pages
- 将master 上的内容 合并到 gh-pages
先切换到分支:
git checkout gh-pages
合并:
git merge master
- 在GitHub上设置 GitHub pages
每个demo的预览地址为:
GitHub pages + 文件夹名 +index.html
比如,我的某个仓库的GitHub pages 地址为: https://arya1957.github.io/jQuery-demos/
那么我这个仓库下 demo1 de 预览地址为
https://arya1957.github.io/jQuery-demos/demo1/index.html
Git在本地新建分支后,必须要做远程分支关联。关联目的是如果在本地分支下进行git pull 和 git push操作时 ,不需要指定在命令行指定远程的分支。
git push --set-upstream origin gh-pages
需要注意的是:
每次要先push 到master ,然后切换到 gh-pages, 再merge,最后再执行 git push 命令
不使用 gh-pages 在同一个 repository中预览多个demo
- 在 repo 的 Settings 页面里将 GitHub Pages 功能打开,并选中 master 分支,点 Save,得到一个「部署地址」
- 在 repo 的 Settings 页面里将 GitHub Pages 功能打开,并选中 master 分支,点 Save,你就会得到一个「部署地址」,
之前都把问题搞复杂啦~
网友评论