将本地项目文件上传至github相关步骤(以下未特殊说明的均代表首次)
git官网:https://git-scm.com/
github官网:https://github.com/
git的安装以及GitHub的注册这里就不说了。
下边就直接从上传开始。
第一步:我们需要先创建一个本地的版本库(其实也就是一个文件夹)。
你可以直接在桌面右击新建文件夹(这里命名为test2),也可以右击打开Git bash命令行窗口通过命令来创建。
第二步:在命令行中输入git init把这个文件夹变成Git可管理的仓库
这时你会发现test里面多了个.git文件夹,它是Git用来跟踪和管理版本库的,因为它默认是隐藏文件,要是看不到就设置下文件夹和搜索选项,让隐藏文件可见。
之后把需要上传到GitHub的文件全部复制到这test2这个文件夹下。
git add .(注意这个".",是有空格的,"."代表这个test这个文件夹下的目录全部都提交。你也可以通过git add 文件名 提交指定的文件)把文件添加到缓存区
然后可以通过git status命令,查看下现在的状态,也可以不看,随你
看到有css,js文件夹的内容都提交上去了。
git commit -m
第三步:连接远程仓库(也就是连接Github)
由于本地Git仓库和Github仓库之间的传输是通过SSH加密的,所以连接时需要设置一下:
先创建SSH KEY。先看一下你C盘用户目录下有没有.ssh目录,有的话看下里面有没有id_rsa和id_rsa.pub这两个文件,有就跳到下一步,没有就通过下面命令创建
$ ssh-keygen -t rsa -C "youremail@example.com"
然后一路回车。创建成功后会显示这样:
这时你就会在用户下的.ssh目录里找到id_rsa和id_rsa.pub这两个文件。但是这个文件刚创建的时候是没有known_hosts文件的,而我这里有是因为我提交成功后生成的。
第四步:登录Github,找到右上角的图标,打开点进里面的Settings,再选中里面的SSH and GPG KEYS,点击右上角的New SSH key,然后Title里面随便填,再把刚才id_rsa.pub里面的内容复制到Title下面的Key内容框里面,最后点击Add SSH key,这样就完成了SSH Key的添加。具体步骤也可看下面:
(这几步是把项目上传至github服务器,但是多数情况下,企业会把项目上传至自己的服务器上,跟上传至github服务器步骤差不多,也是要在GitLab(相当于国内的github吧)新建一个属于你自己的账号,然后管理员将你拉进公司项目开发组,随后你自己再将公钥上传上去即可,接下来的步骤类似)
上面key默认在C:\Users\Administrator\.ssh下的id_rsa.pub文件中,把这个文件中的内容全部复制到上面的key里面就可以了。如下图:
第五步:在Github上创建一个Git仓库(也可以不新建,不新建则直接查看第七步)。
你可以直接点New repository来创建,比如我创建了一个test2(命名最好与你第一步里的文件夹名称一致)的仓库。
上面我没有默认勾选Initialize this repository with a README,勾选和不勾选创建的结果区别如下(这里建议勾选):
下边这个是勾选的
第六步:在Github上创建好Git仓库之后我们就可以和本地仓库进行关联了,根据创建好的Git仓库页面的提示,在git 命令行里输入:
$ git remote add origin git@github.com:CharlesTian07/test2.git
一定要记得$ git remote add origin git@github.com:这部分命令是固定的,但是后面的是你的github账户昵称和你创建的项目名称。上面的只是举个例子,实际上要怎么找到这两个信息,看下图:
附(特殊说明):
若是想在另外一台电脑同步的话,那么输入命令git pull git@github.com即可
但是第一次pull或者上传的时候会出现以下问题,如图:
意思很明显,因为你是第一次,所以远程仓库并不知道你是谁,这时你需要先表明你的身份是否在开发组中, 接下来根据提示的步骤来输入你的账号和密码:
①git config --global user.email "youraddress@company.com"
②git config --global user.name "yourname"
第七步:关联好之后我们就可以把本地库的所有内容推送到远程仓库(也就是Github)上了,通过:
$ git push -u origin master
由于新建的远程仓库是空的,所以要加上-u这个参数(如果仓库不是空的,加了会报错)。
注意:这里可能会报这样的错误:
The authenticity of host 'github.com (13.229.188.59)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
提示:这里有个小坑!!!值得注意!那就是在报第一句话的错误时候,它会显示这么一句:
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
而这里千万不能直接回车!!!千万不能直接回车!!!千万不能直接回车!!!
其实这里只需要在命令栏输入:yes即可!就可将本地项目文件上传至github!
如果上述操作之后还是会报错,那么可能有以下几个原因:
原因:1.github上没有与本地仓库相关联(重新remote)
2.ssh不对(多数情况)
ssh解决:
1. cat ~/.ssh/id_rsa.pub 查看ssh是否是自己的,不是说明是ssh问题,是的就是远程关联问题
2. 如果是ssh问题则在git仓库同目录 删除.ssh文件夹 (隐藏文件夹)
判断删除成功: cat ~/.ssh/id_rsa.pub
出现cat: /c/Users/ZhangLin/.ssh/id_rsa.pub: No such file or directory
3.重新创建ssh ssh-keygen -t rsa -C "your_email@example.com“
一路回车
4.在ssh文件夹下pub文件中的内容复制 github上新建一个ssh链接
最后上传完毕之后,进去GitHub battleEnglish这个仓库刷新下就会有已经上传的文件夹了。
如果新建远程仓库不是空的,例如你勾选了 Initialize this repository with a README。那么你通过命令 $ git push -u origin master是会报错的,如下:
这是由于你新创建的那个仓库里面的README文件不在本地仓库目录中,这时我们可以通过以下命令先将内容合并以下:
$ git pull --rebase origin master
再输入$ git push origin master。
等远程仓库里面有了内容之后,下次再从本地库上传内容的时候只需下面这样就可以了:
$ git push origin master。
至此就完成了将本地项目上传到Github的整个过程。
如果项目是由一个人开发的:
(1)如果项目已在github上:
1.在另外一台计算上,从你的github账户上点击clone or download下载你的项目文件;
2.下载好之后,在桌面任意地方右键git Bash here弹出git命令操作窗口(前提是要下载git工具);
3.然后在里面输入命令进入到你存放项目的路径文件夹中;
4.下载下来的文件中是没有.git文件夹的,而.git文件夹的作用是连接你本地和github服务器的,所以你要输入命令:git init创建一个.git文件夹,这个文件夹默认是隐藏的,如果你看不见,你可以设置一下对隐藏文件可见(具体操作可百度);
5.如果你要实时从github上更新数据到你的本地,那么你要输入命令:git pull "your project http URL",下面就会出现哪些文件更新到了你的本地;
二、如果项目是由多人开发的:
可以创建分支branch,然后各开发各的,最后再merge即可。
具体实现操作待更新....
----------------------------------------------------------------2018.11.13更新----------------------------------------------------------------
1.远程仓库创建新建分支(可百度搜索)之后,在git输入命令:git branch -a;可查看远程分支的名字,此时是看不到的,因为你还没有把这个分支取到,所以你要先获取到;
2.接下来需要在git中输入命令:git fetch origin develop(develop是新建的分支名)可获取远程所有分支,然后再输入命令:git branch -a;可查看远程分支的名字;
3.再输入命令:git checkout -b develop origin/develop即可切换分支
---------------------------------------------------------2019.4.15更新----------------------------------------------------------
1. 如果是所有的开发配置都已经弄好(一般新手刚入职时,负责你的同事基本会帮你把这些配置都弄好了),只需要直接新建一个分支进行开发的话,在相应的开发项目根目录下,运行git bash here,然后直接输入:git checkout -b yourdevname(yourdevname就是你分支的名字,-b的意思是新建分支,下图dev-tc是博主创建的分支名);
2. 这个时候,因为你已经在项目开发当中,每天需要把修改的文件提交至gitlab,该怎么提交?
1)git add . (后面的点不要忘记!)
意思是把修改过的本地文件甄别出来
2)git status (这个步骤对于新手来说,最好不要忽略!)
这个步骤可显示你修改的文件具体是哪些,便于核查,避免出错(有时候连高手也不会跳过这个步骤)
3)git commit -m "your comment is here"
这个步骤是写下你的注释,即你修改的需求是啥
4)因为你是第一次提交代码,所以你先要连接远程仓库:git remote add origin project-url
否则你直接跳过步骤4)和5)而进行步骤6)会报以下错误:
5) 还是因为你是第一次提交代码,且远程仓库并没有你在第1个大步骤创建的分支,所以你还需要把你的分支给上传至远程仓库
git push --set-upstream origin yourdevname
如果跳过5)步骤直接进行6)步骤会报以下错误:
6)所有准备步骤都已备齐,是时候表演真正的技术了,最后一步就是把修改的代码提交至远程仓库即可。
git push
它会显示push的实时进程
7)去gitlab可查看你的分支名和上传的代码,会发现你在git操作的指令与gitlab上的项目完美配对~
8)看到自己的代码上传上去之后,是不是觉得有一种成就感?哈哈哈,别急着高兴,由于你提交的代码只在你的分支上,若是有其他人跟你一起开发同一个项目(不同模块),他也有一个分支,刚好在你提交代码的前几分钟他也上传他的最新代码,那怎么让他做的功能也显示在你的本地代码上呢?很简单,执行命令:
git pull origin dev-anotherDeveloper
就可以拉取到他的最新代码了,然后再一起提交至你的代码即可。
9)若是在第五步的时候,你想提交的并不是你的分支,而就是master,且你已做了以上六个步骤,在第七个步骤的时候,发现gitlab上的commits并没有你提交代码的记录,那说明还没有提交至master,那么应该这样操作:
(1)git pull
(2)git branch --set-upstream-to=origin/master master
(3)git push
------------------------------------------------------2019.05.16更新---------------------------------------------------------
1. 如果自己刚上传的版本,在测试环境下运行符合自己的预期,但是在接下来的修改中(修改有点多的情况下),再运行时发现总是报错,且查找错误耗费了一定时间,实在耗不起了,则可以进行回滚版本操作:
在git命令窗口里输入:
git reset --hard HEAD^
(^表示回滚一次)
或者
git reset --hard HEAD~n
(n表示n次)
2. 如果自己本地有修改的文件,在上传的时候发现有远程版本需要pull,但是你会发现你git pull之后,命令窗口会显示需要你输入merge之后的commit(注释),这个你发现按enter键无效,不知道该怎样才能进行接下来的git操作,此时:
在git命令窗口里按照顺序依次按下:
①shift + :
②q
③enter
就好了。
------------------------------------------------------------2019.5.27更新------------------------------------------------------
如果你完全进入到了项目开发中,而你最近的代码是一直上传在你的分支上的,如果你的组长现在要你将分支的代码更新到master上,那么你要这样做:
1. 首先从你的分支切换到master:git checkout master
2. 然后拉取你原先的分支代码:git pull origin dev-branchName
3. 跟组长申请权限,权限下放之后,就可以提交代码了:git push --set-upstream origin master
4. 再切换至你的分支,进行下一版本的开发工作:git checkout branchName
------------------------------------------------------------2019.11.20更新------------------------------------------------------
.gitignore文件不生效的问题,可执行以下命令:
git rm -r --cached .
git config core.autocrlf false
git add .
git commit -m 'update .gitignore'
git config core.autocrlf true
----------------------------------------------------------2019.11.27更新---------------------------------------------------------
撤销本地文件修改(撤销git add . 操作),可执行以下命令:
撤销某个文件(以debug.log为例)的命令:
git reset HEAD debug.log
撤销全部文件的命令:
git reset -hard "HEAD^"
---------------------------------------------------------2019.12.10更新----------------------------------------------------------
今天又学到了 git 的一个新操作:git cherry-pick
意思是你可以用这句命令去获取其他分支上的提交。比如:有两个分支dev-other,dev-mine,你的mine分支是开发的主分支,bug的修复在other分支,而不巧的是你在修改bug时忘记切回other分支了,也就是说你的修改都在mine分支上,也提交了,虽然说可以通过merge的方式合并你修改的代码,但是有一定的风险,这个时候就可以用git cherry-pick
只需执行:git cherry-pick commit-version ,这个commit-version就是提交代码时产生的一个key或者id,它是这样的:
也就是你切换到你修复bug的other分支,然后执行命令:git cherry-pick 6f9c4733 ,即可把mine分支上的提交记录给拿过来,也就是说,你的other分支上也有了你修复bug的记录,很是方便
---------------------------------------------------------2020.04.01更新----------------------------------------------------------
Git命令回退指定版本并同步到远程仓库
1.查看要回退的commit版本号(或者去github/gitlab上找到项目-开发分支-commit)并复制
git log
2.复制版本号后执行下面的命令,其中commitHashNumber就是commit的版本号
git reset --hard commitHashNumber
3.同步到远程仓库,执行下面命令,其中branchName就是你的目前的开发分支
git push -f origin branchName
--------------------------------------------------------git 删除本地分支和远程分支---------------------------------------------
1. 切换到master分支
2. 删除:git branch -d branchName(分支名)
3. 强制删除:git branch -D branchName(分支名)
4. 删除远程分支:git push origin --delete branchName(分支名)
------------------------------------------------git 删除已被删除的分支--------------------------------------------------------------
1. git remote prune origin
------------------------------------------------强制删除远程仓库的文件或文件夹------------------------------------------------
1.git rm -r --cached .
2.git commit -m"删除远程仓库全部,本地不变"
3.git push origin master
4.git add .
5.git commit -m"添加忽略文件"
6.git push origin master
------------------------------------------------重新连接远程仓库------------------------------------------------
1.git remote set-url origin xxxxxxxxxxxxxxxxxxxxx.git
------------------------------------------------新建分支并推送至远程仓库-----------------------------------
1.git branch xxx
2.git checkout xxx
3.git push -u origin xxx
------------------------------------------------切换分支时,报Permission denied问题---------------------------------
git切换分支后出现类似的错误:
error: cannot stat 'src/components/xxx/index': Permission denied
解决方案:关闭占用此项目的所有程序
1.关掉编辑器(IDE)
2.关闭项目相关的服务器
3.再次执行git命令即可
----------------------------------------------------2021.11.19 更新----------------------------------------------------------
当你拉取了项目代码,并已经开发了一部分,这个时候你发现你在master分支,并没有新建分支去开发,那么这个时候则需要git stash 暂存代码
1. 首先,执行命令:git stash 将未提交的代码存入git缓存区(这个命令会删除本地未提交的代码)
2. 然后,新建一个开发分支,执行命令:git checkout -b develop ,这时你就在新建的分支上了
3. 最后,执行命令:git stash pop 将缓存区未提交的代码再取回本地,这样就可以再执行接下来的正常操作了,而master分支依旧保持原代码未改变
---------------------------------------------------2021.11.19 更新------------------------------------
执行命令:git remote -v 可以查看链接仓库方式是git 还是 http
---------------------------------------------------更新-----------------------------------------------------
新增tag 执行命令:
1. git tag -a v1.0 (带备注的命令:git tag -a v1.0 -m 'v1.0')
2. git push origin v1.0
-----------------------------------------------------更新----------------------------------------------------
删除tag执行命令:
1.先删除本地tag:git tag --delete tagname
2.删除远程tag:git push origin --delete tagname
-----------------------------------------------------更新----------------------------------------------------
fatal: refusing to merge unrelated histories 问题解决办法:
1.git pull origin master --allow-unrelated-histories