背景:昨天把自己的项目从Windows移植到服务器上,但有一些小细节要更改。在服务器上改又太慢,在本地改使用Xftp又得自己定位到改的地方,然后再覆盖,同时可能会出现端口占用的情况。最终还是Git方便同时还顺带有很多其他的功能。
零、需要去Git官网注册个账号
https://github.com/
一、下载安装
1.1在windows 下安装git
直接默认安装下一步即可
1.2在linux 下安装git
sudo yum install git
sudo atp-get install git
二、在Git创建库
登录账号后,在右上角点击Your repositories
左上角新建New
新建一个testGit库
二、配置
2.1windows配置
1、安装完成后打开Git Bash
2、使用Shell命令定位到你的项目的目录下
3、初始化,将目录变成Git可管理的目录
它会在目录下自动生成一个.git的隐藏文件
4、配置自己的Git账号
git --global config user.email "刚才注册Git的邮箱"
git --global config user.name "刚才注册Git的用户名"
5、连接远程库
git remote add origin git@github.com:用户名/testGit.git
6、创建ssh-key
ssh-keygen -t rsa(一直回车)
他会自动生成私有钥(对公有钥进行解码用的,不要告诉任何人)和公有钥,其中一行中的id_rsa.pub表示公有钥,id_rsa表示私有钥
7、将公有钥添加到Github上,获得权限
cat /c/user/shinelon/.ssh/id_rsa.pub
把内容复制下来(注意复制要完整),然后点击github右上角的设置
点击SSH开头,点击New。起个名字,将刚才复制的公有钥放进去。点击Add SSH key
8、将项目下的所有文件提交到刚才建立的私有库testGit
add是添加 | commit是提交 | -m是提交说明 | pull 拉 | push是推送 | -u是将本地的master分支与远程的master分支关联起来(第一次需要用) | origin是远程库的默认名,可以换名 | mater是分支名称
–allow-unrelated-histories 允许相关的两个库合并,将本地和远程两个项目合并(实际就是把刚创建的库中的LICENSE文件pull到本地)
注:因为新建库里没东西才用这个命令。如果你在自己新建的分支上进行add和commit你会再次看到类似的fatal,类似 origin/master test1 如果你在test1分支下设置了允许合并后–allow-unrelated-histories,你的分支test1会直接绕过master再次和你的项目合并。
那如果不想允许两个库合并呢?
方法是先在github上创建库然后clone到本地,配好公有钥后同样使用分支add commit等命令操作,相当于你把项目手动放进clone好的的本地库,提交时在更新到远程库
git add .
git commit -m "这是一次测试"
git pull origin master --allow-unrelated-histories (如果打开了文件直接:q 退出)
出现这个的话就:使用管理员方式打开记事本,再使用记事本打开C:\Windows\System32\drivers\etc下的hosts文件,添加如下
13.250.177.223 github.com
git pull origin master --allow-unrelated-histories (再拉一次)
git push -u origin master
查看,本地和远程库已同步
2.2linux配置
假设这是你网站项目的位置:/var/www/testGit
1、生成ssh-key
直接在linux中输入(和刚才windows一样一直enter)
ssh-keygen
2、将公有钥添加到Github上,获得权限
cat /root/.ssh/id_rsa.pub
复制公有钥到Github的SSH管理
3、克隆你的刚才在windows上传的项目
cd /var/www
复制项目地址
git clone git@github.com:你的名字/testGit.git
chmod 777 /var/www/testGit
三、实时更新
1、在windows下创建和使用分支
创建
git branch test1
切换分支
git checkout test1
查看目前所在分支
2、本地提交新修改的文件到github,例如我在Windows下改了code
建议不要使用记事本编辑,因为可能会出现编码错误!我使用的是sublime test3
这时test1分支的测试.txt内容如下
git checkout master
这时master分支的测试.test内容如下
所以更改完后,需要讲结果合并到master再提交到github才有效
git merge test1 (合并分支,将更改结果合并到master)
再看测试.txt
现在可以将更改的内容提交到github了
git add .
git commit -m "实时更新测试(多人分支合作)"
git push origin master
github已更新
3、linux上pull取windows上更新的内容
更新前
git pull