Git Bash Here操作

克隆
git clone http://git.oschina.net/hod/c98
拉取
git pull

git基本操作命令:

pwd: 显示当前工作空间

ls: 显示目录列表

ls -a : 显示所有目录

ls -l : 显示目录列表详细信息

cd : 切换目录

cd 目录路径( 切换到指定目录)

cd 切换到家目录

cd … 返回上一级

mkdir hod 创建目录

创建文件 touch a.php

删除目录(递归删除包括文件):rm -rf hh(删除hh目录,里面的一切删除掉,包括hh)

git add -a 添加全部文件到 推车

项目传输三部曲:

1git add . (加入小推车)

2git commit -m ‘提示’(提交到本地仓库)

3git push(推送到线上仓库)


新项目操作-代码推送:

1创建本地库并完成初始提交

git init(初始化本地仓库)

git add .(添加到小推车,'.'代表所有文件,也可以单个文件名)

git commit -m “提示”(提交到本地仓库)

2添加远程仓库(一个项目一个仓库,需在git上重新创建一个项目repository)

git remote add origin git@github.com:hod/hh-xj.git(此处黏贴github中新建repository的ssh方式的密匙)

3.查看远程库

git remote -v(命令后需出现两行密匙,后分别跟fetch和push)

4.推送数据到远程仓库

git push -u origin master

拉取代码:

参考文档https://www.cnblogs.com/lianghe01/p/5806518.html

1、用克隆:

初始化仓库git init->git clone https://github.com/abellmz/first(就是项目仓库地址,也可以是本地仓库地址)**默认拉取主分之代码**

2、分支推送、拉取:

2.1git branch -a 查看所有分支

默认只有master分支,所以会看到如下两个分支

1
2
master[本地主分支] origin/master[远程主分支]
新克隆下来的代码 默认master 和origin/master是关联的,也就是他们的代码保持同步

2.2创建本地分支

1
2
git branch dev
发布远程分支:git push origin dev:dev (本地分支:远程分支)这样远程仓库也有一个dev分支

2.3在dev分支开发代码合并主支后推送和分支推送

1
2
3
4
5
6
7
8
9
10
11
12
13
git checkout dev  # 切换到dev分支进行开发
开发代码之后,有两个选择
第一个:如果功能开发完成了,可以合并主分支(当前操作分支代码改变,被合并分支代码不变)
git checkout master # 切换到主分支
git merge dev # 把dev分支的更改和master合并
(我是先在dev中加入小推车,在放入本地仓库,最后切换master,合并dev时会发现,dev中的文件复制到master中一份了)
git push # 提交主分支代码远程()
git checkout dev # 切换到dev远程分支
git push # 提交dev分支到远程 master和dev可以看做两个地方,需要分别推送,远程才会对应改变

# 第二个:如果功能没有完成,可以直接推送
git push # 提交到dev远程分支(**可能错误提示**需要设置对应上游远程分支,设置就可以了,比如git push --set-upstream origin dev 分支名也叫远程叫dev 上游叫dev 本地也叫dev 这三上游分支和另外两个分支的却别,还没搞清楚)
# 注意:在分支切换之前最好先commit全部的改变,除非你真的知道自己在做什么

2.4拉取dev分支代码

参考文档https://blog.csdn.net/carfge/article/details/79691360

2.4.1初始化仓库git init

2.4.2与远程建立连接

git remote add origin git@github.com:abellmz/first.git 查看远程出现两条数据

2.4.3远程分支拉取到本地(执行完后没有代码哦)

git fetch origin dev(dev为远程仓库的分支名)

2.4.4在本地创建分支并切换到dev分支

git checkout -b dev(本地分支名称) origin/dev(远程分支名称)

这个是创建并切换分支的命令,如果直接git branch dev或者master都会报错,原因还没弄清楚

2.4.5把某个分支上的内容都拉取到本地

