注册
- GitHub注册地址:https://github.com/
链接到本地
- 首先在本地创建ssh key,进入Git bash,输入如下命令:
$ ssh-keygen -t rsa -C "your_email@youremail.com"
- “ ”中间需要输入自己注册GitHub的邮箱
- 之后会要求确认路径和输入密码,使用默认的一路回车就行
-
运行结果如下:
- 第一次还需要设置username和email
$ git config --global user.name "your name"
- email:
$ git config --global user.email "your_email@youremail.com"
- 为了验证是否成功,在git Bash下输入:
$ ssh -T git@github.com
-
运行结果如下:
- 在C盘用户下的.ssh目录里找到id_rsa和id_rsa.pub这两个文件
- 将id_rsa.pub里面的内容复制
-
打开GitHub,在右边找到Settings
-
点击SHH and GPG keys,New SHH keys
-
点击New SHH keys,Title可以随便填,将刚才复制的key粘贴在Key中,点击Add SSH key
-
这时候会跳出界面,确认密码
- 在Git Bash中通过git remote add origin命令,从本地连接到要连接的Git Hub仓
$ git remote add origin https://github.com/...
-
这个http://....在这个位置
-
运行结果如下:
-
连接上了
从本地上传文件到GitHub
首先在本地要上传的仓库(文件夹)下,进入git Bash
-
要上传如下两个文件:
通过git init命令,让新建的文件夹成为git可管理的仓库,输入如下命令:
$ git init
- 该命令执行成功后,会在目录下生成一个.git的隐藏文件。
- 通过 git add . 命令,把该目录下的所有文件加入到本地暂存区中,输入如下命令:
$ git add .
- 格式:git空格add空格.
- 该命令后面有一个“.”,执行成功后不会有任何提示
-
运行结果如下:
- 通过命令:git commit -m "文件名",把本地暂存区中的文件提交到本地历史区,输入如下命令:
git commit -m "文件名"
-
运行结果如下:
- 只有在本地历史区中的内容才能提交到github。执行该命令后,所有的文件都还在本地,不影响GitHub。
-
因为我在GitHub上新建repository的时候勾选了Initialize this repository with a README(就是创建仓库的时候自动给你创建一个README文件),所以要多输入一个命令:
$ git pull --rebase origin master
-
运行结果如下:
- 最后,如果github仓库的文件夹为空时,输入如下命令:
$ git push -u origin master
- 远程仓库不为空时,输入如下命令:
$ git push origin master
- master是分支的名字
-
运行结果如下:
-
再看自己的GitHub,就可以看到已经上传的文件:
从本地远程删除Github中的文件
-
首先找到GitHub的clone链接,如图:
将链接复制,在本地Git Bash中,输入如下命令:
$ git clone https://github.com/***
- git clone + 复制的链接
- 将整个仓库clone到本地
- 通过git init命令,在clone下来的本地仓库里进行初始化
$ git init
- 通过git rm 命令,删除文件或文件夹
- 删除文件:
$ git rm "生命游戏.cpp"
- 删除文件夹:
$ git rm -f "***"
-
运行结果如下:
- 通过 git commit - m "**" 命令提交上述操作:
$ git commit -m "生命游戏.cpp"
- 输入一次命令两个删除操作都提交了
-
运行结果如下:
- 最后推送所有文件到远程仓库
$ git push origin master
-
运行结果如下:
- 第一次添加远程origin时,需要语句"-u"
-
这时候再看GitHub,文件已经被删除
常用命令
-
git status
查看哪些文件处于什么状态。 -
vim + 文件名
编辑文件。 -
git add
把工作时的所有变化提交到暂存区。 -
git rm --cached + 文件名
将远程仓库的文件删除,保留在本地仓库,使其不被版本控制。 - 日志
git log
命令:
多屏控制显示方式:
空格 : 向下翻页
b : 向上翻页
q : 退出
git log --pretty=oneline
命令:
git --online
命令:git reflog
命令:这个命令显示了移动到某个版本需要移动多少步。
6.版本前进和后退:
(1)基于索引值
图片中的head是指针,head指针当前指向了第一个版本。前面黄色的一列就是每一条记录的索引值,这个索引值并不完整,但是在版本前进和后退的时候,使用这一小段索引值就可以进行版本前进和后台了。
命令:
git reset --hrad +索引值
当前head指向:
前进也是一样的~
(2)使用^符号
使用这个方法只能后退。
后退一个版本:
后退多个:
也就是一个异或符号后退一个版本。
(3)使用
~
符号取代后退多个版本使用多个异或符号的方法:
使用
~
数字代表后退多少个版本。
~
符号也是只能后退。比较一下(1)(2)(3)方法,更推荐方法(1)。
-
git help + 命令
:
查看帮助文档。 -
git reset
命令:
-
--soft参数
仅仅在本地库移动head指针
也就是本地库看起来往后,看起来好像是暂存区和工作区往前了。
-
--mixed参数
在本地库移动head指针
重置暂存区
这时候显得工作区往前了,实际上是本地库和暂存区往后了。
-
--hard参数
在本地库移动head指针
重置暂存区
重置工作区
hard则是一起动。
-
rm + 文件名
命令:
删除文件 - 比较文件
git diff + 文件名
如果没有参数是和暂存区进行比较:
和本地库版本进行比较:
和历史版本进行比较:
不带文件名可以比较多个文件:
- 分支
查看现在所有的分支:
git branch -v
创建分支:
git branch + 分支名
切换分支:
git checkout + 分支名
合并分支:
切换到接收修改的分支上(被合并的分支)
执行git merge + 分支名
示例:
当前分支有两个:一个是hot_fix,另一个是master
要把hot_fix上修改的内容合并到master上
先切换到master分支
然后把hot_fix分支的内容merge到master上
12.解决分支合并产生的冲突
两个分支在同一个位置都有修改,合并的时候就会产生冲突,这时候就由自动合并转为手动合并:
可以看到状态发生了改变,但是没有产生额外的文件:
打开文件发现有了一些新的标记:
其中HEAD是当前分支的内容,下面是另外一个分支的内容。
手动修改文件,保留需要的部分,然后保存退出。
执行git add后:
会提示,还需要git commit
commit的时候如果带文件名会出错,但是可以写日志信息。
13.在本地保存远程仓地址
复制仓库地址:
git remote -v
:查看地址别名给地址起一个别名保存起来:
git remote add + 别名 +地址
- 推送
git push + 别名 + 分支名
- 克隆
命令:git clone + 地址
作用:
把远程仓库下载到本地
创建origin远程地址别名
初始化本地库
16.拉取
pull = fetch + merge
git fetch [远程库地址别名][远程分支名]
git merge[远程库地址别名/远程分支名]
git pull[远程库地址别名][远程分支别名]