Git是什么

Git是用于文件版本管理的工具。如果不进行版本管理,就无法知道最新状态,也无法知道谁在何时做了何种更改。此外,还可能出现覆盖修改的风险。为了防止这些问题,人们使用Git。

以下是一个选项,用中文本地语言重新表述:

【组成】
个人文件 → 暂存区 → 本地仓库 → 远程仓库
个人文件 → 暂存区:git add
暂存区 → 本地仓库:git commit
本地仓库 → 远程仓库:git push
远程仓库 → 本地仓库:git pull

・版本确认

git version

・最初设置

〇ユーザー名登録
  git config --global user.name "github user name"
  git config user.nameで登録確認
〇メールアドレス登録
  git config --global user.email "github@useremail"
  git config user.emailで登録確認
〇使用エディタの登録
  git config --global core.editor "atom --wait"
  git config core.editorで登録確認

在本地创建存储库
存储库是记录文件和目录状态以及变更历史的地方。
通过”git init”命令创建新的存储库
→ 在创建.git目录,并将文件存储在其中,每次更改都会被存储。

将已经存在于Github上的项目复制到本地。

git clone <Github上のアドレス>

・确认更改

〇変更確認
  git diff  :個人ファイルとステージングエリアとの違い
  git diff --staged  :ステージングエリアとローカルリポジトリの違い

〇変更履歴の確認
  git log --oneline #一行で表示する
  git log -p index.html #ファイルの変更差分を表示する
  git log -n <コミット数> #表示するコミット数を制限する

・删除

〇ファイルの削除(ローカルリポジトリとファイル自身)
  git rm <ファイル名>
  git rm <ディレクトリ名>

〇ファイルを残したいとき(ローカルリポジトリからは削除するが、ファイル自身は残す)
  git rm --cached <ファイル名>

取消

・変更を取り消す
git checkout -- <ファイル名> #個人ファイルの復元
git checkout -- <ディレクトリ名> #個人ファイルの復元
git checkout -- . #全変更を取り消す
git reset HEAD <ファイル名> #ステージの復元
git reset HEAD <ディレクトリ名> #ステージの復元
git reset HEAD . #全変更を取り消す
git commit --amend #直前のコミットをやり直す(pushしたコミットはやり直してはいけない)

・搬动

・ファイルの移動
  git mv <旧ファイル> <新ファイル>
  下記コマンドと同じ内容
  mv <旧ファイル> <新ファイル>

  git mv <旧ファイル>
  git add <新ファイル>

・远程仓库

〇リモートリポジトリ(Github)を追加
  git remote add origin <リモートリポジトリURL>
〇リモートリポジトリ(Github)を新規追加
  git remote add origin <リモート名><リモートリポジトリURL>

〇push
  git push <リモート名><ブランチ名>
  git push -u origin master #初回のみ実行、次回以降git pushコマンドのみでpushできるようになる

・化名

〇コマンドにエイリアス(別名)を付ける
  →毎回長いコマンドを入力するのが面倒

  git config --global alias.ci #ci=>commit
  git config --global alias.st #st=>status
  git config --global alias.br #br=>branch
  git config --global alias.co #co=>checkout

  --globalを付けるとPC全ユーザーに反映

〇エイリアスを削除する方法
  git config --global --unset alias.co 

〇エイリアスの一覧を確認する
  git config --global --list

忽略

〇バージョン管理したくないファイルを記載した.gitignoreファイルを作成する
.gitignore

#から始まる行はコメント扱い
〇指定したファイルを除外
  index.html
〇ルートディレクトリを指定
  /root.html
〇ディレクトリ以下を除外
  dir/
