git的三种工作区域
工作目录<->暂存区<->本地仓库
- 工作目录
- 暂存区
- 本地仓库
文件的四种状态
- 未追踪untraced
- 已暂存staged
- 已提交commited
- 已修改modified
本地仓库常用命令
- 初始化本地仓库
- git init
- 查看仓库的文件状态
- git status
- 把工作目录中的新添加的文件添加到暂存区(把修改后的内容添加到暂存区)
- git add -- 文件列表(文件之间使用空格隔开)
- git add * 添加所有文件
- git add 文件夹名称
- 把暂存区文件添加到本地仓库
- git commit 可以直接这样执行,但是会进入vi编辑窗口,此时要写入备注信息
- git commit -m 备注 (提交所有的暂存文件)
- git commit -m 备注 文件列表(提交特定的文件)
- git commit -a -m 备注 (跳过暂存区直接提交)
- 回滚修改的内容
- git checkout -- 文件列表 (回滚指定文件)
- git checkout . (回滚所有的文件)
- 回滚版本快照
- git reset --hard
- git reset --hard HEAD
- git reset --hard HEAD^
- git reset --hard commitid (回滚指定的版本快照)
- 修改版本快照的指向
- 覆盖暂存区
- 覆盖工作目录
- git reset --soft
- git reset --soft HEAD
- git reset --soft HEAD^
- git reset --soft commitid
- 只修改版本快照的指向
- git reset
- git reset --mixed
- git reset HEAD
- git reset HEAD^
- git reset commitid
- 修改版本快照的指向
- 覆盖暂存区,不覆盖工作目录
分支操作
- 创建分支(分支名称不加引号)
- git branch 分支名称
- 切换分支
- git checkout 分支名称
- 合并分支(把别的分支合并到当前分支)
- git merge 分支名称
- 删除分支
- git branch -D 分支名称 (强制删除分支)
- git branch -d 分支名称
- 创建并切换分支(相当于 git branch 分支名称 和 git checkout 分支名称 两个命令的共同作用)
- git checkout -b 分支名称
远程(共享)仓库
借助一个远程仓库,可以共享代码、历史版本等数据,实现团队成员之间代码同步。
远程仓库操作流程
创建远程仓库
- 创建以.git结尾的目录mkdir lml.git
- 进入该目录cd lml.git
- 初始化共享仓库git init --bare
这样我们就建好了一个共享的仓库,但这时这个仓库是一个空的仓库,并且不允在这个仓库中进行任何修改。
向共享仓库推送内容
将自已开发的项目同步到这个目录中,其它开发者就可以共享你开发的项目了。
- 进入自己的项目跟目录 cd demo
- git push 远程仓库地址 本地分支名称:远程分支名称
- git push -u origin master(-u作用就是建立跟踪分支,只需要第一次使用,后续就不用了,以后就直接git push)
这样demo项目就进入到了共享仓库中
从共享仓库取出内容
- 新创建一个目录example(模拟另一个开发者)
- 进入该目录cd ./example
- git clone lml.git
通过lml.git共享仓库,我们轻松得到了一个demo的副本
基于克隆下来的项目进行修改
- 修改内容
- 提交内容
- 推送内容
这样便实现了代码的共享,但是,我们发现我们这个共享的仓库只是放到了本地的,其它人是没有办法从我们这个共享仓库共享内容的!!!,那么要想实现共享,我们可以把这个共享的仓库放到一台远程服务器上,问题不就解决了吗?
远程仓库服务GitHub与GitLab
如果我们熟悉服务器的话,我们完全可以将上述的步骤在我们的远程服务器上进行操作,然后再做一些登录权限的设置,就可非常完美的搭建一个共享服务器了。其实为了更好的管理我们的仓库,一些第三方机构开发出了Web版仓库管理程序,通过Web界面形式管理仓库。
GitHub概述
GitHub基本使用
- 注册账号
- 创建共享仓库
GitHub地址格式
- https://
- 获取代码不需要密码
- 提交代码需要密码
- git@
- 需要将自己的公钥添加到GitHub上
- 获取与提交代码都不需要密码