在自己创建一个新的代码仓库,然后本地创建了一个项目夹,我们需要将文件的文件夹里面的内容上传到git,遇到一些错误信息。
1.首先创建仓库:
创建一个名字为gittest的仓库,在本地电脑创建一个gittest的项目夹用终端进入输入命令:
cd /路径/GitTest
git init //创建.git
创建好.git文件以后,一般iOS项目中需要忽略一些不必要上传的文件,比如说mac的默认文件,需要touch一个.gitignore文件将忽略文件添加进去。
touch .gitignore
vim .gitignore //复制忽略文件填写进去
2.将文件提交到暂存区:
git add . //他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
git add -u //仅仅更新已add的文件,将修改的文件提交到缓存区,add -u 不会提交新的文件 update 包括删除的文件
git add -A //以上2个的总和 all 包括删除的文件
3.本地关联git服务器
git commit -m "这次更新的描述"
git remote add origin https://github.com/struggle3g/GitTest.git
4.push到远程服务器
git push -u origin master
到这步以后出现了错误:
经过分析得出一个结论需要
git fetch origin //需要从远程分支拉取代码到本地缓存区域,本地代码不合并。
git merge origin master //将origin merge 到 master 上
git merge origin/master //将origin上的master分支 merge 到当前 branch 上
到了这部分又发生了错误,通过 git无法pull仓库refusing to merge unrelated histories,rejected master -> master (non-fast-forward)
问题在与,一个自己在本地创建的仓库,跟远程git的仓库一点记录没有,git merge origin master 合并到网上的时候,没有任何数据需要合并,git merge origin/master 合并到本地master的默认分支上面,但是本地缓存的内容没有远程分支的历史,本地历史跟远程分支为空,无法进行合并,git在最新2.9.2,merge、pull两个不同的项目,没法进行下去。
git merge origin/master --allow-unrelated-histories //合并项目忽略不是一个项目问题
或者直接用pull模式,不用fetch merge 直接pull 从结果的考虑来说pull = fetch + merge,具体过程有点不同,这篇就不讨论这个问题(挖坑令起一个)。
Push数据
git push origin master //上传本地当前分支代码到master分支
本地新建项目夹,push到远程git完成
遇到的问题:1.平时的pull、push、merge、分布式等等 fetch、本地预存区,这些都是怎么运作,怎么实现的(当考虑到这些以后发现其实自己是不过是会一些基本的运用,反差很大,带着疑问的时候,就想去搞清楚这些,脚踏实地!)
参考:
git无法pull仓库refusing to merge unrelated histories
rejected master -> master (non-fast-forward)