我正在家里和工作中开展一个项目,有一天我忘了推动工作,继续在家里开发。今天我最终得到了这样一棵树:
但是我想要一个直线树,因为它们没有任何冲突。那只是我忘了推的一个问题。我该如何解决这个问题?
我知道我可以git reset --hard
到第13天,但是我必须再次写下我在第13天之后写的所有代码。无论如何修复git树而不必重写所有内容?
答案 0 :(得分:2)
一种解决方案是在合并之前的最后一次蓝色提交中创建分支。然后你可以重置master和rebase:
// flag that should be set true if handler should stop
boolean mStopHandler = false;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// load the layout
setContentView(R.layout.filters);
Runnable runnable = new Runnable() {
@Override
public void run() {
addView();
if (!mStopHandler) {
mHandler.postDelayed(this, 1000);
}
}
};
// start it with:
mHandler.post(runnable);
}
public void addView() {
ImageView image = new ImageView(context);
image.setLayoutParams(new android.view.ViewGroup.LayoutParams(80, 60));
image.setMaxHeight(80);
image.setMaxWidth(50);
image.setImageResource(R.drawable.missile);
TranslateAnimation animation = new TranslateAnimation(0.0 f, 0.0 f, 10.0 f, -800.0 f); // new TranslateAnimation(xFrom,xTo, yFrom,yTo)
animation.setDuration(700);
animation.setFillAfter(true);
image.startAnimation(animation);
LinearLayout missile_layout = (LinearLayout) findViewById(R.id.missile_layout);
missile_layout.addView(image, 0);
}
警告:如果其他人已经撤消了您的更改并且正在进行更改,那么rebase会让他们感到很头疼。在执行上述命令之前,您应该向所有同事发出警告。
考虑到这一点,任何正在处理这个项目的同事都可以通过从GitHub获取repo并将$ git branch work <sha1 for last blue commit>
$ git checkout master
$ git reset --hard <sha1 for black commit on the 14th>
$ git checkout work
$ git rebase master
$ git checkout master
$ git merge work
$ git push -f origin master
重置为正确的提交来更新他们的本地仓库:
master
(请注意,您的工作机器和家用机器相当于“同事”。以上内容也可用于更新您的家用机器。)