git コマンドに関するよくある質問

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 分支名

おすすめ

転載: blog.csdn.net/qq_34205684/article/details/128038918