github
简介:一个网站/社交平台,能够存放代码,有不少开源项目。
详介:github是程序猿的代码托管平台,也是基于git的开源分布式版本控制系统,所以github官网上并无为用户准备一个很好的代码上传系统。若想快速高效地将本地代码上传到github,须要作到如下几点:html
- 在本地安装git,这样才能在本地环境中使用git命令行(例如:$ git add index.html);
- 要将本地git链接到本身的github帐户上,这样才能把代码文件上传上去。每一次更改都会造成一个版本记录,便于团队协做管理。
git
一个工具,主要做用是版本控制,须要安装到本地。安装文件夹下会有git-bash.exe
和git-cmd.exe
两个应用程序,bash在cmd的基础上增添了一些新的命令与功能,建议直接使用bash。git
git的主要做用
- 回退,即退回到以前版本;
- 历史,即查看历史版本;
- 差别,即查看版本和版本之间有哪些不一样,作了哪些变化等。
经常使用的版本控制工做
除了git这个当前最主流的版本控制工具外,还有svn、cvs等。github
使用git工具
将git链接到github网站
Step1 设置贡献者
打开git-bash,逐条输入并回车:
git config --global user.email "你的邮箱"
git config --global user.name "你的用户名"shell
git config --global 参数表示这台机器上全部的Git仓库都会使用这个配置(即相同的邮箱和用户名),也能够对某个仓库指定不一样的用户名和邮箱。segmentfault
Step2 生成ssh安全
ssh是一种传输代码的方法,专为远程登陆会话和其余网络服务提供安全性的协议,安全且快速。bash
- 继续输入:
ssh-keygen -t rsa -C "注册邮箱"
- 一路回车,直到出现randomart image;
- 回车中途会出现:
路径选择→提示选择ssh-key生成路径,直接点回车将其生成在默认路径中便可;
密码确认→不用使用密码进行登陆,直接回车便可。
Step3 在github网站添加ssh网络
- 找到文件夹
.ssh
(路径为:C:\Users\用户名\.ssh),该文件夹下有2个文件:id_rsa
私钥和id_rsa.pub
公钥;
- 用代码编辑器打开
id-rsa.pub
,复制全部内容;
- 登陆github网站,头像(网页右上角)→settings→SSH and GPG keys(网页左边侧栏)→New SSH key(网页右边,头像下边)
→title(随便填)→Key(粘贴id-rsa.pub里的全部内容)→Add SSH key
Step4 测试是否链接成功
在git-bash中输入并回车:
ssh -T git@github.com
出现Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
说明已经过身份验证,链接成功。dom
经过git提交代码
在github上创建仓库
在github上删除仓库
点开settings后,将页面拉到最底部
ssh
把本地的文件上传到仓库中
- 在git-bash中建立一个版本库(就是要上传文件的文件夹)
- 在命令行中敲
git init
,初始化,目的是让这个目录归git管理
- 命令行中会输出
Initialized empty Git repository in "文件夹路径"/.git/
,.git
目录是Git用来跟踪管理版本库的,默认隐藏
- 继续敲
git add <file>
,
处敲
文件路径;或者敲
git add .
,.表明
全部的文件
- 继续敲
git commit -m "提交日志"
,"提交日志"是对这次上传操做的简介
- 链接远程地址,继续敲
git remote add origin 本身的github地址
- 本地文件推送到远程仓库,继续敲
git push -u origin master
,-u里的u是union,把本地工做区与远程仓库对应起来
修改本地文件并同步到远程仓库
- 在本地版本库添加/修改文件
- git add
- git commit -m "提交日志"
- git push
删除本地文件并同步到远程仓库
- 删除本地版本库的文件
- git add -u
- git commit -m "提交日志"
- git push
- git rm
- git commit -m "提交日志"
- git push
注意:git rm <file>
和rm <file>
是有区别的!本地文件夹叫工做区;工做区里有一个.git文件夹叫版本库;版本库里有一个暂存区(stage),add是提交到暂存区的方法之一,commit是生成新版本,每次提交后用git log
输出历史,会发现有新版本。rm只删除了工做区的文件,跟git不要紧;git rm删除了工做区和暂存区对应的文件,git rm & git commit & git push会删除工做区、暂存区、远程库对应的文件,同时在历史里会新增一个删除文件的版本。
经常使用命令
- mkdir 新建
- cd 打开
- cd .. 返回上级目录,ps:cd和..之间有一个空格
- pwd 显示当前目录
- 右键菜单→paste 粘贴,ps:ctrl+v没法实现粘贴
- tab键自动补全
- ls=list→查看文档列表(不是git命令)
- 输入i能够开始编辑
- 输入ESC能够退出编辑状态
- 输入:wq能够保存退出
- cat filename→catalogue输出文件内容
- rm -v filename→由于有-v,会多输出一行删除记录
经常使用的git命令
- git init 初始化
- git --version 查看git版本
- git status 查看git状态,总共有9种状态,常见到的有如下5种:
- untracked files 未被git管理的文档
- modified 被修改了的文档,显示红色表示是对工做区文件进行了修改,显示绿色表示是对暂存区文档进行了修改
- staged 代码在暂存区
- deleted 代码被删除
- both modified 多在merge/pull/rebase/revert时发生了conflict时显示
- git log 查看历史
- git log –pretty=oneline 查看简写版历史(包括版本号和提交日志...)
- git log --graph --pretty=oneline --abbrev-commit 查看图像版历史
- git reflog 查看全部的版本号及相关信息
- git diff 查看差别
- 无参数的状况下,查看的是working tree和last commit之间的差别
- 有参数的状况下,如
git diff a b
,a和b为版本号,查看的是a版本和b版本之间的差别
- git diff→diff的是工做区代码的差别
- git diff --cached→diff的是暂存区代码的差别
- git commit 提交/前进功能
- git revert 转换/后退功能
- 用法是
git revert a
,a是一个版本号
- 会建立一个新的commit(暂称为b)
- a和b互为相反的diff
- b仅彻底diff版本a,与a和last commit(即b)之间的版本不相关
- git reset 重置/后退功能
- 用法是
git reset a
,a是一个版本号,这里假设a是上上个版本
- 执行git reset以后,git log会发现少了上个版本(即当前版本到a的下一个版本全没有了),可是a版本还在,且文件内容是最新内容,没有作修改
- git reset --hard HEAD^回退到上个版本
- git reset --hard HEAD^^回退到上上个版本
- git reset --hard HEAD~100 回退到前100个版本
- git branch 查看分支,会列出全部的分支,当前分支前面会添加一个星号
- git branch name 建立分支name
- git branch -d name 删除分支name
- git checkout -- file 撤销,丢弃工做区的修改,file是文件名
- git checkout name 切换到name分支上
- git checkout -b name 建立并切换到分支name上,等于
git branch <分支名>
+git checkout <分支名>
- git merge name 将指定分支name合并到当前分支上
- git remote show origin 查看远程仓库的详细信息
经常使用远程操做命令
- 已有本地仓库,同步到远程仓库
- 本地没有仓库,从远程同步到本地
- 本地已有仓库,远程仓库有更新,从远程仓库同步到本地仓库
常见问题
Git提示fatal: remote origin already exists
解决办法:
- 先删除远程git仓库 ,输入
$ git remote rm origin
- 再添加远程git仓库 ,输入
$ git remote add origin 本身的github地址
- 若是执行 git remote rm origin 报错的话,能够手动修改gitconfig文件的内容,输入
$ vi .git/config
,删掉[remote "origin"]
这一行
[rejected] master -> master (fetch first)
解决办法:
使用强制推送,即git push -f origin master
Please enter a commit message to explain why this merge is necessary.
解决办法:
git在pull或者合并分支的时候有时会遇到这个界面。能够无论(直接下面3,4步),若是要输入解释的话就须要:
- 按键盘字母 i 进入insert模式
- 修改最上面那行黄色合并信息(能够不修改)
- 按键盘左上角"Esc"
- 输入":wq"(注意是冒号+wq),按回车键便可
Git资料