Git冲突的解决
昨天提交代码,合并分支后发现运行时报错,说是view文件和url文件里部分代码产生冲突,是新写的和以前提交的合并起来产生了冲突,一时不知道怎么办才好,csdn了一些博客,给讲解了一些指令之类的,到了关键怎么解决冲突的问题上一带而过,又接着写下面的命令,当时临近下班挺急噪的,没稳住心态,越是慌乱越是解决不了,索性不写了,直接下班回家了。第二天早上来到静下心来去解决,我采取的是很方便但是比较笨拙的办法,我手动解决的,打开产生冲突的文件,将冲突的那行文字给手动删除了,然后保存重启服务器就可以了,我以为这就完事了,事实证明还是太天真,runserver是没问题了,但是输入url去访问页面时,又报了与数据库相关的错误,于是本能的执行python manage.py makemigrations和python manage.py migrate这两行语句,执行第一行还没问题,第二行就产生了“CommandError: Conflicting migrations detected; multiple leaf nodes in the migration graph: ().”这样的错误
上一次就是根据提示输入了merge这行指令,结果更难办了,于是开始谷歌怎么解决,看到一篇博客粘贴出了class Migration的代码,受到启发,找到报错信息后面括号里对应的文件,发现确实是有两个0157,还有两个0156,于是我又采取了笨拙的方法,给他们手动修改了文件名称,这肯定是不行的,因为Migration中要写紧邻着前一个生成的迁移文件,于是又依次修改了类里面的一些信息,当然我把该目录下生成的merge.py这个文件给删除了
心想,这下总该可以了吧?于是又执行了此migrate指令,你猜发生了什么?又报了这么个错(见下图)
说这个表已经存在?我赶紧把该表对应的迁移py文件删除了,但没用,依旧报错,于是csdn,看到一篇言简意赅的博客,执行“python manage.py migrate myapp --fake”这行指令就可以了,说出来你可能不行,我真的就完全傻傻的执行了这行指令,细看有没有发现myapp不是myapp呀,它是指报错文件所在的app,哈哈哈也是被自己给蠢哭了,执行之后大功告成,可以顺利启动项目了
再插一个遇到的奇葩bug,给model添加一个字段,写的完全一模一样的一行代码,写在不同的model里,一行可以成功迁移,一行却报了语法错误,真是令人百思不得其解,于是重启服务器,你猜发生了什么?那个报语法错误的竟然也可以迁移了,真是不知道是什么原因
最后总结一下常用的git指令,虽然很多博客有专门写这样的总结,为了避免来回找,还是自己动手总结一下吧,昨天真的是虚惊一场,切换分支前将当前分支暂存了,然后又重新返回当前分支,竟然回归了原始状态,当时心都碎了,感慨这周的工作算是白做了,啥也不落,后来一想好像忘记将分支取出来了,于是开始搜索取出的指令,取出来之后就产生了前面所提到的各种冲突,解决bug的过程中意识到计算机可真是需要很强大的心理素质,不管遇到什么样的大bug都要稳住军心,自己不能心慌意乱,需要非常冷静的去寻找解决措施,去尝试各种解决办法,试一下又不会怎样,使劲尝试各种措施(我一般涉及到修改和删除文件都会先备份,以免造成不必要的影响),解决出来了也不能高兴的太早,要及时记录下来,在以后的生涯中说不准它又是不是的”骚扰“你呢?所以要记录下如何干掉它的全过程,于是乎就有了当前这篇博客,我准备在博客记录自己杀敌打怪的过程,记录如何战胜各路妖魔鬼怪的哈哈
注:红色标出的部分是遇到的bug,绿色部分是解决措施,而且均已加粗明显表示,方便直接查看重点,为了便于区分,红色字体已倾斜
Git指令
在博客上看到的一个很不错的图
git status | 查看状态 |
git bb | 查看分支 |
git checkout 分支名 | 切换到已存在的分支 |
git checkout -b 新分支名 | 创建并切换到新分支 |
git add (文件路径) | 添加(指定路径)文件到仓库 |
git commit -m "改变的信息说明" | 提交到仓库 |
git push 仓库名 分支名:分支名 | 提交到远程仓库并在远程仓库创建新分支 |
git remote -v | 查看远程仓库 |
git pull 仓库名 远程仓库分支名 | 拉取远程仓库分支(将本地代码更新至远程仓库最新版本) |
git fetch 仓库名 分支名:分支名 | 拉取远程仓库分支(只更新远程仓库不更新本地) |
git stash | 暂存分支 |
git stash list | 查看所有暂存的分支 |
git stash pop | 取出分支并删除 |
git stash apply | 取出分支不删除 |
git reset | 撤销整体修改 |