Git命令

Git的基础知识

作業目录或工作区 – 在进行实际操作的目录
↑ 添加 ↑
↑ 暂存区或索引
↑ 存在提交的文件的虚拟位置
↑ 提交 ↑
↑ 本地仓库
↑ 用于在自身的工作环境中进行版本管理而创建的仓库
↑ 拉取 推送 ↑
远程仓库
为了多人版本管理和共享而放置在专用服务器上的仓库

仓库 – 记录文件和目录状态的地方。

添加

将文件添加到暂存区。

git add 【ファイル名】

# 変更された全ファイルをステージング・エリアに追加
git add -A
git add --all

# カレントディレクトリ以下の、変更された全ファイルをステージング・エリアに追加
git add .

# バージョン管理されており、変更された全ファイルをステージング・エリアに追加
git add -u
git add --update
New FilesModified FilesDeleted Filesgit add -A〇〇〇git add .〇〇〇git add -u×〇〇

【参考】
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/

广告
将在 10 秒后关闭
bannerAds