2017-12-01 18 views
0

ここに私の状況です。私は機能に取り組んでいて、ローカルコミットをしました。私は仕事を続けた。一方、同僚は私が必要とする変更を押しました。これらの変更のいくつかは、私が取り組んでいるのと同じファイルにあります。git pullのすべてのコミット後にローカルコミットを移動するにはどうすればよいですか?

私は現在、原点から引っ張る前に隠す必要があるいくつかのコードがあります。
私の同僚コードが最後のローカルコミットの前にコミット履歴に存在するようにコードをプルする方法はありますか?
私のローカルコミットは、私が引き出す予定よりも古いことを知っています。
私はこのようなもので終わるつもり:

older commits -> my commit -> origin commit 1 -> origin commit 2 -> popped stash

しかし、私がしたいことは次のとおりです。

older commits -> origin commit 1 -> origin commit 2 -> my commit -> popped stash

私はこれを行う方法を見ることができる唯一の方法はにあります私のローカルコミットを元に戻し、たくさんのことを隠してから、隠しポップを引いてください。私の古いコミットを維持するこれを行う方法はありますか?

ここにはgit-rewrite-historyのタグがありますので、それは可能でしょうか?

答えて

3

一連のコミットを元に戻して再適用することをrebaseといいます。

git stash 
git pull --rebase origin master 
git stash pop 
+0

くそ:それらを変更して引っ張るとrebaseの代わりに、mergeするには、--rebaseオプションを使用することができます!私はこれを知っていた!私は何とか忘れてしまった。どうもありがとう –

1

あなたはgitのcherry-pick概念を使用することができます:git log出力からcommit-hash-before-my-commitmy-commitoriginal-commit-1original-commit-2のコミットハッシュ

まずコピーを。

$ git log     # First copy the commit hashes 

$ git checkout -b b1  # create a new branch b1 (just for experiment) 

$ git reset --hard <commit-hash-before-my-commit> 

$ git cherry-pick <original-commit-1> 
$ git cherry-pick <original-commit-2> 
$ git cherry-pick <my-commit> 
$ git stash pop 

ここで、git logには、必要に応じてコミット履歴が表示されます。

関連する問題