11.間違ったコード送信に対処する方法

序文

この記事はあなた自身の意見の一部のみを記録していますが、正確ではない可能性があります。学習中の一部の記録のために、スプレーしないでください、ありがとう

masterブランチのポイントコードを変更する場合、誤って処理し、devブランチのコードを変更して、devブランチに送信し、間違ったブランチを書き込んだ場合、この操作をマスターブランチに移動します。この章の知識を活用してください。

シミュレーションシーン

次のシミュレートされたシナリオは、masterブランチにsorry.txtとsorry2.txtの2つのファイルを書き込んだはずですが、devブランチに書き込んでローカルリポジトリに送信したというものです。

[root@huangzb git1]# git branch --list
* master
[root@huangzb git1]# git log
commit 8d09f829db84323eb313606dfcfb4d50eb32e464 (HEAD -> master, tag: v2.0, tag: v1.0, origin/test2, origin/master, origin/dev)
Author: 用户C <用户[email protected]>
Date:   Tue Apr 7 21:10:43 2020 +0800
 
    update heloc.txt
[root@huangzb git1]# git checkout -b dev
Switched to a new branch 'dev'
[root@huangzb git1]#
[root@huangzb git1]# echo '误操作' > sorry.txt
[root@huangzb git1]# git add .
[root@huangzb git1]# git commit -m 'dev误操作'
[dev 4a6d6e4] dev误操作
1 file changed, 1 insertion(+)
create mode 100644 sorry.txt
[root@huangzb git1]#
[root@huangzb git1]# echo '误操作2' > sorry2.txt
[root@huangzb git1]# git add .
[root@huangzb git1]# git commit -m '误操作2'
[dev b6c312e] 误操作2
1 file changed, 1 insertion(+)
create mode 100644 sorry2.txt
[root@huangzb git1]# git log
commit b6c312ef96828c459f9af2490e36b0d04e798470 (HEAD -> dev)
Author: 用户A <用户[email protected]>
Date:   Thu Apr 16 16:12:50 2020 +0800
 
    误操作2
 
commit 4a6d6e4a228881bad4fa629ec46be90f76ce56e9 (HEAD -> dev)
Author: 用户A <用户[email protected]>
Date:   Thu Apr 16 16:10:56 2020 +0800
 
    dev误操作
 
commit 8d09f829db84323eb313606dfcfb4d50eb32e464 (tag: v2.0, tag: v1.0, origin/test2, origin/master, origin/dev, master)
Author: 用户C <用户[email protected]>
Date:   Tue Apr 7 21:10:43 2020 +0800
 
    update heloc.txt
 

2.対策

コマンドを使用する git cherry-pic 提交的sha1-id

救済措置

  1. 正しいブランチに切り替えます(つまり、最初はマスターブランチに書き込みたかったのですが、現在はdevに誤って書き込まれているため、この時点でマスターブランチに切り替える必要があります)。
  2. コマンドが使用git cherry-pick sha1-id現在のブランチにコピー提出ノード指定
  3. 間違ったブランチコミットを復元する

操作は次のとおりです。

2.1正しいブランチに切り替える

[root@huangzb git1]# git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
[root@huangzb git1]#

2.2指定した送信ノードをコピーして移動する

この操作の原理図は次のとおりです。

コマンドを使用してgit cherry-pick 提交id、現在のブランチに指定されたcommitIdをコピーして、新しい投稿のID、回避のロールバックの疑いを再生成しますが、唯一のノードを移動するには、このコマンドを使用することができ、ノードは無視され、最後にコピーすることはできません。複数のノード。

操作は次のとおりです。

[root@huangzb git1]# git cherry-pick 4a6d6e
[master 407ef72] dev误操作
Date: Thu Apr 16 16:10:56 2020 +0800
1 file changed, 1 insertion(+)
create mode 100644 sorry.txt
[root@huangzb git1]#
[root@huangzb git1]# git cherry-pick b6c312e
[master 85c1e9c] 误操作2
Date: Thu Apr 16 16:12:50 2020 +0800
1 file changed, 1 insertion(+)
create mode 100644 sorry2.txt
[root@huangzb git1]#
[root@huangzb git1]# ll
total 24
-rw-r--r-- 1 root root 25 Apr 15 19:27 helloc.txt
-rw-r--r-- 1 root root 14 Apr  5 22:18 hello.txt
-rw-r--r-- 1 root root 38 Apr  5 22:27 README.md
-rw-r--r-- 1 root root 11 Apr 16 16:36 sorry2.txt
-rw-r--r-- 1 root root 10 Apr 16 16:36 sorry.txt
-rw-r--r-- 1 root root 14 Apr  4 13:42 welcome.txt
[root@huangzb git1]#
[root@huangzb git1]# git log
commit 85c1e9ceafce32dd6b9d6b433441492382526e65 (HEAD -> master)
Author: 用户A <用户[email protected]>
Date:   Thu Apr 16 16:12:50 2020 +0800
 
    误操作2
 
