[git] ローカル倉庫とリモート倉庫の間の矛盾の問題を解決する

目次

方法 1: (未検証)

方法 2: (検証済み)

方法 3: 従来型

1. リモート ウェアハウス コードを新しいローカル ブランチ temp としてローカルにプルします。

2. この temp のブランチとメイン ブランチを比較して、相違点と競合を確認します。

3. 新しい一時ブランチをローカル マスター ブランチとマージします。

4. ローカル マスター ブランチをリモート ウェアハウスに再送信する

5. ブランチを削除する

方法 4. コミットしない場合

 1.すべての変更を現在のブランチに保存します

2. 既存の隠し場所を表示する

3. 指定された stash をワークスペースに適用しますが、stash は削除しません。

4.拡張:

4.1 最後に保存されたコンテンツを解放し、保存されたコンテンツをスタックからポップする (つまり、スタックの一番上をポップし、最後に保存されたコンテンツを解放し、保存されたコンテンツを削除する)

4.2 指定されたファイルの変更を保存する

4.3 プッシュ スタックによって変更されたファイルを確認する

4.4 指定したストレージの変更内容を表示する

4.5 キャッシュされたスタッシュをすべて削除する


コードをリモート ウェアハウスにプルするのを忘れた場合は、プルを使用してエラーを報告します。error: Your local changes to the following files would be overwritten by merge:

書いたばかりのコードを上書きしたくない場合は、次のように解決できます。

方法 1: (未検証)

変更したばかりのコードをローカルに保持し、git サーバー上のコードをローカルにプルする場合 (ローカルで変更したコードは一時的にアーカイブされます)

git stash
git pull origin master
git stash pop

このように、サーバー上のコードはローカルで更新され、ローカルで変更したコードは上書きされません. その後、, コマンドを使用してローカルコードadd サーバーに更新します.commitpush

方法 2: (検証済み)

ローカル コードを完全にカバーし、サーバー側コードのみを保持する場合は、以前のバージョンに直接戻ってから次の手順に進みますpull

git reset --hard
git pull origin master

注: origin master は git のメイン ブランチを表します。

方法 3: 従来型

1. リモート ウェアハウス コードを新しいローカル ブランチ temp としてローカルにプルします。

git fetch origin master:temp 

 拡大:

  パラメーターなしの git branch: 既にローカルに存在するブランチを一覧表示し、現在のブランチの前に「*」マークを追加します。

  git branch -r は、リモート ブランチを一覧表示します。次に例を示します。

  git branch -a は、ローカル ブランチとリモート ブランチを一覧表示します。次に例を示します。

  

  git branch -m | -M oldbranch newbranch ブランチの名前を変更します。新しいブランチ名のブランチが既に存在する場合は、-M を使用して強制的に名前を変更する必要があります。そうでない場合は、-m を使用して名前を変更します。

2. この temp のブランチとメイン ブランチを比較して、相違点と競合を確認します。

git diff temp

3. 新しい一時ブランチをローカル マスター ブランチとマージします。

git merge temp

自動的にマージできない競合するファイルがある場合は、自分で開いて変更する必要があります。競合ファイルの基本的な形式は <<<<<<< から ======= は現在のブランチがマージされる前のファイルの内容であり、 ======= から >>>>> です。 >>は別の枝にある

競合を手動で解決した後、リモート ブランチにプッシュできます。
 

4. ローカル マスター ブランチをリモート ウェアハウスに再送信する

git push -u origin master

5. ブランチを削除する

git branch --delete temp
# 命令删除本地分支

# 这个好像也可以
git branch -D temp  //删除本地temp分支

拡大:

「git push origin --delete branch」コマンドを使用してリモート ブランチを削除します。

「git branch --delete --remotes」コマンドを使用して、追跡ブランチを削除します。

方法 4. コミットしない場合

通常、このようなシナリオに遭遇します. 関数を実装していますが、まだ完成していません. 現時点では、バグを修正する必要があります. 役に立たないログレコードを追加するために、今すぐ修正を送信したくはありませんが、提出しないと戻れない、この状態に。この時点で、git st sh コマンドを使用して、ローカル ワークスペースの内容を保存し、前のコミット後の状態に戻すことができます。

 以下はちょっとした整理です。最初に下の 1-2-3-4 の部分を見てから、このコマンドを見てください。

# 保存当前未commit的代码
git stash

# 保存当前未commit的代码并添加备注
git stash save "备注的内容"

# 列出stash的所有记录
git stash list

# 删除stash的所有记录
git stash clear

# 应用最近一次的stash
git stash apply

# 应用最近一次的stash,随后删除该记录
git stash pop

# 删除最近的一次stash
git stash drop

 1.すべての変更を現在のブランチに保存します

git stash save -m "标识注释"

2. 既存の隠し場所を表示する

git stash list

3. 指定された stash をワークスペースに適用しますが、stash は削除しません。

git stash apply 对应stash的名字  # 上面的标识

# 或者
 git stash apply stash@{0}


删除则是将apply换成drop

拡大:

デフォルトでは、git stash は次のファイルをキャッシュします。

        ステージング領域に追加された変更
        Git によって追跡されるが、ステージング領域には追加されていない変更 ただし

、次のファイルはキャッシュされません。

        作業ディレクトリ内の新しいファイル
        に対して無視されるファイル

4.拡張:

4.1 最後に保存されたコンテンツを解放し、保存されたコンテンツをスタックからポップする (つまり、スタックの一番上をポップし、最後に保存されたコンテンツを解放し、保存されたコンテンツを削除する)

git stash pop

4.2 指定されたファイルの変更を保存する

git stash push .../.../ .../.../ .../.../

     /.../... は保存したい変更ファイルのパスです. たくさんのファイルを変更しているが、いくつかの変更済みファイルだけを保存したい場合, git stash push の後にパスを追加することができます. 複数のファイルがある場合、これらのファイル パスの間にスペースを追加するだけです

4.3 プッシュ スタックによって変更されたファイルを確認する

ストレージに変更が多すぎると、特定のストレージでどのファイルが変更されたかを忘れてしまうことがあります。特定のストレージでどのファイルが変更されたかを確認したい場合は、git stash show stash@{0} を使用できます。コマンドを実行すると、stash@{0} は最後に保存された変更です。他のストレージを見たい場合は、stash@{5} のように stash@{0} の数を変更するだけです。上の図に示すように、 、最初に git stash list を使用してストレージ リストを表示し、次に git stash show stash@{0} コマンドを使用します。最初の変更を見ると、最新の変更ストアで test.txt ファイルを 1 つだけ変更したことがわかります。 .

git stash show stash@{0} 

4.4 指定したストレージの変更内容を表示する

変更されたファイルを表示するだけでなく、stash 変更のすべての内容を表示する場合、たとえば、最新の stash 変更のすべてのファイルと内容を表示するには、git stash show -p stash@ を使用できます。表示する {0} コマンド。

git stash show -p stash@{0}

4.5 キャッシュされたスタッシュをすべて削除する

git stash clear

おすすめ

転載: blog.csdn.net/legend818/article/details/130065179