私はマスターに直接作業している場合は、通常git pull --rebase
を使用します(これはやめようとします)。リベースを忘れてgit pull
を忘れた場合、マージするよりも、元に戻してリニアにする方法がありますか?この時点でリベースを行うのは悪い考えです(もし何かを達成することさえあれば)?プル後のgit rebase
私はデフォルトでプルでリベースを可能にすることができるので、私は忘れていませんが、これは何をするのかを理解することの問題です。
私はマスターに直接作業している場合は、通常git pull --rebase
を使用します(これはやめようとします)。リベースを忘れてgit pull
を忘れた場合、マージするよりも、元に戻してリニアにする方法がありますか?この時点でリベースを行うのは悪い考えです(もし何かを達成することさえあれば)?プル後のgit rebase
私はデフォルトでプルでリベースを可能にすることができるので、私は忘れていませんが、これは何をするのかを理解することの問題です。
に取得することができます
詳しい情報は
git reset --hard HEAD^
でも、の場合、マージコミット(これ以外の場合は早送りから1つのコミットをバックアップするだけです)の場合にのみ、短い回答です。
説明ロングバージョン:
git pull
は(あなたが注意して、あなたが、--rebase
で上書きしない限り)本当にgit merge
が続くだけgit fetch
です。だからあなたはちょうどあなたが実際のマージがコミットまたはないしまったかどうかを確認する必要があります。
$ git pull
Updating 171ce6f..523bacb
Fast-forward
mp.py | 24 ++++++++++++++++++++++++
1 files changed, 24 insertions(+), 0 deletions(-)
create mode 100644 mp.py
この場合、何もマージコミットだけ早送り、そう、問題はない - そこにはありませんでしたリベースに変更はありません! git log
を実行した場合、特に、以下のグラフ-yを実行する場合は、欠落 - 結合 - コミットが表示されます。
強制的にマージしましょう。
$ git reset --hard HEAD^
HEAD is now at 171ce6f ignore *.log files
[今私はremotes/origin/master
の背後に一人です]
$ echo '# pointless comment' >> selfref.py
$ git add selfref.py
$ git commit -m 'added to force merge'
[master 260e129] added to force merge
1 files changed, 1 insertions(+), 0 deletions(-)
$ git pull
Merge made by recursive.
mp.py | 24 ++++++++++++++++++++++++
1 files changed, 24 insertions(+), 0 deletions(-)
create mode 100644 mp.py
で私たちは、上記のテキストが欠落している場合でも、これが起こっていることがわかります。私たちがしたい
$ git log --graph --decorate --abbrev-commit --pretty=oneline
* c261bad (HEAD, master) Merge branch 'master' of [ssh url]
|\
| * 523bacb (origin/master, origin/HEAD) add multiprocessing example
* | 260e129 added to force merge
|/
* 171ce6f ignore *.log files
ローカルブランチ名master
が(この場合は)260e129を再度指すようにします。幸いなことには、名前には本当に簡単です:
$ git rev-parse HEAD^
260e1297900b903404c32f3706b0e3139c043ce0
は(現在、2-親の他の親、マージコミットHEAD^2
である。)ので:
$ git reset --hard HEAD^
HEAD is now at 260e129 added to force merge
、今は私が(remotes/origin/master
上にリベースすることができます「)という名前を付けるために、本当に短い名前、origin
を使用するでしょう:
$ git rebase origin
First, rewinding head to replay your work on top of it...
Applying: added to force merge
今グラフ-yの1行のログを示しています
$ git log --graph --decorate --abbrev-commit --pretty=oneline
* 4a0b2e2 (HEAD, master) added to force merge
* 523bacb (origin/master, origin/HEAD) add multiprocessing example
* 171ce6f ignore *.log files
git pull
を実行してマージに失敗した場合の対処方法を知ることができます。 :-)
履歴を線形に保つのに役立つアドバイスをしたいと思います。プルするときにブランチを自動的に再配置するために、以下のgit設定を設定します。あなたが--rebase
パラメータ、ちょうどgit pull
でフルpullコマンドを入力する必要はありませんこの設定を適用した後
$ git config branch.autosetuprebase always
。私は戻ってプル前へgit reset --hard
を推測し、プルをやり直し、あなたがこの記事 http://stevenharman.net/git-pull-with-automatic-rebase
私の質問で述べたように、私はこれを行うことができることを知っています。私はこの場合に何をすべきかを学ぼうとしています。 –
方法です私は、 'gitのは、プルバック前に--hard'リセット推測しますやり直しはやり直しです。 – Alex
ありがとうございます。あなたはコメントではなく答えとして投稿してください。 –