Git命令
Git的基础知识
作業目录或工作区 – 在进行实际操作的目录
↑ 添加 ↑
↑ 暂存区或索引
↑ 存在提交的文件的虚拟位置
↑ 提交 ↑
↑ 本地仓库
↑ 用于在自身的工作环境中进行版本管理而创建的仓库
↑ 拉取 推送 ↑
远程仓库
为了多人版本管理和共享而放置在专用服务器上的仓库
仓库 – 记录文件和目录状态的地方。
添加
将文件添加到暂存区。
git add 【ファイル名】
# 変更された全ファイルをステージング・エリアに追加
git add -A
git add --all
# カレントディレクトリ以下の、変更された全ファイルをステージング・エリアに追加
git add .
# バージョン管理されており、変更された全ファイルをステージング・エリアに追加
git add -u
git add --update
【参考】
git add -u 、git add -A、以及git add . 的区别是什么?
分行
列出本地存储库分支列表
$ git branch
* primary
# 現在、自分が作業しているブランチの先頭に * が付く
在本地存储库中创建一个分支。
git branch 【ブランチ名】
# ex. ローカルリポジトリに secondary というブランチを作成
$ git branch secondary
$ git branch
* primary
secondary
删除本地存储库的分支
git branch -d 【ブランチ名】
git branch --delete 【ブランチ名】
# ex. secondary というローカルリポジトリのブランチを削除
$ git branch -d secondary
Deleted branch secondary (was 0000000).
【参考】
Git – 分支是什么
猴子老师的Git入门教程 – 分支是什么
结账
切换本地仓库的分支
git checkout 【切り替えるブランチ名】
# ex. ブランチを primary から secondary へ切り替える
$ git checkout secondary
Switched to branch 'secondary'
$ git branch
primary
* secondary
# 現在、自分が作業しているブランチの先頭に * が付く
在本地仓库上创建一个分支,并切换到新的分支上。
git checkout -b 【ブランチ名】
# ex. ローカルリポジトリに secondary というブランチを作成し、secondary へ切り替える
$ git checkout -b secondary
Switched to a new branch 'secondary'
$ git branch
primary
* secondary
复制
复制存储库
git clone 【リポジトリの場所(URL)】 【リポジトリを複製するディレクトリ】
# ex. カレントディレクトリに https://remote.repos/itory というリモートリポジトリを複製
$ git clone https://remote.repos/itory
# ex. /home/git ディレクトリに https://remote.repos/itory というリモートリポジトリを複製
$ git clone https://remote.repos/itory /home/git
投入
将舞台区域的状态记录到代码库中。
# コミットメッセージを指定
git commit -m "【メッセージ】"
git commit --message="【メッセージ】"
# 直前のコミットメッセージを修正し、履歴を上書き
git commit --amend
# メッセージを指定しないコミットを許可
git commit -m --allow-empty-message
将添加到暂存区的style.css文件记录到代码仓库中。
$ git commit -m "style.css added"
[primary 9999999] style.css added
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 style.css
配置
编辑和确认设定内容
# ユーザ識別情報(ユーザ名とメールアドレス)を登録
git config --global user.name "【ユーザ名】"
git config --global user.email 【メールアドレス】
# ターミナルで出力する文字に色付けしたい場合
git config --global color.ui true
# 設定内容の確認
git config -l
git config --list
不同的
确认已更改文件的差异
# 変更されたファイルとステージング・エリア(git add 未実行の状態)の差分を確認
git diff
# ステージング・エリアとリポジトリ(git commit 未実行の状態)の差分を確認
git diff --cached
更改index.html文件后,执行git add命令后检查差异。
$ git diff --cached
diff --git a/index.html b/index.html
index 732c3b4..e967372 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
- (マイナス) が削除された行 ※通常は赤で表示
+ (プラス) が追加された行 ※通常は緑で表示
帮助
帮助查询
git help 【コマンド】
git 【コマンド】 --help
man git-【コマンド】
# ex. config コマンドのヘルプを参照する
git help config
开始
对现有目录进行仓库初始化
# .git という名前の新しいサブディレクトリが作られ、リポジトリに必要なすべてのファイルがその中に格納される
git init
# ex. /home ディレクトリに空のリポジトリを作成
$ cd /home
$ git init
Initialized empty Git repository in /home/.git/
记录
查看提交历史
# すべてのコミット履歴を表示
git log
# 最新のコミット履歴を1件のみ表示
git log -1
# すべてのコミット履歴を1行で簡潔に表示
git log --oneline
# コミット履歴に変更内容も追加して表示
git log -p
在使用git log -p命令时,会将差异命令的内容添加到提交记录中。
$ git log -p
commit 9999999999999999999999999999999999999999
Author: git-user <git@user.com>
Date: Tue Oct 10 10:20:20 2020 +0900
【コミットメッセージ】
diff --git a/index.html b/index.html
index 732c3b4..e967372 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
- (マイナス) が削除された行 ※通常は赤で表示
+ (プラス) が追加された行 ※通常は緑で表示
: ← 表示内容が多い場合、↑↓キーでスクロールし、Qキーで終了
拉 (lā)
将远程仓库的内容导入到工作目录中。
git pull 【リモート名】 【ローカルリポジトリのブランチ名】
# ex. origin というリモートリポジトリの内容をローカルリポジトリの primary ブランチに取り込む
$ git pull origin primary
推动
将本地仓库的内容发送到远程仓库。
git push 【リモート名】 【リモートリポジトリのブランチ名】
# ex. origin というリモートリポジトリの primary ブランチにローカルリポジトリの内容を送信
$ git push origin primary
遥远的
显示远程存储库的名称
git remote
# リモートリポジトリの名前と場所(URL)を表示
git remote -v
添加远程仓库
git remote add 【リモート名】 【リモートリポジトリの場所(URL)】
# ex. 現在のローカルリポジトリに orgin という名前で https://remote.repos/itory を追加
$ git remote add origin https://remote.repos/itory
删除远程代码库
git remote rm 【リモート名】
更改远程名称
git remote rename 【現在のリモート名】 【新しいリモート名】
重置
从暂存区中删除所有文件(撤销add命令)。
git reset
将所有添加到分组文件夹的文件删除
$ git status
# On branch primary
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
# modified: style.css
【工作目錄】
↓
新增
↓
【暫存區】 index.html style.css
$ git reset
Unstaged changes after reset:
M index.html
M style.css
【工作目录】
↓ ↑
添加 重置 index.html style.css
↓ ↑
【暂存区】
$ git status
# On branch primary
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: index.html
# modified: style.css
【工作目录】index.html style.css
↓ ↑
添加 重置
↓ ↑
【暂存区】
重置【文件】
从暂存区删除【文件】(撤销add命令)
git reset 【ファイル】
从已添加到Staging Area的文件中,仅移除 style.css。
$ git status
# On branch primary
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
# modified: style.css
【工作目录】
↓
新增
↓
【暂存区域】 index.html style.css
$ git reset style.css
Unstaged changes after reset:
M style.css
【工作目录】
↓ ↑
添加 重置 style.css
↓ ↑
【暂存区】 index.html
$ git status
# On branch primary
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: style.css
【工作目录】 style.css
↓ ↑
添加 重置
↓ ↑
【暂存区】 index.html
回退 –soft HEAD^
撤销最新的提交命令
在中文中,”HEAD”表示最新的提交位置,”HEAD^”表示前一个提交位置。
git reset --soft HEAD^
index.html 撤销最近的更新提交,并将index.html 文件重新放回暂存区。
$ git status
# On branch primary
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
【暂存区】 index.html
↓
提交
↓
【本地代码库】
$ git commit -m "index.html を更新"
[primary 9999999] index.html を更新
1 file changed, 2 insertions(+)
$ git log -1
commit 9999999999999999999999999999999999999999
Author: git-user <git@user.com>
Date: Tue Oct 10 10:20:20 2020 +0900
index.html を更新
【暂存区】
↓
提交
↓
【本地代码库】 index.html
$ git reset --soft HEAD^
$ git status
# On branch primary
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
$ git log -1
commit 0000000000000000000000000000000000000000
Author: git-user <git@user.com>
Date: Tue Oct 10 10:10:10 2020 +0900
index.html を更新 のひとつ前のコミット履歴
【暂存区】index.html
↓ ↑
提交 撤销软回退到前一个版本
↓ ↑
【本地代码库】
将代码回滚到上一个提交。
撤销最新的 commit 命令历史(包括作业目录和暂存区的所有更改操作)。
※ HEAD 是指最新提交的位置,HEAD^ 是指前一个提交位置的意思。
git reset --hard HEAD^
更新index.html文件的提交并撤销,将所有内容恢复到上一个提交的状态。
$ cat -n index.html
1 reset --hard HEAD^ 実行前の状態
2 reset --hard HEAD^ 実行によって、この行(2行目)の追加は取り消される
【工作目录】在index.html中添加第二行
↓
加
↓
【暂存区】
↓
提交
↓
【本地仓库】index.html中添加了第二行
$ git reset --hard HEAD^
HEAD is now at 0000000 index.html を更新 のひとつ前のコミット履歴
$ cat -n index.html
1 reset --hard HEAD^ 実行前の状態
【作业目录】:在index.html文件的第二行添加新内容
↑
添加
↑
【暂存区】
↑
提交
↑
reset –hard HEAD^
↑
【本地仓库】:index.html文件中未添加第二行内容
重置 — 强制 HEAD
撤销最新的提交命令执行后,在工作目录和暂存区(包括add命令)中的所有操作。
※ HEAD 指的是最新的提交位置
git reset --hard HEAD
将index.html文件更新内容回退,并将工作目录和暂存区恢复到最新的提交状态。
$ cat -n index.html
1 reset --hard HEAD 実行前の状態
2 reset --hard HEAD 実行によって、この行(2行目)の追加は取り消される
【作業目录】在 index.html 上添加第二行
↓
添加
↓
【暂存区】index.html 添加了第二行
$ git reset --hard HEAD
HEAD is now at 0000000 index.html を更新 のひとつ前のコミット履歴
$ cat -n index.html
1 reset --hard HEAD 実行前の状態
【工作目录】在 index.html 文件中添加第二行。
↑
添加
↑
重置 –hard HEAD
↑
【暂存区】index.html 文件已经添加第二行。
重置–hard的HEAD^和HEAD之间的区别
最新的提交记录有以下两个:
$ git log --oneline -2
9999999 index.html を更新
0000000 index.html を作成
当在舞台区域添加了style.css时。
$ git status
# On branch primary
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: style.css
如果执行 reset –hard HEAD^ 的话
$ git reset --hard HEAD^
HEAD is now at 0000000 index.html を作成
# 最新のコミット履歴 「9999999 index.html を更新」 が取り消される
$ git log --oneline -2
0000000 index.html を作成
1111111 index.html を作成 のひとつ前のコミット履歴
将 style.css 文件的提交添加也被撤销
$ git status
# On branch primary
nothing to commit, working directory clean
如果执行 `reset –hard HEAD`。
$ git reset --hard HEAD
HEAD is now at 9999999 index.html を更新
# 最新のコミット履歴は変化なし
$ git log --oneline -2
9999999 index.html を更新
0000000 index.html を作成
只取消对style.css文件添加到暂存区中的操作。
$ git status
# On branch primary
nothing to commit, working directory clean
重置 — 强制 ORIG_HEAD
取消最近的重置
git reset --hard ORIG_HEAD
取消撤销直前的提交记录“9999999 更新了index.html”。
# 最新2件のコミット履歴を確認
$ git log --oneline -2
9999999 index.html を更新
0000000 index.html を更新 のひとつ前のコミット履歴
# 最新のコミット履歴を取り消し
$ git reset --hard HEAD^
HEAD is now at 0000000 index.html を更新 のひとつ前のコミット履歴
# 最新2件のコミット履歴を確認
$ git log --oneline -2
0000000 index.html を更新 のひとつ前のコミット履歴
1111111 index.html を更新 のふたつ前のコミット履歴
# 最新のコミット履歴の取り消しを取り消し
$ git reset --hard ORIG_HEAD
HEAD is now at 9999999 index.html を更新
# 最新2件のコミット履歴を確認
$ git log --oneline -2
9999999 index.html を更新
0000000 index.html を更新 のひとつ前のコミット履歴
状态
确认每个文件处于什么状态
git status
index.html 已被更新,但尚未添加到暂存区(未执行 git add 和 git commit)。
$ git status
On branch primary
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: index.html
style.css已添加到暂存区,但尚未提交到代码库(已执行git add,但未执行git commit)。
$ git status
On branch primary
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: style.css
script.js 已经创建了,但尚未添加到暂存区。(新创建的文件没有执行 git add 和 git commit)
$ git status
Untracked files:
(use "git add <file>..." to include in what will be committed)
script.js
【参考】
https://git-scm.com/book/ja/
https://backlog.com/ja/git-tutorial/
【参考资料】
https://git-scm.com/book/zh/
https://backlog.com/zh/git-tutorial/