所以,我用 create-react-app 开始了这个新项目(它运行的是 react v.16.13.1)。我把基础App组件改写成一个类,发现当组件是函数的时候,像这样:
function App() {
console.log('App (function)');
return 'App (function)';
}
Run Code Online (Sandbox Code Playgroud)
浏览器控制台打印出来
App (function)
Run Code Online (Sandbox Code Playgroud)
万分感谢!但是如果同一个 App 组件写成
class App extends React.Component {
render() {
console.log('App (class)');
return 'App (class)';
}
}
Run Code Online (Sandbox Code Playgroud)
控制台写入
App (class)
App (class)
Run Code Online (Sandbox Code Playgroud) 我想用另一个开发分支(即 master)覆盖开发分支中的所有内容,但我不想错过开发分支上较旧的提交。
这就是我要的:
我尝试与我们的策略合并并进行硬重置,但开发分支不断丢失旧的提交。
我想要获得的是蓝色和红色之间差异为零的提交,以及在蓝色与第一个黑色差异时删除的代码。
只是分享迄今为止尝试过的解决方案的概述。通过做这个:
git checkout master
git merge -s ours dev
git checkout dev
git merge master
Run Code Online (Sandbox Code Playgroud)
我得到了这个(开发人员从主人那里获取了所有历史记录)
通过做这个
git checkout dev
git reset --hard master
Run Code Online (Sandbox Code Playgroud)
我得到了这个(如果我推动开发,我将丢失所有黑色提交):
如果我这样做:
git checkout dev
git merge $(git commit-tree -p dev -m "Align master > dev" master^{tree})
Run Code Online (Sandbox Code Playgroud)
我得到了这个(几乎完美,但我很难回忆起我完成这个技巧的确切时刻):