git checkout不';更新文件
我有两个Git分支git checkout不';更新文件,git,branching-and-merging,Git,Branching And Merging,我有两个Git分支master和develope。由于各种原因,我的develope分支出错,我想从master到develope获取所有文件。我知道这不是正确的解决方案,但以下是我所做的: git checkout master cd .. cp repo repo_master cd repo git checkout develop cp -r ../repo_master/* . 奇怪的是,在将我的文件(应该是主文件的版本)复制到我的repo之后,运行 git diff 什么也看不出
master
和develope
。由于各种原因,我的develope
分支出错,我想从master
到develope
获取所有文件。我知道这不是正确的解决方案,但以下是我所做的:
git checkout master
cd ..
cp repo repo_master
cd repo
git checkout develop
cp -r ../repo_master/* .
奇怪的是,在将我的文件(应该是主文件的版本)复制到我的repo之后,运行
git diff
什么也看不出来。我不明白。更奇怪的是跑步
git diff master develop
确实有很多不同之处
我做错了什么?另外,我应该怎么做呢?如果您不需要保留开发中的任何更改:
git分支-d develope
将删除包含其内容的develope分支
git checkout-b develope
将当前分支(在您的案例中为master)复制到名为develope的新分支
或者,如果您需要在开发过程中保留任何内容:
git签出开发
git合并主机--无ff
然后解决冲突(如果有)
git checkout develop
git reset master
这将重置开发分支以精确匹配主分支。所有特定于开发分支的提交都将被删除
git checkout develop
git checkout master -- .
第二个命令将所有文件从分支master
复制到当前工作树和索引。使用git diff--cached进行验证并提交。您可以使用
git rebase -i --commiter-date-is-author-date HEAD~50
并删除从提交列表底部开始的行。直到达到合并前的最后一次提交。
保存并退出文件
再次检查您的最新提交,以确保其与
git log -n 10 --oneline
然后最终覆盖你的遥控器
你需要在这里给我们更多的信息。什么搞砸了?什么时候发生的,即发生了多少次?解决这类问题的典型方法不一定涉及到另一个分支,它只意味着在达到一个稳定点之前重置东西。基本上,我使用git flow并希望进行代码现代化(它使用Java 5),所以我有一个非常糟糕的想法,将其视为一个功能。当我重新合并到develope
中时,整个代码翻了一番(我猜git只是估计这是处理冲突的最佳方式…),这就是为什么我得到了几百个不再编译的类。我本来会进行重置,但我正在处理一个功能分支,该分支被合并到develope
中(是的,这就是问题所在),而develope
上进行了其他更改。所以我只是想,考虑到我修改的性质,我宁愿收回master
代码——它正在工作,根据git流的定义,并将其放回develope
以“重新开始”,git不会以这种方式工作。如果整个分支都有问题,就不要像这样移动一堆源代码。相反,只需将develope
分支重置为master
中的一些提交即可。我无法给出确切的答案,因为您当前的状态似乎一团糟。这是否也会删除我对develope
所做的所有提交?因为分支是提交的集合,答案是肯定的,它将删除指定分支中的所有提交。如果您在任何时候将其与其他分支合并,那么这些分支中的代码将保持原样。
git push origin -f