git pull origin dev(远程分支名称),克隆的代码缺少vendor目录,是因为laravel在文件上传的时候将一些文件给忽略了(.ignore文件),运行终端运行composer instal就可以了出现vendor目录

github 转码云gitee操作:

**开源中国:**开源中国成立于2008年8月,是目前国内最大的开源技术社区,拥有超过200万会员,形成了由开源软件库、代码分享、资讯、协作翻译、码云、众包、招聘等几大模块内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。

2013年,开源中国建立大型综合性的云开发平台——码云,为中国广大开发者提供团队协作、源码托管、代码质量分析、代码评审、测试、代码演示平台等功能。

**码云(gitee.com)**是开源中国推出的代码托管平台,支持 Git 和 SVN,提供免费的私有仓库托管

**SVN:**是Subversion的简称,是一个开放源代码的版本控制系统,它的设计目标就是取代CVS(C/S系统,是一个常用的代码版本控制软件)。用于多个人共同开发同一个项目,共用资源。

**SSH:**安全外壳协议 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定。最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台,几乎所有UNIX平台,都可运行SSH。

**Markdown:**是一种纯文本格式的标记语言。http://www.coderli.com/write-readme-for-your-project/

1、修改远程关联:

git remote set-url origin git@gitee.com:abellmz/blog.git

命令$ git push -u origin master出问题
Permission denied (publickey).
fatal: Could not read from remote repository.

2、将公匙贴入gitee的ssh公匙中

cd ~/.ssh

ls

$ cat ~/.ssh/id_rsa.pub

复制公匙到码云的ssh公匙中

在push,问题: ! [rejected] master -> master (fetch first)
error: failed to push some refs to ‘git@gitee.com:abellmz/blog.git’

hint: Updates were rejected because the tip of your current branch is behind

报错改变,公匙贴入做法是对的

3、由于码云新建仓库中有代码文件,不能覆盖

git fetch之后git merge

不报错Already up-to-date.

4、重新上传成功

git add . git commit -m ‘提示’ git push -u origin master

参考文档:

https://blog.csdn.net/LJFPHP/article/details/79508859

https://blog.csdn.net/m0_37806112/article/details/82289606

附带:clone操作没问题,分支操作也一样

小知识点:

1、ssh和https方式的区别:

https://blog.csdn.net/qq_26394087/article/details/71740192(更多详情看连接)

1.clone项目:使用ssh方式时,需要配置个人的ssh key,并将生成的ssh公钥配置到git服务器中。下面会谈到如何生成并设置你的ssh key。而对于使用https方式来讲,就没有这些要求。

2.push:在使用ssh方式时,是不需要验证用户名和密码,如果你在配置ssh key时设置了密码,则需要验证密码。而对于使用https方式来讲,每次push都需要验证用户名和密码

用户名和邮箱:

查看-》 $ git config user.name

​ $ git config user.email

修改(和设置一样):$ git config --global user.name “xxx”

​   $ git config --global user.email “xxx”

2、git clone和git pull的区别:

git clone:

从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库,叫做clone.(clone是将一个库复制到你的本地,是一个本地从无到有的过程)
git pull:

从远程服务器获取到一个branch分支的更新到本地,并更新本地库,叫做pull.(pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库)

git pull 命令等同于先做了git fetch(拉取) ,再做了git merge(合并)。

3、分支dev推送和拉取的代码和主支master代码一样吗

分支dev推送的代码由于是在原代码库的基础上新增的,所以和master相比会多出改变的文件,但master的代码不变,也就是说,远程dev和master拥有两套代码

git clone默认拉取master分支代码,拉取分支dev的代码,道理同上,两套不同的代码

4、如果本地分支中内容不同,转换分支后,仓库对应改变
5、克隆下载ssh和https有什么不同

https git clone是长这样的:git clone https://github.com/project/repo.git

ssh git clone是长这样的:git clone git@github.com:project/repo.git(远程关联)

区别:

