Git命令备忘录
鉴于我常常忘记,这是为自己准备的备忘录。
原理
创建存储库
git init
确认工作区的状态
git status
将阶段化的内容添加到索引中
git add .
git add README.md # ファイルを指定する場合
提交到代码库中
git commit -m "message"
git commit -am "message" # ステージング(git add .)とコミットを同時に行う
取消分站
git reset
git reset README.md # ファイルを指定する場合
放弃提交前的更改。
git checkout .
git checkout README.md # ファイルを指定する場合
放弃提交后的更改(恢复到任意状态)。
git reset HEAD^ --hard # 1つ前のコミットまで戻す
git reset HEAD^^^ --hard # 3つ前のコミットまで戻す
git reset ab32c61 --hard # コミットID ab32c61… まで戻す
重置的语法如下。
以”git reset”命令为例,只需要一种选项:
git reset [重置的状态] [重置的模式]
重设之前的状态
将第一个提交称为HEAD。接下来加上”^”的数量表示前面有几个提交。换句话说,如果要返回到前3个提交,可以写成HEAD^^^。
另外,还可以指定提交ID。提交ID可以完全指定所有字符,但是只要前几个字符能唯一确定即可。
重置模式
当在Git中进行工作时,我们可以从以下三个选项中选择将工作状态恢复为哪个阶段:“修改”→“暂存”→“提交”。
モードどこまでリセットするか?つまりどうなる?–soft「コミット」だけリセットする。ワークスペースのファイルが変更されたあと、インデックスにステージングされた状態まで戻る。–mixed「ステージング」までリセットする。ワークスペースのファイルは変更されたままだが、インデックスが空の状態になる。–hard「変更」含めすべてリセットする。ワークスペースのファイルがすべて変更前まで戻る。
管理标签
git tag tag001 # HEADにタグtag001をつける
git tag tag001 ab32c61 # 特定のコミットにtag001をつける
git tag # タグを確認する
git show tag001 # tag001の詳細を確認する
git tag -d tag001 # tag001を削除する
查看提交记录
git log
git log --oneline # 1コミット1行で確認したい場合
git log --all # 他のブランチも確認したい場合
git log --all --graph # 他のブランチとの関係をツリーで確認したい場合
分支关系
创建一个分支
git branch develop # HEADからブランチ作成(ブランチは切り替えない)
git checkout -b develop # HEADからブランチ作成してブランチ切り替え
git checkout ab32c61 -b develop # 特定のコミットからブランチ作成してブランチ切り替え
获取分支的列表
git branch
切换分支
git checkout develop
合并分支
git checkout master
git merge develop --no-edit
git merge develop --no-edit --no-ff # ファストフォワードなしでマージ
快速前进是指在合并时,由于只在一个分支上进行作业,导致不创建合并提交的合并方式。即使在这种情况下,如果希望明确创建合并提交,则可以使用–no-ff选项。
删除分支
git branch -d develop
更改分支名称
git branch -m master main
远程关系
管理远程存储库
git remote add origin https://github/com/[ユーザ名]/[リポジトリ名].git # 追加する場合
git remote rm origin # 削除する場合
git remote # 一覧を確認する場合
将文件推送到远程仓库。
git push origin main # originリモートにmainブランチをプッシュ
git push origin tag001 # tag001の情報をリモートにプッシュ
git push origin --tags # リモートにないタグを一斉送信
git push --set-upstream origin main # 現在のブランチにアップストリームを設定
git push # アップストリームの設定に従ってプッシュ
仅使用git push指令无法将标签信息推送到远程。需要使用类似git push origin –tags的指令来单独发送标签信息。
克隆远程代码库
git clone https://github/com/[ユーザ名]/[リポジトリ名].git
git clone https://github/com/[ユーザ名]/[リポジトリ名].git [ディレクトリ名] # クローン先ディレクトリを指定する場合
获取与远程仓库的差异性
git fetch
git log --oneline # 変更がlogで確認できる
将远程仓库的更改更新到本地
git pull origin main # originリポジトリのmainブランチを取得
pull命令是一种同时执行fetch和merge的命令。只要理解了这一本质,通常只需执行pull就足够了。
撤销对远程仓库的提交
git revert HEAD --hard # 最新のコミットを取り消す場合
在本地撤销提交使用reset命令是可行的,但要撤销远程提交并不那么容易。原因是在对提交进行撤销之前,可能会有其他用户已经拉取了想要撤销的提交。因此,revert实际上不是撤销了提交,而是创建了一个新的提交,使得先前的提交看起来好像从未存在过一样。