3 行目 commit を実行し、次にプロンプト
commit
それでは git checkout -- b.txt してもステージング領域に復元できますか?なぜ完全に削除されなかったのでしょうか?
git checkout -- b.txt
初心者。 。 。いくつかのチュートリアルを書きます。 。 。 。 。
原則として、git にはファイルをローカルに保存するための 3 つの異なる場所があります。
ワーキングツリー: これは、表示されるすべてのファイルとフォルダーを表します
index: これは実際には次のリポジトリのように .git フォルダーに保存されます (保存形式についてはここでは説明しません).git文件夹里面(在此不讨论保存的格式)
.git
版本库: 保存了所有提交的版本。
在所有东西都提交之后,WorkingTree、index 区和版本库中最新的提交内容是一模一样的。
git add 的意思是用 WorkingTree中的文件替换/更新index区中的文件。因此git add b.txt之后就是用当前保存的b.txt更新index中的 b.txt 文件。
git add
git add b.txt
b.txt
rm b.txt 仅仅是一条 linux 命令,就是删除文件的意思。对git来说这样只是在WorkingTree中删除了b.txt。
rm b.txt
git commit 的意思是把 index 中的文件打包起来放入版本库。由于此时b.txt还在 index 区,所以git commit 仍旧会把b.txt更新到版本库中。
git commit
Changes not staged for commit: deleted: b.txt
这里显示了当前WorkingTree和index区的区别:当前WorkingTree中删除了b.txt文件,但是index还存在这个文件。
no changes added to commit
这个提示应该说是一个警告,由于git commit 的意思是把index区的内容打包放入版本库,可是由于之前commit过了,而且没有add新的东西,所以index区的内容和最新提交是一样的,git没有必要再保存一次,所以显示“没有东西可以commit”
git rm 这条命令的意义是从index区和WorkingTree中删除某个文件,所以git rm b.txt之后index中就没有了b.txt。 就这样
git rm
git rm b.txt
git checkout <branch> 的意思是用branch中最新的提交更新WorkingTree和index区中的内容。由于不可逆,所以如果这两个地方的内容没有提交到版本库的话这条命令会给出提示。git checkout -- filename的意思是用index区的内容替换WorkingTree的某个文件--是可选的,表明这个参数之后的都是文件名。(因为有些时候分支/Tag有可能与文件重名)
git checkout <branch>
git checkout -- filename
--
额外附送一条命令。。。git status
git status
b がありません。インデックス .txt
試してみるgit rm filename
git rm filename
質問者はまず、git に add 操作が必要な理由を知る必要があります。git には最初にコマンドラインしかないため、add 操作は GUI でのファイル選択操作と同等であるため、add 操作と commit 操作は 1 つの操作と見なす必要があります。全体 (GUI と同様に、下でファイルを選択して送信できます) は分割しないでください。
1.git add b.txt //b.txtをワークスペースから一時記憶領域(ステージ)に追加 2.rm b.txt //ワークスペース内のb.txtを削除するが、gitリポジトリからファイルを削除するための rm b.txt は実行されませんでした 3.git commit -m 'b.txt ファイルの削除'//git rm b.txt は実行されなかったので、1 の内容のみをコミット送信しました-->git rm b.txt を 2 から 3 の間に実行してファイルを削除する必要があります
注意して頂きたいのですが、gitにおけるファイル名の変更と削除はほぼ同じで、それぞれgit rmコマンドとgit mvコマンドを使って操作する必要があります。 git のガイドをよく見てください
ファイルを削除します: ワークスペース内のファイルを削除します、ファイル名を rm します 2 つの状況があります: git rm ファイル名 git commit -m 'description' 2番目のケース:誤ってファイルを削除してしまう git checkout -- ファイル名
前に追加された git rm が 1 つ減りました
初心者。 。 。いくつかのチュートリアルを書きます。 。 。 。 。
原則として、git にはファイルをローカルに保存するための 3 つの異なる場所があります。
ワーキングツリー: これは、表示されるすべてのファイルとフォルダーを表します
index: これは実際には次のリポジトリのように
.git
フォルダーに保存されます (保存形式についてはここでは説明しません).git
文件夹里面(在此不讨论保存的格式)版本库: 保存了所有提交的版本。
在所有东西都提交之后,WorkingTree、index 区和版本库中最新的提交内容是一模一样的。
git add
的意思是用 WorkingTree中的文件替换/更新index区中的文件。因此git add b.txt
之后就是用当前保存的b.txt
更新index中的 b.txt 文件。rm b.txt
仅仅是一条 linux 命令,就是删除文件的意思。对git来说这样只是在WorkingTree中删除了b.txt
。git commit
的意思是把 index 中的文件打包起来放入版本库。由于此时b.txt
还在 index 区,所以git commit
仍旧会把b.txt
更新到版本库中。这里显示了当前WorkingTree和index区的区别:
当前WorkingTree中删除了
b.txt
文件,但是index还存在这个文件。这个提示应该说是一个警告,由于
git commit
的意思是把index区的内容打包放入版本库,可是由于之前commit过了,而且没有add新的东西,所以index区的内容和最新提交是一样的,git没有必要再保存一次,所以显示“没有东西可以commit”git rm
这条命令的意义是从index区和WorkingTree中删除某个文件,所以git rm b.txt
之后index中就没有了b.txt
。 就这样git checkout <branch>
的意思是用branch中最新的提交更新WorkingTree和index区中的内容。由于不可逆,所以如果这两个地方的内容没有提交到版本库的话这条命令会给出提示。git checkout -- filename
的意思是用index区的内容替换WorkingTree的某个文件--
是可选的,表明这个参数之后的都是文件名。(因为有些时候分支/Tag有可能与文件重名)额外附送一条命令。。。
🎜🎜リポジトリ: 送信されたすべてのバージョンを保存します。 🎜🎜 🎜すべてが送信された後、WorkingTree、インデックス領域、リポジトリ内の最新の送信はまったく同じになります。 🎜 🎜git status
git add
は、インデックス領域のファイルを WorkingTree 内のファイルに置き換え/更新することを意味します。したがって、git add b.txt
の後、インデックス内の b.txt ファイルは、現在保存されているb.txt
で更新されます。 🎜 🎜rm b.txt
は単なる Linux コマンドで、ファイルを削除することを意味します。 git の場合、WorkingTree のb.txt
を削除するだけです。 🎜 🎜git commit
は、インデックス内のファイルをパッケージ化し、リポジトリに置くことを意味します。この時点ではb.txt
はまだインデックス領域にあるため、git commit
は引き続きb.txt
をリポジトリに更新します。 🎜 リーリー 🎜これは、現在の WorkingTree とインデックス領域の違いを示しています。b.txt
ファイルは現在の WorkingTree から削除されましたが、このファイルはインデックス内にまだ存在します。 🎜 リーリー 🎜git commit
はインデックス領域の内容をリポジトリにパッケージ化することを意味するため、このプロンプトは警告であると言えます。ただし、以前にコミットされており、新しいものは追加されていません。インデックスエリア 内容は最新の投稿と同じで、gitは再度保存する必要がないため、「コミットするものはありません」と表示されます🎜 🎜git rm
このコマンドの意味は、インデックス領域と WorkingTree からファイルを削除することです。そのため、git rm b.txt
の後にはb がありません。インデックス .txt
。 それです🎜 🎜git checkout <branch>
は、WorkingTree とインデックス領域の内容をブランチ内の最新のコミットで更新することを意味します。これは元に戻すことができないため、これら 2 つの場所のコンテンツがリポジトリに送信されていない場合、このコマンドはプロンプトを表示します。git checkout -- filename
は、WorkingTree 内のファイルをインデックス領域のコンテンツに置き換えることを意味します。--
はオプションであり、このパラメータ以降のすべてがファイルであることを示します。名前。 (ブランチ/タグがファイルと同じ名前を持つ場合があるため)🎜 🎜追加のコマンドが含まれています。 。 。git status
これは、WorkingTree とインデックス領域の違い (デフォルトは赤)、およびインデックスと送信された最新バージョンの違い (デフォルトは緑?濃い緑?) を表示することを意味します。さらに、お互いに最新情報を更新する方法についてのヒントも提供されます。 🎜試してみる
git rm filename
質問者はまず、git に add 操作が必要な理由を知る必要があります。git には最初にコマンドラインしかないため、add 操作は GUI でのファイル選択操作と同等であるため、add 操作と commit 操作は 1 つの操作と見なす必要があります。全体 (GUI と同様に、下でファイルを選択して送信できます) は分割しないでください。
1.git add b.txt //b.txtをワークスペースから一時記憶領域(ステージ)に追加
2.rm b.txt //ワークスペース内のb.txtを削除するが、gitリポジトリからファイルを削除するための rm b.txt は実行されませんでした
3.git commit -m 'b.txt ファイルの削除'//git rm b.txt は実行されなかったので、1 の内容のみをコミット送信しました
-->git rm b.txt を 2 から 3 の間に実行してファイルを削除する必要があります
注意して頂きたいのですが、gitにおけるファイル名の変更と削除はほぼ同じで、それぞれgit rmコマンドとgit mvコマンドを使って操作する必要があります。 git のガイドをよく見てください
ファイルを削除します:
ワークスペース内のファイルを削除します、ファイル名を rm します
2 つの状況があります:
git rm ファイル名
git commit -m 'description'
2番目のケース:誤ってファイルを削除してしまう
git checkout -- ファイル名
前に追加された git rm が 1 つ減りました