合并git树而不必再次重写

时间:2017-03-16 17:57:03

标签: git

我正在家里和工作中开展一个项目,有一天我忘了推动工作,继续在家里开发。今天我最终得到了这样一棵树:

enter image description here

但是我想要一个直线树,因为它们没有任何冲突。那只是我忘了推的一个问题。我该如何解决这个问题?

我知道我可以git reset --hard到第13天,但是我必须再次写下我在第13天之后写的所有代码。无论如何修复git树而不必重写所有内容?

1 个答案:

答案 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

(请注意,您的工作机器和家用机器相当于“同事”。以上内容也可用于更新您的家用机器。)