[解決済み] ローカルの git コミットの一部だけをプッシュするにはどうしたらいいですか?
2022-04-20 04:28:19
質問
5つのローカルコミットがあるとします。そのうちの2つだけを集中リポジトリのほうにプッシュしたいと思います (SVNスタイルのワークフローを使用します)。どうすればいいでしょうか?
これはうまくいきませんでした。
git checkout HEAD~3 #set head to three commits ago
git push #attempt push from that head
これで、5つのローカルコミットすべてをプッシュして終了です。
git reset で実際にコミットを取り消し、次に git stash、そして git push を行うこともできますが、すでにコミットメッセージを書いてファイルを整理しているので、それをやり直すのは面倒です。
私の感覚では、pushやresetに何らかのフラグを渡すとうまくいくような気がします。
参考までに、私の git の設定を以下に示します。
[ramanujan:~/myrepo/.git]$cat config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = ssh://server/git/myrepo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
解決方法は?
コミットが master ブランチにあり、それをリモートの master ブランチにプッシュしたい場合を想定しています。
$ git push origin master~3:master
git-svnを使用していた場合。
$ git svn dcommit master~3
git-svnの場合、コミットを想定しているので、HEAD~3も使用できます。ストレートな git の場合、HEAD は refspec で適切に評価されないので、ブランチ名を使用する必要があります。
という長いアプローチをとることもできます。
$ git checkout -b tocommit HEAD~3
$ git push origin tocommit:master
このような作業フローを習慣にしている人は、別のブランチで作業をすることを考えた方がいいでしょう。そうすれば、次のようなことができるようになります。
$ git checkout master
$ git merge working~3
$ git push origin master:master
origin master:master"の部分は、おそらくあなたのセットアップではオプションであることに注意してください。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Git で、ステージされていない変更を破棄するにはどうしたらいいですか?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】マージの競合が発生した git stash pop の取り消し
-
[解決済み】GitHubのメッセージの意味: メールのプライバシー制限のためプッシュが拒否されました。
-
[解決済み】gitが「変更をコミットするか、マージする前にstashしてください」と言うのを解決するには?
-
[解決済み】未マージファイルがあるため、Gitマージができない
-
[解決済み】git push >> fatal: 設定されたプッシュ先がありません。
-
git push reports an error ! [リモート拒否] master -> master (受信前のフックが拒否されました)
-
Gitのプッシュでエラーが発生! [リモート拒否] master -> master (pre-receive hook declined) error: failed to push some refs to .......
-
[解決済み】gpgがデータの署名に失敗した fatal: failed to write commit object [Git 2.10.0].
-
[解決済み] git でディレクトリ階層が異なる 2 つのブランチをマージするには?
-
[解決済み] git リモートリポジトリには、ローカルブランチにマージされていないコミットが含まれています。