目录
-
简介
- Git是分布式版本控制系统;
- GitHub是一个免费的提供Git仓库托管服务的服务器。
-
github 配置
- 登录GitHub官网 github.com
- 注册新用户,需要使用个人邮箱
- 注册成功后,登录,并进入个人主界面
- 在主界面的右上角,点击“+”,选择“New repository”创建库
- 在“Repository name”中输入库的名字
- 在“Description (optional)”中可以选择性的输入所创建的库的一些描述性介绍
- 默认选择“Public”选项
- 可以勾选“Initialize this repository with a README”,创建README文件,增加更详细的库介绍
- 可以配置选择“.gitignore”文件,配置Git中哪些文件不需要添加到版本管理中
-
本地配置
-
下载并安装“Git”软件,用于本地与github服务giinit $ sudo apt update
-
$ sudo apt install git
-
$ git --version
-
-
$ mkdir ~/git/ 创建本地工作目录
-
$ cd ~/git/ 切换到该工作目录
-
$ git init 初始化一个本地git仓库
-
在本地管理与控制文件
-
$
git add <file_name> 添加
文件到stage区,可多次重复使用 -
$ git add . 把工作区下的所有文件
添加
文件到stage区 -
$
git commit -m <message>
把stage区中的文件提交到当前分支区(默认为master区) -
$ git status 查看git状态
-
$
git diff
命令查看发生了什么修改 -
$
git diff HEAD -- <file_name>
查看工作区和版本库里面最新版本的区别 -
$
git log [--pretty=oneline]
显示从最近到最远的提交日志信息 -
$ reset --hard HEAD^ 回退到上一个版本
-
$
git reset --hard commit_id 回到指定commit id的版本
-
$ git reset --hard <commit_id_num> 回到指定id的版本
-
$ git reflog 查看commit的id号
-
$
git checkout -- <file_name>
可以丢弃工作区的修改 -
$
git reset HEAD <file_name>
把暂存区的修改撤销掉(unstage),重新放回工作区;还可以回退版本 -
$ git checkout <file_name> 将工作区中已经删除的文件,从版本库中恢复出来
-
$
git clone https://github.com/Kukafe/GitLearning.git
将https://github.com中的github仓库 (GitLearning.git
)克隆到本地工作区 -
-
-
注意事项
-
在Git中,用
HEAD
表示当前版本,也就是最新的提交版本,上一个版本就是HEAD^
,上上一个版本就是HEAD^^,
往上100个版本写成HEAD~100
-
提交修改和提交新文件是一样的两步: git add 和 add commit
-
工作区(Working Directory)就是你在电脑里能看到的目录,工作区有一个隐藏目录
.git
-
版本库(Repository):隐藏目录
.git
,这个不算工作区,而是Git的版本库 -
暂存区:在版本库中,暂存区被称为stage(或者叫index)。第一个分支为
master
,以及指向master
的一个指针叫HEAD
-
-
-
git add
把文件添加进暂存区,实际上就是把文件修改添加到暂存区(stage区); -
用
git commit
提交更改,实际上就是把暂存区(stage区)的所有内容提交到当前分支(master区); -
对于每次修改,如果不用
git add
到暂存区(stage区),那就不会加入到commit
命令中去; -
手动删除工作区中的文件,还可以使用git rm <file>和git add<file>将删除的文件从版文库中删除
-
如果是误删,可使用 git checkout <file_name> 从版本库中还原至工作区
-
-
-
本地 与 远端 的连接
- $
git clone https://github.com/<username>/<name>.git
将GitHub中的GitHub仓库克隆到本地工作区 - $ git clone git@github.com:<username>/<name>.git 将GitHub中的GitHub仓库克隆到本地工作区(同1)
- $ ssh-keygen -t rsa -C <email> 点击几次回车,默认密码为空,创建 ~/.ssh/id_rsa 文件,其中包含公钥(id_rsa_pub)和私钥文件,打开公钥文件,复制其中内容粘贴至GitHub个人主页(Settings --> SSH and GPG keys --> New SSH key --> key)中,即可完成Git连接GitHub。
- $ git config --global user.name <name> 设置名字,设置自己git的名字,对于git这样的分布式版本控制系统,每个链接的机器都需要自报家门,说出你的名字,同理下面设置邮箱。使用 --global 参数是对于使用本台机器的所有用户都将使用同一个名字,同理设置的邮箱。
- $ git config --global user.email <email> 设置注册邮箱
- $ git config -l 列出本台机器的名字和邮箱
- 重新输入.的登录密码即可完成配置
- $ ssh -T git@github.com 验证连接是否成功 ,第一次连接需要确认“continue”,.. 最终显示:“Hi ****! You've successfully authenticated, but GitHub does not provide shell access.”表示已成功连上github。
- $ git remote add origin git@github.com:<usrname>/[path]/<name>.git 把本地的仓库和GitHub上的<name>.git仓库相关联
- $ git push -u origin master 首次把本地仓库内容推送到GitHub仓库中(把当前分支
master
推送到远程GitHub) - $ git push origin master 把本地仓库内容推送到GitHub仓库中(把本地
master
分支的最新修改推送至GitHub)
-
本地分支管理
- $
git branch -D <name>
删除没有合并和分支,此时为强行删除
- $ git branch dev 创建新分支
- $ git checkout dev 切换至新分支
- $ git checkout -b dev 完成创建新分支并切换到该分支
- $ git branch 查看分支情况,并列出所有分支,其中带*的为当前分支,这个分支独立与其他分支
- $ git checkout master 从当前分支(若不在master分支)切换到master分支
- $ git merge dev 合并某分支到当前分支
- $ git branch -d dev 删除dev分支
- $ git --graph 查看分支合并图
- 注意点
- 当Git无法自动合并分支时,就必须首先解决冲突(手动编辑为我们希望的内容)。解决冲突后,再提交,合并完成。
- 创建、合并、管理、删除分支
- <其他未尽事项待续>
-
其他注意点
- 新创建的那个仓库里面的README文件不在本地仓库目录中,这时我们可以通过以下命令先将内容合并以下,再push就能成功了:
- $ git pull --rebase origin master
- 昨天在本地创建的git仓库,可是在使用 push 命令时一直报错,无法上传到远端仓库。
- 问题解决:
- 删除昨天常见的仓库目录,重新在 ~/ 目录下创建新的工作目录 ~/git/
- 进入该目录,并使用 git clone 命令把giget@github上已经创建的仓库 克隆到本地
- 使用 git init 命令把 ~/git/ 目录设置为本地仓库
- $ ssh -T git@github.com 验证连接是否成功
- $ git remote add origin git@github.com:<usrname>/[path]/<name>.git 把本地的仓库和GitHub上的<name>.git仓库相关联
- 使用命令提交本地修改到本地仓库,然后再push到远端仓库,显示成功
- $ git add . (添加全部文件)或 $ git add <file_name> (单个文件,可重复使用多次添加)
- $ git commit -m '<添加摘要日志>' 默认提交全部的添加
- $ git push origin master 把 local 仓库的更新 push 到 git@github.com 仓库中,成功搞定!
- $ git status 查看本地仓库状态。
- 问题解决: