ホームページ  >  記事  >  開発ツール  >  Git はマージの取り消しを実装し、マージされたローカル ファイルをクリアします

Git はマージの取り消しを実装し、マージされたローカル ファイルをクリアします

coldplay.xixi
coldplay.xixi転載
2020-12-10 17:29:396213ブラウズ

git チュートリアル 列ではマージをクリアする方法を紹介します

Git はマージの取り消しを実装し、マージされたローカル ファイルをクリアします

推奨事項: git チュートリアル

1.早速本題に入ります

解決策
方法 1:git restart --マージ前に送信されたハッシュ文字列をマージします
注 1

  • マージ後にワークスペースが変更されていない場合は、この方法を大胆に使用してください。
  • マージ後にワークスペースが変更されている場合、このメソッドはワークスペースへのすべての変更をリセットします。使用には注意してください。ただし、ステージング領域での変更は保持されます。

注 2: MERGE_HEAD が現在のコミットにある場合 (つまり、ブランチのマージ時にエラーまたは競合が発生した場合、次に追加の "|MERGING" が発生します) )git merge --abort このメソッドと同じ
メソッド 2:

git reset merge前的任何一次提交的hash串
git clean -n #预删除
#将预删除不想删除的文件加入.gitignore
git add .gitignore
git clean -f

2. 構築環境

規約: リモート ウェアハウス URL 1 の代わりに
リモート url を使用します。シミュレーション開発者番号 1

mkdir gitTest #新增文件夹gitTest
cd gitTest
git init
git remote add origin "remote url" 
echo "长太息以掩涕兮, 哀民生之多艰。" > lyrics.txt #新建 lyrics.txt 并在里面写入文字
git add lyrics.txt #将 lyrics.txt加入暂存区
git commit -m "lyrics.txt from user 1"
git push origin master
git checkout -b dev
git push origin dev:dev

2. シミュレーション開発者番号 2

mkdir gitTest2
cd gitTest2
git clone "remote url" 
cd gitTest
echo "Don't make me suffer" > Suffer.txt
git add Suffer.txt
git commit -m "Suffer.txt from user2"
git push origin dev

3. 開発者 No.1 をシミュレート

git checkout master
git merge origin/dev #合并远程dev分支
echo "余虽好修姱以鞿羁兮, 謇朝谇而夕替。" >> lyrics.txt  #修改文件 lyrics.txt 
echo "余虽好修姱以鞿羁兮, 謇朝谇而夕替。" > test.txt #新建test并写入内容
git add test.txt #将 test.txt 加入暂存区

3. マージを元に戻す

開発者 No.1 が直面した状況: ローカル マスター マージ リモート dev のコンテンツが削除され、Suffer.txt ファイルがローカルに追加されます。しかし、間違ったブランチがマージされていることが判明し、直前のマージ操作をキャンセルする必要がありました。ただし、ローカル ファイルには変更があります。

  • #現在のローカル ファイルの表示

    ls

    <img src="https://img.php.cn/upload/image/270/754/732/1607592020999359.png" title="1607592020999359.png" alt="Git はマージの取り消しを実装し、マージされたローカル ファイルをクリアします">

  • # 表示ワークスペースとリポジトリの違い
  • git diff HEAD


Git はマージの取り消しを実装し、マージされたローカル ファイルをクリアします
#コミット履歴の表示

git log --oneline --graph

  • Git はマージの取り消しを実装し、マージされたローカル ファイルをクリアします

    ##検証方法 1

##マージを取り消します
git replace --merge 7f811bf
または
    git replace --merge HEAD^
  • HEAD^ を実行します^この場合は 7f811bf です。上記のコミット履歴は次のとおりです。 7f811bf がマージ前に送信されたハッシュ文字列であることを確認してください。ローカル ファイルを表示します
    ls

    とファイルの内容を表示します
  • Git はマージの取り消しを実装し、マージされたローカル ファイルをクリアしますコミット レコードをもう一度表示する
    git log --oneline --graph


  • Git はマージの取り消しを実装し、マージされたローカル ファイルをクリアしますView

  • ワークスペースとステージング領域の違い
  • git diff

      ワークスペースとリポジトリの違い
    • git diff HEAD
    • ステージング領域とリポジトリの違い
    • git diff --cached

    • Git はマージの取り消しを実装し、マージされたローカル ファイルをクリアします

      ##最終結果:
    • ローカル ファイルの変更はすべてリセットされました (つまり、マージ後に開発者 1 番によって追加されたものです)。削除されました)が、一時記憶域にはコンテンツがまだ残っています。したがって、マージ後にワークスペースに変更があります
    使用には注意してください

検証方法 2

マージを元に戻す
git replace 7f811bf
  • 現在のローカル ファイルを再度表示するls


#コミット レコードをもう一度表示する

git log --oneline --graphGit はマージの取り消しを実装し、マージされたローカル ファイルをクリアします


  • ##フェーズの結果:

    マージがロールバックされたことは明らかですが、ローカルでマージされたファイルはまだ存在しています。冗長な結合ファイル (Suffer.txt) も削除します。 Git はマージの取り消しを実装し、マージされたローカル ファイルをクリアします

    削除する前に、まず削除操作 (
  • Pre-deletion
) を実行することで、どのコンテンツが削除されるかを確認できます。

git clean -n

    • 注意:这里看到本地原来的文件 test.txt 也将被删除,这不是我所期望的。我只希望可以删除 meger 的文件。

    • 将 test.txt 文件加入 .gitignore 再执行预删除

    echo test.txt > .gitignore
    git add .gitignore
    git clean -n

    Git はマージの取り消しを実装し、マージされたローカル ファイルをクリアします

    阶段结果:可以看到将会被删除的文件只剩下 merge 的多余文件了。

    • 执行 删除操作 git clean -f
    • 最终结果

以上がGit はマージの取り消しを実装し、マージされたローカル ファイルをクリアしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjianshu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。