github拉代码需要ssh验证
$ ssh-keygen -t rsa -C "wolichihuaXXXX@163.com" Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): Created directory '/c/Users/Administrator/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Users/Administrator/.ssh/id_rsa. Your public key has been saved in /c/Users/Administrator/.ssh/id_rsa.pub. The key fingerprint is: SHA256:/DGU66lwGZ0nhzmCKDsC+RivCPYuXQ2M6sHh6F1nU1k wolichihua2011@163.com The key's randomart image is: +---[RSA 2048]----+ .......
ssh git@github.com
The authenticity of host 'github.com (192.30.255.113)' can't be established. RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'github.com,192.30.255.113' (RSA) to the list of known hosts. PTY allocation request failed on channel 0 Hi lichihua! You've successfully authenticated, but GitHub does not provide shell access. Connection to github.com closed. Administrator@USER-20160524DB MINGW64 ~/Desktop
访问成功必会出现:
Hi xxoo! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
如果出现:Warning: Permanently added the RSA host key for IP address '192.30.255.112' to the list of known hosts.
在hosts文件夹下添加如下:
192.30.255.112 github.com
工作区(本地源代码文件) ----git add----> 暂存区(.git目录下" 下的index文件) ---git commit---> 本地仓库也叫版本库(.git文件夹) --> 远程仓库
对于所有分支而言, 工作区和暂存区是公共的
下面的动图是从Git本地数据库里校验取出文件指定的版本内容。
流程概述
小团队或者小组
大型团队流程:Jessica、Josie 与 John 是没有 master
分支的推送权限,他们需要新建分支协同工作后由管理者将下面两个分支合并整合到一起
最后:Jessica、Josie 与 John 通知整合者在服务器上的 featureA
与 featureBee
分支准备好整合到主线master中
准备工作:忽略提交
bin/: 忽略 当前路径下 的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件 /bin: 忽略 根目录下 的bin文件 /*.c: 忽略 cat.c,不忽略 build/cat.c debug/*.obj: 忽略 debug/io.obj,不忽略 debug/common/io.obj 和 tools/debug/io.obj **/foo: 忽略/foo, a/foo, a/b/foo等 a/**/b: 忽略a/b, a/x/b, a/x/y/b等 !/bin/run.sh: 不忽略 bin 目录下的 run.sh 文件 *.log: 忽略所有 .log 文件 config.php: 忽略当前路径的 config.php 文件 .gitignore规则不生效 .gitignore只能忽略那些Untracked files(没有被跟踪的文件--没有add过的),如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。 解决方法就是先把本地缓存删除(改变成未track状态),然后再提交: git rm -r --cached . git add . git commit -m 'update .gitignore'
1.创建本地仓库(git init【通过初始化创建新仓库(.git目录) 创建后以后就无需再git init了】 、git clone URL【通过克隆取到远程仓库的镜像】)
2.检查当前项目中文件状态 git status
目前它们的状态可能是未更新(unmodified,查看文件状态时默认是不显示出来的),已修改(modified)或者已放入暂存区(staged)。未跟踪文件(untracked)一般是新建的
nothing to commit:(无需任何操作了) 工作区文件与本地库一致没有改动过和没有新文件
Changes to be committed:这条状态表示下面的文件都已存入暂存区,在提交到本地仓库时会将这些变更提交到本地仓库中
new file 新增了xxx文件
deleted 删除了xxx文件
modified 以修改
Changes not staged for commit:
这条状态表示下面的文件都未存入暂存区,出现这个表示你需要git add 提示出现的文件
Untracked files:
表示以下文件还没有被追踪,一般是新建的文件: 看到这个我们必须要执行git add filename 和git commit -m "提交描述"
3.本地工作区文件增删改
4.将工作区文件提交到暂存区(跟踪新文件) git add ./test.php (只有放到暂存区的文件 commit才会提交,所以用暂存区域将你的工作最少拆分为每个问题一个提交,并且为每一个提交附带一个有用的信息。 如果其中一些改动修改了同一个文件,尝试使用 git add --patch
来部分暂存文件,不要将问题堆在一起提交!)
撤销提交到暂存区
git reset HEAD <file>
5、将暂存区的文件提交到本地仓库(本地缓存) git commit -m "提交说明"(git diff --check 检查空白字符 检查修改的文件是否只改变了空白符)
撤销提交到本地仓库
git checkout head 1.txt 2.txt #撤销指定文件
git checkout head *.txt #撤销所有txt文件
git checkout head . #撤销所有
6、与GitHub远程仓库同步 :git pull <short_name> <branch>(相当于git fetch <short_name> <branch>[:local_branch]与git meger);
推荐拆开的比较安全:
git fetch origin master:tmp //从远程仓库orgin 获取最新master分支,在本地建立tmp分支 master可省略git fetch origin:tmp
git diff tmp // 将当前分支和tmp进行对比
git merge tmp //合并tmp分支到当前分支
7、将本地仓库(本地缓存)同步到远程仓库:git push origin master
具体:
新增文件
1、添加工作区文件
touch ./test.php
可选:使用git status 查看文件状态是否改变
2、将文件提交到暂存区
git add ./test.php
可选:使用git status 查看文件状态是否改变 绿色的提示就没有问题红色要注意
3.将文件从暂存区提交到本地仓库操作
git commit -m "提交描述";
注意:git commit -am "提交描述" 自动把所有已经跟踪过的文件暂存起来一并提交 相当于git add ./test.phpgit commit -m "提交描述"(对新建的文件无效,因为没有add过^_^)
修改文件
1、修改工作区文件
2、将修改的文件提交到暂存区
git add test.php
可选:git status 提交前查看文件的状态绿色的提示就没有问题红色要注意
3.将暂存区的文件提交到本地仓库
git commit -m "提交描述";
删除文件
1、删除工作区文件
rm -f ./test.php
2、从git删除
git rm test.php
3.提交操作
git commit -m "提交描述";
git remote -v
git push origin master 把本地分支推到远程仓库origin(origin为别名)的master默认主分支下
注意:没有第一步设置别名那么需要改成这样:
git push https://github.com/lichihua/codedemogit.git master
报错:
hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
你的远程库的版本比你的本地库要新,需要先git pull 更新你的本地库后才能git push到远程库里~
简单说就是你的远程库里有了本地库没有的东西,需要先同步,然后才能把本地库内容推送到远程库里~
这是因为本地仓库和远程仓库不同步造成的比如第一次提交时没有git clone <url>
我们需要git pull远程拉取
解决办法:
$ git pull origin master
$ git push origin master
Git push问题Everything up-to-date解决办法
1、git rm -f 强制删除出现问题的文件(记得备份哦,会将本地文件一起删除掉)然后重新将这个文件add、commit、push一遍
2、创建一个新的分支提交改动在合并
1.先创建一个新的分支提交改动
$ git branch newbranch
2.检查这条命令是否创建成功
$ git branch
这时终端会输出:
newbranch
*master
这样就创建成功了,前面的*代表的是当前你所在的工作分支,接下来就要切换工作分支。
3.git checkout newbranch
4.然后将你的改动提交到新的分支上
$ git add 网页换肤
$ git commit -m"skin"
此时可以$ git status 检查下提交情况。如果提交成功,我们接下来就要回主分支了,$ git checkout master
5.我们将新分支提交的改动合并到主分支上
$ git merge newbranch
合并分支可能产生冲突这是正常的,虽然我们这是新建的分支不会产生冲突,但还是在这里记录下。可以用
$ git diff 来查看产生冲突的文件,然后做对应的修改再提交一次就可以了。
6.我们的问题解决了,接下来就可以push代码了
$ git push -u origin master
7.最后,新建分支的朋友别忘了删除分支
$ git branch -D newbranch
如果想保留分支只是想删除已经合并的部分只要把大写的D改成小写的d就行了。
3.可选:分支
git remote -v 查看分支
git fetch test master 从仓库拉取最新分支
git fetch origin master:localfolder 从别名为origin 的远程仓库里拉取master分支到本地命名为localfolder比较?
git pull 命令相当于把fetch和merge步骤合并,但在实际使用中,fetch更安全一些,我们可以先检查更新情况,再决定是否合并
1.1.git branch -a 分支名 查看所有分支(包括远程和本地分支)
1.2.git branch 分支名 查看本地分支
1.3.git branch -r 分支名 查看远程分支
2.git branch <name> 创建一个新的本地分支
3.git branch -d < name> 删除本地分支
4.git checkout <name> 切换本地分支
5.git merge <name> 合并本地分支
五、设置忽略上传的文件 touch .gitignore
gitignore
文件内容实例
# 以 # 开头的是注释,下面表示忽略aaa.txt文件 aaa.txt # 忽略以 .a 结尾的文件 *.a # 但 lib.a 除外 !lib.a # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO /TODO # 忽略 build/ 目录下的所有文件 build/ # 忽略根目录下的 node_modules 文件 /node_modules # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt doc/*.txt # 忽略 doc/ 目录下所有扩展名为 txt 的文件 doc/**/*.txt
第一次提交 :
方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样;
-- 初始化Git仓库 :Git init ;
-- 提交改变到缓存 :git commit -m 'description' ;
-- 本地git仓库关联GitHub仓库 : git remote add origin git@github.com:han1202012/TabHost_Test.git ;
-- 提交到GitHub中 : git push -u origin master ;
方案二 : 方案二就是不用关联GitHub仓库, 直接从GitHub冲克隆源码到本地, 项目根目录也不用创建;
-- 从GitHub上克隆项目到本地 :git clone git@github.com:han1202012/NDKHelloworld.git , 注意克隆的时候直接在仓库根目录即可, 不用再创建项目根目录 ;
-- 添加文件 :git add ./* , 将目录中所有文件添加;
-- 提交缓存 :git commit -m '提交';
-- 提交到远程GitHub仓库 : git push -u origin master ;
之后修改提交 :
-- 与GitHub远程仓库同步 :git pull ;
-- 查看文件变更 : git status ;
-- 提交代码到本地缓存 : git commit -m 'description';
--提交代码到远程GitHub仓库 :git push ;
.gitignore用法 : 开放模式 注明忽略的文件 直接列出文件名, 保守模式 注明保留的文件 !文件名 ;
Git标签操作 : 轻量级标签, 带注释标签;
--查看标签 :git tag ;
--添加标签 : 轻量级标签git tag -a tagName -m 'description' ;
--删除标签 :git tag -d tagName ;
--提交标签到GitHub中 : git push origin --tags ;
Git分支操作: 创建分支后, 分支操作不会影响master分支, 但是master分支改变会影其它分支;
--列出分支 :git branch ;
--切换分支 :git checkout master ;
--提交分支 : git push origin branchName ;
--删除分支 : git branch -D branchName ;
--合并分支 : git merge branchName ;
(4)进入要上传的仓库,右键git bash,添加远程地址:
$ git remote add origin git@github.com:yourName/yourRepo.git(git remote add origin git@github.com:lichihua/moodlemod.git)
后面的yourName和yourRepo表示你再github的用户名和刚才新建的仓库,加完之后进入.git,打开config,这里会多出一个remote “origin”内容,这就是刚才添加的远程地址,也可以直接修改config来配置远程地址。
4.提交、上传
(1)接下来在本地仓库里添加一些文件,比如README,
$ git add README
$ git add README$ git commit -m "first commit"
(2)上传到github:
$ git push origin master
git push命令会将本地仓库推送到远程服务器。
git pull命令则相反。
修改完代码后,使用git status可以查看文件的差别,使用git add 添加要commit的文件,也可以用git add -i来智能添加文件。之后git commit提交本次修改,git push上传到github。
搭建git网站
Github Page搭建网站
个人网站
访问:
搭建步骤:
1. 创建个人站点 -> 新建仓库(注意:仓库名必须是 用户名.github.io)
2. 在仓库下新建index.html的文件
注意:github pages只支持静态网页
仓库里面只能是.html文件
项目站点
访问:
搭建步骤:
1. 进入项目主页,点击settings
4. GitHub Pages 选项下选择好主题
5. 通过README.md设置网页 编写
Hi lichihua! You've successfully authenticated, but GitHub does not provide shell access. Connection to github.com closed.