〇/以外の文字列にマッチ[*]
  /*/*.CSS

・远程

〇リモート情報を表示する
  git remote
  git remote -v #対応するURLを表示

〇リモートから情報を取得する(ローカルリポジトリに保存してから、個人ファイルに反映)
  git fetch <リモート名>
  git fetch origin
  情報はローカルリポジトリのremoteフォルダに格納されるため、個人ファイルには反映されない。反映させるコマンドはマージを使用する
  git merge /origin

〇リモートから情報を取得する(直接、個人ファイルに反映)
  git pull<リモート名><ブランチ名>
  git pull origin master

  上記コマンドは省略可能
  git pull

  これは下記コマンドを実行したのと同じこと
  git fetch origin master
  git merge origin master

〇pullとfetchの使い分け
  pullはリモートから直接情報を取得できるので楽だが、挙動が特殊なので慣れるまでは、fetch・mergeの方が良い

〇リモートの詳細情報を表示したい時
  git remote show <リモート名>
  git remote show origin

〇リモートを変更する
  git remote rename <旧リモート名><新リモート名>
  git remote rename turorial new_turorial

〇リモートを削除する
  git remote rm <リモート名>
  git remote rm new_turorial

・分支

〇ブランチとは
  分岐することで複数機能を同時並行で開発するための仕組み
  ブランチとはコミットを指すポインタ

〇ブランチを作成するだけで、ブランチの切り替えまでは行わない
  git branch <ブランチ名>
  git branch feature

〇ブランチの一覧を表示する
  git branch
  git branch -a #すべてのブランチを表示する

〇ブランチを切り替える
  git checkout <既存ブランチ名>
  git checkout feature

〇ブランチを新規作成して切り替える
  git checkout -b <新ブランチ名>
  -bオプションを付けるとブランチの作成と切り替えを一度にしてくれるので便利

〇ブランチを変更する
  git branch -m <ブランチ名>
  git branch -m new_branch #自分が作業しているブランチの名前を変更する

〇ブランチを削除する
  git branch -d <ブランチ名>
  git branch -d feature #masterにマージされていない変更が残っている場合削除しない

〇強制削除する
  git branch -D <ブランチ名> 

・合并

〇マージとは
  他の人の変更内容を取り込む作業の事
  git merge <ブランチ名>
  git merge <リモート名/ブランチ名>
  git merge origin/master #作業中のブランチにマージする

〇マージの概念
マージには3種類ある
1種類目:Fast Foward、早送りになるマージ
        ブランチが枝分かれしなかったときは、ブランチのポインタを前に進めるだけ
2種類目:Auto Merge、基本的なマージ
        枝分かれして開発していた場合、マージコミットという新しいコミットを作る
3種類目:コンフリクト
        同じファイルの同じ行に対して異なる編集を行った時に発生

用GitHub进行开发流程
Pull Request的流程
Pull Request是一种功能,用于请求将自己的更改代码合并到代码库中
1. 更新本地代码库的主分支到最新状态
2. 在本地代码库创建一个新的分支
3. 修改本地代码库的文件
4. 提交更改
5. 推送到GitHub(远程代码库)
6. 在GitHub上发送Pull Request
7. 请求进行代码审查
8. 合并Pull Request
9. 删除分支
10. 将GitHub上的主分支pull到本地代码库,使其达到最新状态
11. 删除本地代码库的分支

GitHub Flow的流程
从主分支(master)创建分支
通过拉取请求(pull request)将分支合并回主分支(master)

・重置

〇リベースとは、履歴をきれいに整えた形で変更を統合する
  git rebase <ブランチ名> #ブランチの基点となるコミットを別のコミットに移動する

〇リベースとマージの違い
  履歴が一直線かそうでないか

〇リベースでしてはいけないこと
  GitHubにプッシュしたコミットをリベースするのはNG
  git push -f は絶対NG

〇マージかリベースは考え方次第
  ・マージ
  メリット:コンフリクトの解決が比較的簡単
  デメリット:マージコミットがたくさんあると履歴が複雑化する

  ・リベース
  メリット:履歴をきれいに保つことができる
  デメリット:コンフリクトの解決が若干面倒(コミットそれぞれに解消が必要)

〇使い分け
作業の履歴を残したいならマージ、履歴をきれいにしたいならリベース

• 标签

〇タグ
  コミットを参照しやすくするために分かりやすい名前を付けるのがタグ。
  リリースポイントに使用される。
  git tag #すべてのタグが表示される
  git tag -l 201705 #201705に該当するタグが表示される

〇タグには、注釈付き版(annotated)と軽量版(lightweight)の2種類がある
  注釈付き版(annotated)、情報量がある正式版。
  軽量版(lightweight)、情報量が少ない省略形。
  よく使用されるのが注釈付き版。

〇注釈付き版(annotated)
  git tag -a [タグ名] -m "[メッセージ]"
  git tag -a 20170520_01 -m "version 20170520_01"
  -aオプションを付けると注釈付きタブを作成。
  -mオプションを付けるとエディタを立ち上げずにメッセージを入力できる

〇軽量版(lightweight)
  git tag [タグ名]
  git tag 20170520_01

〇後からタグ付けする
  git tag [タグ名][コミット名]
  git tag 20170520_01 8a5cbc4

〇タグのデータを表示する
  git show [タグ名]
  git show 20170520_01

〇タグをリモートリポジトリに送信する
  git push [リモート名][タグ名]
  git push origin 20170520_01

  git push origin --tags 
  --tagsを付けるとローカルにあってリモートリポジトリに存在しないタグを一斉に送信する。

• 胡子
• 聚宝盒 (jù hé)
• 私物 (sī wù)
• 藏品
• 秘密宝藏

〇作業が途中でコミットしたくないけど、別のブランチで作業しないといけない。
  そういう時に作業を一時避難する。
  git stash (= git stash save) 

〇避難した作業を確認する
  git stash list

〇避難した復元する
  git stash apply #最新の作業を復元する(ワークのみ)
  git stash apply --index #ステージの状況も復元する

〇特定の作業を復元する
  git stash apply [スタッシュ名]
  git stash apply stash@{1}

〇避難した作業を削除する
  git stash drop #最新の作業を削除する

〇特定の作業を削除する
  git stash drop [スタッシュ名]
  git stash drop stash@{1}

〇全作業を削除する
  git stash clear
广告
将在 10 秒后关闭
bannerAds