Git的中起源和主人的介绍以及建立Github的仓库链接简单介绍
首先要明确一点,对GIT中的操作是围绕3个大的步骤来展开的(其实几乎所有的SCM都是这样)
1.从git取数据(git clone)
2.改动代码
3.将改动传回git(git push)
这3个步骤又涉及到两个存储库,一个是远程存储库,再远程服务器上,一个是本地存储库,再自己工作区上。其中1,3个个步骤涉及到远程服务器/远程存储库/远程分支,
2涉及到本地存储库/本地分支。克隆会根据你指定的远程服务器/存储库/分支,拷贝一个副本到你本地,再git推之前,你对所有文件的改动都是在你自己本地的本地存储库来做的,你的改动(本地分支)和远程分支是独立(并行)的.Git显示的就是本地存储库。
在克隆完成之后,Git会自动为你将此远程仓库命名为origin(origin only相当于一个别名,运行git remote -v或者查看.git / config可以看到origin的含义),并下载其中所有的数据,建立一个指向它的主分支的指针,我们用(远程仓库名)/(分支名)这样的形式表示远程分支,所以origin / master指向的是一个远程分支(从那个分支我们克隆数据到本地) ,但你无法在本地更改其数据。
同时,Git会建立一个属于你自己的本地master分支,它指向的是你刚刚从远程服务器传到你本地的副本。随着你不断的改动文件,git add,git commit,master的指向会自动移动,你也可以通过merge(fast forward)来移动master的指向。
$ git branch -a(显示git知道的所有分支)
$ git branch -r(显示远程分支git知道)
Github的仓库建立连接步骤
1.现在github上新建一个仓库,只需要新的存储库,先按默认的来,什么自述文件,忽略等文件可以先不建立,直接先按默认的写好名字即可
2.打开终端,CD到指定目录
git init
3.添加文件到本地仓库
git add。
这里的可以一个个添加,也可以添加后面加个。直接全部添加到本地仓库
4.提交(后面写好备注)
git commit -m“第一次提交”
5.打开GitHub的仓库页面,在克隆和下载里面找到,我这里点击的是SSH,复制出来
git remote add origin {远程仓库地址}
6.push到远程仓库
git push -u origin master
OK,这样子最简单的初始创建就结束了,不展开,只是做个例子用。
Q1:github提示权限被拒绝(publickey)
点击打开链接
极大多数情况是由于github账号没有设置ssh公司信息所致。前往GitHub网站的“帐户设置”
依次点击“设置 - > SSH密钥” - >“新SSH密钥”
标题处填写“id_rsa.pub”或其他任意信息.key处原样拷贝贝下面命令的打印`〜/ .ssh / id_rsa.pub`文件的内容:
```
cat~ / .ssh / id_rsa.pub
```
这句生成的一整坨命令直接复制到github上里面的SSH设置里面
如没有则按下述方法生成:
ssh-keygen -t rsa
一路回车......
最后,输入“ssh -T git@github.com”确认OK即可。
再尝试输出就应该有了
```
cat~ / .ssh / id_rsa.pub
```
Q2:里面的Origin和Master到底是什么意思
mintoudeMacBook-Pro:NewWeexDemo mintou $ git branch -a
*主人
遥控器/来源/主
mintoudeMacBook-Pro:NewWeexDemo mintou $ git branch -r
产地/主
mintoudeMacBook-Pro:NewWeexDemo mintou $
根据上面创建的git的目录,我们在这里进行查看
可以发现,master就是本地分支,origin / master是远程分支
master是本地存储库中的一个分支。remotes / origin / master是一个名为master的分支,名为origin
$ git diff origin / master master(显示远程主分支和我的主分支之间的更改)。
$ git diff origin / master remotes / origin / master
-a查看所有本地和远程仓库,其中遥控器标识的只是代表远程仓库,遥控器/来源/主和原点/主的指向是相同的
-r仅仅查看远程仓库,因此就不会有遥控器前缀
git push origin master
原产地指定了你要推向哪个远程仓库。
master其实是一个“refspec”,正常的“refspec”的形式为“+:”,冒号前表示local branch的名字,冒号后表示remote repository下branch的名字。注意,如果你省略了,git就认为你想推到远程仓库下和本地分支相同名字的分支。听起来有点拗口,再解释下,推是怎么个推法,就是把本地分支指向的提交到远程仓库下的分支
比如上面推的全称就是
git push origin master:master
在本地存储库中找到名字为master的分支,使用它去更新远程存储库下名字为master的分支,如果远程存储库下不存在名字是master的分支,那么新建一个
因为本地仓库名字和远程仓库名字相同,就可以直接省略的远程名字
git push origin master:refs / for / mybranch
在本地存储库中找到名字为master的分支,用他去更新远程存储库下面名字为mybranch的分支
git push origin HEAD:refs / for / mybranch
HEAD指向当前工作的分支,主不一定指向当前工作的分支,其实如果你无论在哪个分支,直接把当前分支推上去
git push origin:mybranch
再生源库里面查找mybranch,删除它。用一个空的去更新它,就相当于删除了
补充一些指令:
找 。-name“.git”| xargs rm -Rf移除所有.git,可以重新关联
git status查看当前工作目录修改状态
在git commit之前,所有的内容都会先进入暂缓区
git diff#是工作区(work dict)和暂存区(stage)的比较
git diff --cached#是暂存区(stage)和分支(master)的比较
git add文件名添加到工作区git add。所有的都添加到工作区
git commit -m提交
git log查看提交log --pretty = oneline一行显示SHA1来标记
git reset回到之前的提交版本git reset --hard HEAD ^ HEAD ~~上上个HEAD~100
commit 1 commit 2 commit 3
可以任意重置穿梭记得id就好
如果忘记了可以用git reflog查看所有的提交记录
cat标准输入并打印文件