看完了教程,又动手实践了下,基本已经掌握GIT用法,这里记录一下;
一、基本应用,安装好GIT后,打开git bash;
1、windows下进入某个目录,并创建一个用来存放git项目的目录
2、进入创建的git目录,并初始化一下,此时项目是空的,初始化后对应的仓库就建立了;
3、现在有两种使用场景,一种是我本地有文件,但是gitee这个远程仓库没有;另外一种是gitee已有项目,如何本地操作后再远程上去;
二、先说第一种,我本地有文件,但是gitee这个远程仓库没有;
1、首先gittee建立项目,以及项目的仓库(登录你的gitee建立吧),此处可以参考别人的教程:https://www.liaoxuefeng.com/wiki/896043488029600/898732864121440操作方法也在里面写的有;
有个问题就是第一次上传东西到空仓库,会出错:failed to push some refs to git,原因在于没有把空仓库刚才手动创建的readme文件同步到本地(以上教程说的是空仓库的时候,这里因为gitee在创建仓库后提示你最好创建一个readme什么的,你可能点了,就不是空仓库了,就会第一次出现这个错误,解决方法输入 git pull --rebase origin master
先,给远程库的更新先同步到本地,然后再试)
2、先给你的本地(工作区)存到本地git暂存区
git add *
3、提交到本地的GIT仓库中,默认初始化时创建的master仓库
git commit -m "first commit"
4、建立你本地与远程仓库的链接,远程库的名字origin
,就是在建立链接时确定的,可以随便起,只用在你这台电脑上
git remote add origin git@github.com:xxxxx/xxx001.git
5、开始给你的本地库推送到远程库中
git push -u origin master
-u
只用在第一次全部推送到远程库而且远程库是空的时候,如出错见上面的第1条;-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令=》只写git push即可。
6、接下来的修改推送到远程,只需要git push即可
git push
三、第二种情景,只有远程库,想在本地操作后再推送回去
1、本地初始化一个目录,进入该目录后,克隆一个远程仓库
git init
git clone git@gitee.com:XXXXX/xxxxx.git
链接方式有两种,上面这是SSH方式,其需要配置公钥,具体见廖雪峰的教程;
2、第一次过程中需要输入个yes,然后就是回车
3、接下来就是你修改后,正常的push即可
四、服务器上的项目,改为从仓库拉取更新
1、宝塔进入对应网站目录,点击终端按钮(宝塔新版本有这个功能)
2、打开会自动cd到本目录,免去自己cd的步骤了;光标开始闪烁后,输入git,查看服务器是否已经安装了git,如果没有请自行安装;
3、初始化git,输入git init
4、因为网站目录不为空,所以先给本目录的东西加入到本地库(就是刚初始化的git仓库),git add * => git commit -m "all stage"
5、现在git branch,查看本地仓库状态,发现能正常出来master主仓库了;
6、下面开始建立与远程仓库的链接(我的仓库用的gitee)
你可能注意到了我用的是https的链接方式(这种方式会有点繁琐,需要过程中输入口令,你可以视情况改为SSH链接--SSH链接需要先配置公钥)
7、接下来直接强制拉取发现拉取不了,方法是需要重新fetch一下
得到远程仓库信息后,再次强行拉取远程数据到本地master仓库
因为我们并不在服务器上进行修改操作,所以服务器一般只有一个默认仓库master,这样拉取更新时,可以指定拉取的仓库
git fetch hmser master
8、解下来就用git pull拉取,直接拉取不来,就带上远程库的名字以及本地库的名字
(实际上,有时候这样也拉不了,会有各种报错,根据报错搜对应答案吧,pull之前,最好先git status一下)
9、搞定,已经拉取了最新的;(这样平时修改就是在自己的电脑上,推送到远程仓库gitee后,没有问题,就进服务器的宝塔中如上操作更新一波)
10、日常就不要直接修改服务器上的文件了,需要更新时,直接git pull hmser master从远程库中拉取最新即可;
解释下我的远程库名字hmser,这个可以随便起,一般教程里用的都是ororigin,在与远程库连接时,你用的啥就是啥
五、使用经验
1、以远程库为中心,远程库的master是稳定版,dev是开发板
2、在本地切换到dev进行开发,push也对应远程仓库的dev
3、修改确定后,给dev合并到本地主仓库master,先切换到master,再git merge dev(会弹出合并的理由,填写下,给编辑器关上,即可自动合并并commit),此时再push就对应远程仓库的master
4、实际使用中,服务器的某个文件或许会因操作后台而变化,导致文件变动了,pull的时候提示对应信息,拉取不了,此时就是强制git reset --hard回到上次版本处,再拉取,至于那个变化的文件,如果有需要后台操作的地方,再操作一次吧,或者下次给设置为不拉取此文件(错误提示:commit your changes or stash them before you can merge.);