Git Push --force-with-lease と Git Push --force の比較

John Wachira 2023年1月30日
  1. git push --force コマンド
  2. git push --force-with-lease コマンド
Git Push --force-with-lease と Git Push --force の比較

この記事では、git push --force-with-lease コマンドと git push --force コマンドの違いについて説明します。通常、git push コマンドを使用して、ローカルの変更をリモートリポジトリに公開します。

先に進んで、これらのコマンドを調べてみましょう。

git push --force コマンド

ローカルの変更をリモートリポジトリに公開するときは、次のコマンドを実行します。

$ git push origin

ただし、複数の開発者がリモートリポジトリを共有し、変更をリモートリポジトリに公開する場合、Git はプッシュを拒否できます。

Git にコミットを公開させるには、以下に示すように、--force フラグを git push コマンドに追加します。

$ git push --force origin

このコマンドを使用することの欠点は、他の開発者によってリモートリポジトリにプッシュされた変更を考慮しないことです。このコマンドは、ローカルリポジトリの状態に基づいてリポジトリを上書きします。

これは、プロジェクトのタイムラインを台無しにする可能性があるため、危険な場合があります。変更をリモートリポジトリにプッシュし、他の開発者が行った変更を保持したい場合は、次のようにします。

git push --force-with-lease コマンド

このコマンドは、複数の開発者がリモートリポジトリを共有している場合に便利です。他の開発者によってプッシュされた変更を破棄しないように、変更を公開するときに使用します。

$ git push --force-with-lease origin

例を見てみましょう。これがリモートリポジトリの現在の状態です。

コミット履歴

README.md ファイルにいくつかの変更を加え、GitHub を使用したまま変更をコミットします。概説されているコミット ID 097ab8b に注意してください。

これが今の様子です。

コミット履歴の更新

コミット ID ba29c53 に注意してください。

ここで、コンピューターで README.md ファイルを開き、さらに編集を加え、変更をコミットして、git push を試行します。

プッシュ試行

コミット履歴が異なるため、Git はプッシュの試行を拒否しました。git push --force コマンドを実行できますが、これにより、GitHub で行った変更が破棄されます。

以下に示すように、git push --force-with-lease を実行できます。

$ git push --force-with-lease
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 314 bytes | 314.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/Wachira11ke/Delftscopetech.git
 + b7b8e6a...8ddd086 main -> main (forced update)

git push --force-with-leasegit push --force の違いは結果です。lease を使用して変更をプッシュすると、他の開発者によってプッシュされた変更を破棄しないようにすることができます。

著者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

関連記事 - Git Push