目次
1. リモート ウェアハウス コードを新しいローカル ブランチ temp としてローカルにプルします。
2. この temp のブランチとメイン ブランチを比較して、相違点と競合を確認します。
3. 新しい一時ブランチをローカル マスター ブランチとマージします。
4. ローカル マスター ブランチをリモート ウェアハウスに再送信する
3. 指定された stash をワークスペースに適用しますが、stash は削除しません。
4.1 最後に保存されたコンテンツを解放し、保存されたコンテンツをスタックからポップする (つまり、スタックの一番上をポップし、最後に保存されたコンテンツを解放し、保存されたコンテンツを削除する)
4.3 プッシュ スタックによって変更されたファイルを確認する
コードをリモート ウェアハウスにプルするのを忘れた場合は、プルを使用してエラーを報告します。
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
を サーバーに更新します.commit
push
方法 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