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