commit 407ef72ad19eff57e1025b3cf0bcacdd2afaae78
Author: 用户A <用户[email protected]>
Date:   Thu Apr 16 16:10:56 2020 +0800
 
    dev误操作
 
commit 8d09f829db84323eb313606dfcfb4d50eb32e464 (tag: v2.0, tag: v1.0, origin/test2, origin/master, origin/dev)
Author: 用户C <用户[email protected]>
Date:   Tue Apr 7 21:10:43 2020 +0800
 
    update heloc.txt
 

上の図からわかるように、いくつかの結果を作成すると、次のようになります。

  1. コマンドを使用しgit cherry-pick、実際にマスターブランチへのdevのブランチの変更をコピーし、ポストを
  2. コピーされた2つのノードは、前の2つのノード名とは異なるノード名を持ち、2つのノードは再生成されますが、内容は同じです

マスターブランチのこの時点で、コードは最新かつ正確です。以下は、開発ブランチの操作を扱います。

2.3間違ったブランチを復元する

この例では、間違ったブランチはdevブランチです。このブランチには2つの間違ったコミットノードがあり、削除する必要があります。私たちの知る限り、コミット前に操作を復元できますが、コミットが行われると、レコードを削除できません。 、それで私たちは国を救うために曲線を使います、ステップは以下の通りです:

  1. 間違ったブランチに切り替える
  2. 誤操作の前にノードを見つける
  3. 誤操作の前にノードに切り替えます-自由ブランチを形成します
  4. 間違ったブランチを削除する
  5. この時点で、フリーブランチに基づいて間違ったブランチを再作成します

操作は次のとおりです。

2.3.1間違ったブランチに切り替える

[root@huangzb git1]# git checkout dev
Switched to branch 'dev'
[root@huangzb git1]#

2.3.2誤操作の前にノードを見つける

commit b6c312ef96828c459f9af2490e36b0d04e798470 (HEAD -> dev)
Author: 用户A <用户[email protected]>
Date:   Thu Apr 16 16:12:50 2020 +0800
 
    误操作2
 
commit 4a6d6e4a228881bad4fa629ec46be90f76ce56e9
Author: 用户A <用户[email protected]>
Date:   Thu Apr 16 16:10:56 2020 +0800
 
    dev误操作
 
commit 8d09f829db84323eb313606dfcfb4d50eb32e464 (tag: v2.0, tag: v1.0, origin/test2, origin/master, origin/dev)
Author: 用户C <用户[email protected]>
Date:   Tue Apr 7 21:10:43 2020 +0800
 
    update heloc.txt
 

誤動作する前の最新のノードID:8d09f829db8

2.3.3誤動作の前にノードに切り替える-自由ブランチが形成される

[root@huangzb git1]# git checkout 8d09f829db8
Note: checking out '8d09f829db8'.
 
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
 
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
 
  git checkout -b <new-branch-name>
 
HEAD is now at 8d09f82 update heloc.txt
[root@huangzb git1]#

2.3.4間違ったブランチを削除する

[root@huangzb git1]# git branch -D dev
Deleted branch dev (was b6c312e).
[root@huangzb git1]#

2.3.5現時点でフリーブランチに基づいて間違ったブランチを再作成する

[root@huangzb git1]# git checkout -b dev
Switched to a new branch 'dev'
[root@huangzb git1]#
[root@huangzb git1]# git log
commit 8d09f829db84323eb313606dfcfb4d50eb32e464 (HEAD -> dev, tag: v2.0, tag: v1.0, origin/test2, origin/master, origin/dev)
Author: 用户C <用户[email protected]>
Date:   Tue Apr 7 21:10:43 2020 +0800
 
    update heloc.txt
 

devブランチが復元されたことがわかります。

3. 注意点

私たちは、コマンドを使用することができますgit cherry-pick間違った場所に移動するために提出されますが、このコマンドは、ノードのコピーを移動することもできますが、あなただけの最新のものをコピーすることはできません。

おすすめ

転載: www.cnblogs.com/duguxiaobiao/p/12714101.html