問題タブ [git-history-graph]
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 - Git で古いバージョンのファイルを表示するにはどうすればよいですか?
特定のファイルの特定のバージョンを(stdout にダンプするか、 または にダンプして) 表示するコマンドが Git にあり$PAGER
ますか?$EDITOR
git - Git removing files from history without duplicating pre-branch commits
How I usually proceed:
Actually, to remove some files from complete history, I use the following script (which I call git-crunch) :
It works perfectly to remove specified files from (complete) history.
The context is:
I have 1 project which breaks into 4 branches. Here is a summary network diagram which shows up 2 of the 4 maintained branches:
My probolem is:
I have 3 huge files in this repository which could be removed from the beginning (creaton of the repository) but if I use my script, it will only run in one branch, and it will recreate 4 separate branches from the beginning until last commit, which happened today.
My question:
How can I achieve these 3 files removal frmo my whole history without separating my branches from the beginning? Or, is there a way to rewrite the entire hisotry and remove files from all branches at once so I can keep my evolution network and "shared" commits intact (so I don't get my 61 first commits duplicated four times)?
git - git は、マージベースに戻る最後のいくつかのコミットを表示します
かなり前に 2 つのブランチが分岐しました (例: devel と master)。その分岐点の両側、たとえば +/-10 コミットの履歴を表示したいと思います。(これは、古いブランチを再キャプチャする方法を決定して、命名規則を変更することです)
マージベース ( git merge-base devel master
) を見つけて、その前の 10 個のコミットを表示するのは簡単です (例git log --oneline -10 $(git merge-base devel master)
)。
しかし、表示されるコミット範囲を制限するために、merge-base の 10 コミット前 (より最近) のポイントを特定する方法がわかりません (たとえば、show-branch を使用)。
特定の開発ラインに沿って n 番目に最近のコミットへの方法はありますか?
git - Gitで削除を修正してからコミットを再追加する方法は、履歴にさかのぼりますか?
プロジェクトでは、下請け業者がツリー内のいくつかのファイルを移動し、コミット (Git はそれらを削除済みとしてマーク)を行い、git add
それらをツリーに再度追加するために使用しました。それは数コミット前に起こりました。変更をツリーにマージする前に、これを修正したいと思います。これらのファイルを git 履歴の適切な場所に「再接続」するにはどうすればよいですか?
アップデート
人々がコミットの取り消しを提案しているからです。それは私が望むものではありません(私は思う)。
次の状況を想像してください
間に起こった他の変更を失うことなく、コミット4以降、file_yでコミット1までのfile_xの履歴を「スプライス」したいと思います.1と4をコミットします。
git - git history を介してコミットのパス、または「現在のブランチにどのように到達したか」を確認するにはどうすればよいですか?
gitk
andを使用してコミット履歴を調べておりgit log
、特定のコミットが特定のブランチにどのように到着したかを確認しようとしています。履歴でコミットを見ることができるので、そこにあることがわかります。
私が理解したいのは、それらがどのようにマージされたかです (それらは独自のブランチに残るはずでした)。これは非常に大規模なプロジェクトであり、問題のコミットとブランチの現在の状態の間には何百ものコミットがあるため、 の限られた DAG を明確に解読することはできずgitk
、コミットは他のブランチでマスクされ、メッセージをマージしてコミットします。
これを行うために、私は試してきました:
そして、私は結果を理解していません。問題の特定のコミットを含むアイテムのみを表示したいので、問題のブランチにどのように入ったかがはっきりとわかります。どうすればいいですか?
例
私が探しているのは、できれば十分ですgitk
が、次のとおりです。git log
詳しくは
まだ答えが見えないので、何も来ない場合は報奨金を開始しますが、質問を正しく説明していない可能性があります (改善と明確化のための提案を受け付けています)。
これの原動力は、コミット自体を確認できることであり、特定のブランチにあるべきではないと言われています。これが私が見ているものです:
でのコミットは、リリースされない限りtest_dec14
は行われるべきではないと言われています。test_jan15
そのため、{sha1hashIDstring} のコミットは である必要test_jan15
はありませんが、実際にはそうです。なぜ、どのようにしてそこにたどり着いたのか、誰がそこに置いたのか知りたいです。
git - 開発ブランチの最終結果のみを Git マージする
Git リポジトリ構造が次のようになっている場合:
開発ブランチをマスターにマージして、開発ブランチのすべてのコミットで見つかったすべての変更を含むコミットを 1 つだけマスターに追加することは可能ですか? したがって、上記の構造は次のようにマージされます。
E'
コミットには、開発ブランチからのすべての変更と最新のコミット メッセージのみが含まれ、新しい機能が 1 つのきちんとしたコミットで master に追加されます。
これはGitで可能ですか?私の開発ブランチには、未完成で洗練されておらず、人間が消費するのにふさわしくない初期のコミットが含まれていることが多いため、GitHub リポジトリの履歴を整理できるようにしたいと考えています。
git - Github Merge プル リクエストが何らかの形で履歴を書き直した
私の職場では、最初にブランチを作成し、そのブランチの Github リポジトリにプル リクエストを作成してコードをコミットします。これはかなり標準的なワークフローです。
通常、"Merge pull request" を押すと、Github は "Merge pull request #1234 from branchname" という名前の新しいコミットを 2 つの親 (master の HEAD と PR の最新のコミット) で作成します。
今日、私は通常どおり PR をマージしましたが、どういうわけか Github は master の HEAD を親の 1 つとして使用する代わりに、1 日以上前のコミットを使用することを決定しました (1 日 20 ~ 30 件のコミットを行います)。使用されたこのコミットは、PR ブランチのベースとなったコミットでした。これにより、マスター ブランチはそれからこの PR マージまでのすべてのコミットを失いました。
これがどのように起こったのか誰か知っていますか?これは Github のバグですか? それとも、PR を送信した開発者がマスターを上書きするような悪いことをしたのでしょうか? Github でのリベースや履歴の書き換えを行わずに、すべてのコミットが単純にマスターにマージされると考えていました。