問題タブ [git-rebase]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - What are the practical consequences of rewriting Git history?
Our project has been using Git for a week or so now, and we're all enjoying it a lot (using it in a tight collaborative group turns out to be quite a different Git experience). To keep things as simple as possible, we do not do any rebasing or history modifications. But we did make a few mistakes in the first week. A few commits were made that shouldn't have been done, and we managed to merge a feature branch into the wrong integration branch (1.1 instead of 1.0). And we didn't find out about these things until they were long into our history.
Now I see a lot of warnings about rewriting history, but I'm not really sure I understand the dangers involved. We use a shared bare repository, and all branches are pushed there for backup.
I would expect that if you rewrite history (say remove a commit), the full list of subsequent commits will "lose" that commit (and maybe not compile/work). I would also expect that if this happens I could actually choose to fix this at the top of history (and just leave that part of history as non-compiling).
- If I rewrite history (and everything compiles/works in all affected branches), will my co-workers need to do any special commands? (In other words, will they "know that I have done it" if I did it well?)
- Will any users with local changes that I do not know about be eligible for merge failures on
git pull
? - Am I missing anything essential here?
Any references to articles/tutorials on this subject would also be really nice.
git - git ブランチのリベース中にタイムスタンプを変更する
公開する前にブランチ内のコミットを再編成したため、コミットのタイムスタンプの順序が混乱しました。私はむしろ、それらすべてが今日であって、その間に数秒しかないことを望んでいます.
もちろん、これらのタイムスタンプも正確ではありませんが、これは物事が公開される時期であるため、時間的に混乱した歴史よりもそれを好みます.
では、リベース中に新しいタイムスタンプを作成するように git に指示するにはどうすればよいでしょうか?
git - git ブランチのリベース プッシュ サイクル
私は現在、別のリポジトリのマスター ブランチに基づいて、単一のブランチを持つ github リポジトリを使用しています。github ブランチは私の作業のバックアップであり、プルすることを意図したものではありません。そのため、マスター リポジトリからリベースするときにその履歴を書き直すことに問題はありません。
私の問題は、クリーンな履歴が必要なことです。履歴が分岐する場合、それはできません。これは、プッシュ (最初の作業) + リベースを行うと発生します。2 回目のプッシュは拒否されます。
ブランチを削除してからプッシュしようとしましたが、これにはレポのドロップ作成を行うという厄介な副作用があり、これは遅いです。
この問題にどのようにアプローチすればよいですか?
git - git rebase -p -i と競合するのはなぜですか?
私は使用しています
そして、単一のコミットを時間を遡って SHA1 の直後に移動します。コミットは WAV ファイルで構成されているため、これが私のコードを壊すことはありません。
一見関係のないファイルが、履歴の後半で競合として発生します。このシナリオでリベース中にこれらの競合が発生するのはなぜですか? -p は履歴の他の部分との関係をそのまま維持するのに十分ではありませんか? リベースについては、ここで完全に把握していないことがあります...
git - すべてのgitコミットを1つに押しつぶす方法は?
リポジトリ全体を最初のコミットまでどのように押しつぶしますか?
最初のコミットにリベースできますが、2つのコミットが残ります。最初のコミットの前にコミットを参照する方法はありますか?
git - 複数のコミットをチェリーピックする方法
私は2つの枝を持っています。コミットa
は一方の頭であり、もう一方はb
、c
、d
、e
およびf
の上にありa
ます。、、、を commit せずに最初のブランチに移動c
したい。チェリー ピックを使用するのは簡単です。最初のブランチを 1 つずつチェリー ピックでチェックアウトし、2 番目のブランチを最初のブランチにリベースします。しかし、1つのコマンドですべてをチェリー ピックする方法はありますか?d
e
f
b
c
f
c
f
以下はシナリオの視覚的な説明です ( JJDに感謝):
git - 「git rebase」を使用して古いコミット メッセージを変更する
here で説明されているように、古いコミットメッセージを編集しようとしていました。
問題は、今、実行しようとすると、と表示されるrebase -i HEAD~5
ことinteractive rebase already started
です。
だから私は試してみます:git rebase --continue
しかし、このエラーが発生しました:
何か案は?
git - GIT は最新ではないコミットを元に戻し、それ以降のすべてのコミットをリベースします
以前、私はいくつかのコードをコミットしましたが、それは当時は良いアイデアのように思えましたが、実際には事態を悪化させました。役に立たないので履歴から変更を削除し、それ以降のすべてのコミットをリベースしたいと思います-それらはすべて問題なくマージされるはずです。
newMaster
悪いコミットの直前に(gitxを使用して)新しいブランチ(と呼ばれる)を作成し、チェックアウトして実行しようとしました:
どのAFAICSがマスターのコミットのリストとそれらをマージするかどうかのオプションを私に与えたはずですが、代わりにnoopと言い、newMasterを早送りしてマスターと等しくしました。
必要なことを行う最も簡単な方法は何ですか?
git - githubリポジトリで最初のコミットを編集するにはどうすればよいですか?
私はフォークしたリポジトリで作業しています。このリポジトリでは、作成者がダーティパスを使用し、最初のコミットですべての依存関係をlib/ディレクトリに詰め込みました。通常、それが最初のコミットではなかった場合、私はインタラクティブなリベースを実行し、コミット全体を削除します(それが彼が行ったすべての場合)。ただし、最初のコミットをどのように編集/削除するかわかりません。最初のコミットを編集して、残りの部分に触れることなくlibディレクトリを削除する方法はありますか?
編集
ここで誤って答えに出くわしました:Gitリポジトリから最初のコミットを削除できますか?選択した回答で。それは私がもっと徹底的に検索しないことで得られるものです。
git - Git リポジトリのコミット履歴から大きなファイルを削除する方法は?
誤って DVD-rip を Web サイトのプロジェクトに落としてしまい、うっかりgit commit -a -m ...
. 次回、編集を行い、ビデオ ファイルを削除し、すべてをコミットしましたが、圧縮ファイルは履歴のリポジトリに残っています。
それらのコミットからブランチを開始し、あるブランチを別のブランチにリベースできることを知っています。しかし、大きなファイルが履歴に表示されず、ガベージ コレクション手順でクリーンアップされるように、2 つのコミットをマージするにはどうすればよいですか?