https用443端口,可以对repo根据权限进行读写,只要有账号密码就可进行操作。

ssh则用的是22端口,也可以对repo根据权限进行读写,但是需要SSH Keys授权,这个key是通过ssh key生成器生成的,然后放在github上,作为授权的证据,这样的话就不需要用户名和密码进行授权了。

已解决问题:

1、文件太大传不到远程:

fatal:The remote end hung u 9%p unexpectedly

1.检查是否存在ssh key

$ ls ~/.ssh/id_rsa.pub如果出现文件路径则存在

2.生成ssh key

$ ssh-keygen -t rsa -C “your@email.com

-t 指定密钥类型,默认是 rsa ,可以省略。

-C 设置注释文字,比如邮箱。

-f 指定密钥文件存储文件名。

以上代码省略了 -f 参数,因此,运行上面那条命令后会让你输入一个文件名,用于保存刚才生成的 SSH key 代码。连续3个回车。如果不需要密码的话。 最后得到了两个文件:id_rsa和id_rsa.pub。

如果你是第一次使用git,在此步骤前先设置自己的用户名和邮箱

$ git config --global user.name “yourname”
$ git config --global user.email “your@email.com

3.添加密钥到github上

打开你的id_rsa.pub文件,拷贝内容粘贴到github上的ssh设置里就可以了。

1
cat ~/.ssh/id_rsa.pub

复制,ssh-rsa…到最后。

具体操作:登录你的github账号,点击右上角设置,点击Settings->点击左边菜单栏的 SSH key,添加一个新的sshkey,将代码贴入,完成。

4.测试

$ ssh -T git@github.com

第一次的话期间若出现是否continue,输入yes,出现hi。。。(加上你的用户名)就成功了。

然后打开项目目录,.git文件夹下的config内容中修改成如下所示,即把url换成ssh方式的路径就ok了(若已经一样就不用改了),…是你的用户名及项目名,不用自己输入,到github上获得你的ssh方式的路径粘贴过来就ok。

[remote “origin”]
url = git@github.com:…git
fetch = +refs/heads/:refs/remotes/origin/

最后再次提交远程就可以了。

参考文献:

https://blog.csdn.net/qq_26394087/article/details/71740192

http://www.cnblogs.com/chuyanfenfei/p/8035067.html

https://www.cnblogs.com/hanxianlong/p/3464224.html

报错:

2、由于尝试命令,导致主分支master被本地仓库被删除了很多文件,想要合并分支dev中的文件。

git fetch origin dev

git checkout master
git merge dev

报错:fatal: refusing to merge unrelated histories

这时需要用命令git merge dev --allow-unrelated-histories

再git add . git commit -m ‘’ git push -u origin master

3、报错:The authenticity of host。。。。can’t be established.r

解决:输入yes就行了

4、报错:warning: LF will be replaced by CRLF in…文件地址

Linux系统和windows系统下的换行符不一样Linux是’\n’既LF,windows下面确实’\r\n’既CRLF。

git config –global core.autocrlf true//设置git在push转换成lf,pull的时候转换成crlf(其实默认配置就是这个样子的)

git config –global core.autocrlf false//设置git在push和pull的时候不会进行转换(这个不会报CRLF的错误但是可能会出现错误,有人laravel的routes.php配置的路由运行不了)

git config –global core.autocrlf input//设置git在push的时候将lf转换成crlf,pull的时候并不会把crlf转换成crlf。

解决:检查git config --list发现有两个core.autocrlf=true,vi ~/.gitconfig->i->删除core下面的autocrlf=true->再次检查git config --list发现只有一个了。

提交还是报这个错->运行git config –global core.autocrlf false(现在只有自己的电脑window10在用代码,进公司的话可能需要改动)->再次检查git config --list出现两个core.autocrlf一个为true,后面一个为false.->尝试提交代码不报错

参考https://blog.csdn.net/w6248117/article/details/76177103