1. git pull コマンド
1.1 質問 1: 次のように git pull コマンド プロンプトを入力します。
error: your local changes would be overwritten by cherry-pick.
hint: commit your changes or stash them to proceed.
fatal: cherry-pick failed
理由: ローカル コードが変更されましたが、その変更は送信または保存されていません
解決策:
1. git サーバーから最新のコードを取得したいが、ローカルの変更は破棄したくない場合。
まず git stash を使用して変更されたコードを一時的にシールし、git サーバーから最新のコードがプルされるのを待ち、次に git stash Pop を使用してローカルの変更を復元します。
git stash
git pull origin master
git stash pop
2. ローカル コードを完全にカバーし、サーバー側のコードのみを保持したい場合は、前のバージョンに直接戻ってから続行します。
git reset --hard HEAD^
git pull origin master
1.2 質問 2: git pull または git stash Pop のコマンド プロンプトに次のように入力します。
Unmerged paths:
(use "git restore --staged <file>..." to unstage)
(use "git add <file>..." to mark resolution)
both modified: app/src/main/java/com/exa/tester/TesterActivity.kt
<<<<<<< 更新されたアップストリーム、======= および >>>>>>> 隠蔽された変更が TesterActivity.kt ファイルに表示されます。この問題は、サーバーから取得したコードがローカルの Yes と競合するために発生します。 、ただし、サーバーの最新のブランチに切り替えられており、競合はローカルで解決できます。
<<<<<<< 更新されたアップストリームと ======= の間のコードは、プルしたサーバー コードです。 = ===== から >>>>>>>> 隠蔽された変更は、ローカルで変更された独自のコードです。このように、明確な競合マーカーを使用して変更するのは非常に便利です
- ローカル コードを保持するには、<<<<<<< を削除してください。アップストリームを ======= に更新しました。
- サーバー コードを保持するには、======= を >>>>>>>> 隠し変更を削除します。
1.3 質問 3: 次のように git pull --rebase コマンド プロンプトを入力します。
You are not currently on a branch.
Please specify which branch you want to rebase against.
See git-pull(1) for details.
git pull <remote> <branch>
解決策 1: 最初に指定されたリモート ブランチに切り替えてから、コードを更新します
git checkout 分支名 // 切换到指定远程分支
git pull --rebase
解決策 2: 指定されたリモート ブランチのコードをローカル ブランチに直接更新する
git pull origin 分支名
2、git Pushコマンド
2.1 質問 1
remote: ERROR: commit 99cd9fd: missing Change-Id in message footer
remote:
remote: Hint: to automatically insert a Change-Id, install the hook:
remote: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 [email protected]:hooks/commit-msg ${gitdir}/hooks/
remote: and then amend the commit:
remote: git commit --amend --no-edit
remote:
To ssh://127.0.0.1:8080/packages/apps/Xty
! [remote rejected] HEAD -> refs/for/master (commit 99cd9fd: missing Change-Id in message footer)
error: failed to push some refs to 'ssh://127.0.0.1:8080/packages/apps/Xty'
問題は、commit-msg ファイルが欠落しているため、送信時に Change-Id が見つからないことです。
プロンプトに従って Change-Id を入力し、コマンドを順番に送信してください。
gitdir=$(git rev-parse --git-dir); scp -p -P 29418 [email protected]:hooks/commit-msg ${gitdir}/hooks/
git commit --amend --no-edit
git push origin HEAD:refs/for/master
3. 送信されたコードにより、マージ競合を求めるプロンプトが表示されます。
同じウェアハウス内で、A によって送信されたコードの一部がマージされず、B によって送信されたコードが A によって送信されたコードと競合するものの、A より前にマージされた場合、A のこの送信のステータスには「マージ競合ソリューション」が表示されます
。
1. git pull --rebase コマンドを使用して、ウェアハウスの最新のコードをローカルで更新します。
2. A がローカルに送信したコードをチェリーピックすると、ローカルは「」というプロンプトを表示します。
3. git status を入力して、どのファイルが存在するかを確認します。競合、
4. Return これらのファイルを順番に入力して返します
git reset HEAD 文件名
git checkout -- 文件名
5. 今どのファイルに変更を追加しますか
6. 次のコマンドを入力します。これにより、A の送信が上書きされます。
git add .
git commit // 注意,这里是git commit,不要加--amend
git push origin 分支名