一、创建远程仓库
这是初始状态,远程仓库已经创建了一些文件了
二、创建本地仓库
先在本地创建一个空文件夹(可以作为工作空间),然后cmd进入这个文件夹执行git init
接着,可以在这个工作空间中创建若干项目,比如我用IDEA创建一个C++项目,
注意最好在工作空间的子目录中创建项目,这样就能创建多个项目互不干扰,又能在同一个git仓库中管理
比如我创建一个project1项目,项目根目录为 C:\03_WorkSpace\test_ws\project1,
在新建项目中新建一些文件,比如我创建了一个跟远程仓库同名的文件 README.md,这样能演示同步问题
三、修改git管理的本地文件版本状态
先查看一下目前本地仓库情况,
上图中README.md文件状态有两项,一项是changes to be committed,因为前面新建了这个文件还没提交,此时可以提交。
另一项是not staged状态,因为新建这个文件后修改了内容,可以使用git add转为staged以便提交,或者用git checkout放弃修改。若直接提交这个文件的话,修改的内容将不会提交。
最下面是还没有纳入版本库管理的文件,可以用git add加入版本管理。
关于GIT文件的状态转换,可参考 https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%AE%B0%E5%BD%95%E6%AF%8F%E6%AC%A1%E6%9B%B4%E6%96%B0%E5%88%B0%E4%BB%93%E5%BA%93
现在先将README.md和main.cpp变为staged状态。
四、提交修改到本地仓库
五、关联本地和远程仓库
六、合并本地仓库和远程仓库
因为本地和远程分别独立建了仓库,两个库并不同步
git pull命令可以同步远程和本地,注意git pull = git fetch + git merge 并自动解决冲突,
但是会隐藏许多细节,造成一些更大的错误,所以不要直接使用这个命令,最好分步骤手动同步。
七、推送并解决冲突
直接冲突会说远程和本地不同步
再pull一次
报错 fatal: refusing to merge unrelated histories
按网友做法,pull时加参数 --allow-unrelated-histories , pull成功
再push一次
成功了。
注意push过程也有可能出现HEAD detached from XXX错误,
用以下办法解决,参考自 https://blog.csdn.net/u011240877/article/details/76273335