1. ホーム
  2. git

gitのよくある問題の解決法

2022-02-16 21:24:44

1. 現在修正されているファイルを古いコミットにコミットしてしまう問題はどうすれば解決できますか?

#git reset --soft HEAD^ (最後のコミントにリセット)

#git reset HEAD reseted_file_name。

#git commit --amend (現在のコミットをコミットする)

#git commit -a (新しいコミットを作成する)

#git review


2. 

複数のコミットを送信しようとしています。という場合は想定内です。

に依存しているコミットを投稿しています。
そうでない場合は、変更を1つにまとめることを検討する必要があります。
コミットしてから投稿してください。
未解決のコミットは
f8a639c (HEAD, Bug1415001) ライブマイグレーションでリソースを正しくロールバックできないのを修正。
7536bf3 "ratelimit_v3"の互換性チェックを削除しました。
本当に上記のコミットを送信しますか?

確認する場合は「yes」、キャンセルする場合は「other」と入力してください。中止する。

解決策

#git checkout master

#git pull origin master

#git checkout BRAND

#git rebase master

#git review


3.

リモート デルタを解決する。100% (10/10)
リモート 変更点の処理:refs: 1, 完了    
リモートで ERROR: コミットメッセージフッターに Change-Id がありません。
リモートの コミットメッセージに関する提案。
リモート ライブマイグレーションでリソースを正しくロールバックできない問題を修正
リモートの 
を使用しています。live_migration で例外が発生した場合。
リモート: _rollback_live_migration() が呼び出され、変数
リモート: "migrate_date" をインポートする必要があり、これは特定のパラメータとして使用します。
リモート:そうでなければ、インスタンスパスが削除されず、次の
remote: live-migration が失敗する。
をリモートで実行します。 
リモートで Closes-Bug: #1415001
をリモートで表示します。 
リモートで Change-Id: Icd34ce4f1b509dd6d228ea2f620d34ac5e529951
をリモートで表示します。 
をリモートで実行します。ヒント: Change-Id を自動的に挿入するには、フックをインストールします。
リモート: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 [email protected]:hooks/commit-msg ${gitdir}/hooks/
をリモートで実行します。 
リモートを使用します。 
ssh://[email protected]:29418/openstack/nova.git へ
 ! [リモート拒否] HEAD -> refs/publish/master/Bug1415001 (コミットメッセージフッターの Change-Id の欠落)
error: 'ssh://[email protected]:29418/openstack/nova.git' へのいくつかの refs のプッシュに失敗しました。

解決策

#gitdir=$(git rev-parse --git-dir); scp -p -P 29418 [email protected]:hooks/commit-msg ${gitdir}/hooks/

#git review


4. git 接続が拒否されました。

ssh -T [email protected]
[root@control-compute00 nova]# ssh-add
認証エージェントへの接続を開くことができませんでした。
[root@control-compute00 nova]# ssh-agent bash
[root@control-compute00 nova]# ssh-add -l
エージェントにはIDがありません。
[root@control-compute00 nova]# ssh-add ~/.ssh/id_rsa
IDが追加されました。/root/.ssh/id_rsa (/root/.ssh/id_rsa)

5. 
Gitを使う上で、時には失敗することもあります。
例:checkout -f、reset -hard、branch -dを実行してブランチを削除する。
その結果、ローカル(リモート)ブランチまたは一部のコミットが失われます。
失われたブランチやコミットの情報が git gc によって消去されていなければ、再ログインすることで回復できます。
一般に、gcは役に立たないオブジェクトをパージする前に長い間保持します。
reflog は git が提供する内部ツールで、git リポジトリ上で行われた様々な操作を記録します。
git reflog show あるいは git log -g コマンドを使用すると、すべての操作のログを見ることができます。
復旧作業は簡単です。
1. git log -g コマンドを使用して、復元する必要があるメッセージの commit_id を探します。これは、コミットの日時から特定することができます。
2. 2. git branch recover_branch commit_id で新しいブランチを作成します。
このようにして、足りないものをrecover_branchブランチに回収しました