ホームページ  >  記事  >  開発ツール  >  git の使い方の詳細な紹介

git の使い方の詳細な紹介

coldplay.xixi
coldplay.xixi転載
2021-04-28 17:07:073395ブラウズ

git の使い方の詳細な紹介

1、Git概念

1.1. Git库中由三部

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目

1) 工作目录:用户本地的

2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为

3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次

推荐(免费):git

1.2. 使用Git时的

1.2.1. Git初始

1) 配置使用git仓库的人

git config --global user.name "Your Name Comes He

2) 配置使用git仓库的人员em

git config --global user.email you@yourdomain.example.

1.2.2. Git文档忽

工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文

例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则

echo “zh” > .gitign

git ad

有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitign

1.3. Git与Repo

Git操作一般对应一个仓库,而Repo操作一般对应一个项目,即一个项目会由若干仓库

例如,在操作整个Recket项目时使用Repo,而操作其中的某个仓库时使用Git。在包含隐藏目录.git的目录下执行git

2. Gi

Git help 获取git基

(如果要知道某个特定命令的使用方法,例如:使用Git help clone,来获取git clone的使用

3. Git本地

3.1. Git i

或者使用git init-

创建一个空的Git库。在当前目录中产生一个.git 的子目录。以后,所有的文件变化信息都会保存到这个目录下,而不像CVS那样,会在每个目录和子目录下都创建一个CVS

在.git目录下有一个config文件,可以修改其中的配置

3.2. Git 

将当前工作目录中更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示记入了版本历史中,这也是提交之前所需要执行的

可以递归添加,即如果后面跟的是一个目录作为参数,则会递归添加整个目录中的所有子目录和文件。

git add dir1 ( 添加dir1这个目录,目录下的所有文件都被加

Git add f1 f2 ( 添加f1,f2

git add . ( 添加当前目录下的所有文件和子目

3.3. Git

从当前的工作目录中和索引中删除

可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件。

git rm –r * (ディレクトリを入力し、このステートメントを実行すると、ディレクトリ内のすべてのファイルとサブディレクトリが削除されます。

git rm f1 (ローカル ディレクトリ内のこのファイルを含むファイル f1 を削除し、 File

git rm --ached f1 (ファイル f1 を削除すると、ローカル ディレクトリ ファイルは削除されず、インデックス内のファイル レコードのみが削除されます。キャッシュに git 追加されたファイルは削除されます。このファイルの送信は、一度に多数のファイルを追加したが、そのうちのいくつかを除外したい場合に適しています。

3.4. Git com

現在の作業ディレクトリに変更を送信します

git commit コマンドを直接呼び出すと、コメントを入力するように求められます。コマンド ラインに次のようにコミット コメントを入力します: git commit -m "Initial commit of CVS とは異なり、git commit コメントは空であってはいけないことに注意してください。空でない場合は送信されます。

git commit には -a パラメータもあり、これによって識別されない変更を強制的に送信できます。 git add を使用しますが、これを使用することはお勧めできません

Submit するたびに、git はグローバル コード用に一意のコミット識別コードを作成します。ユーザーは git restart コマンドを使用して任意のコミットに復元できます

git commit –-amend –m “message” (コミット ID 内) 送信された

3.5 を継続的に変更します。 Git sta

リポジトリのステータスを確認します。どのファイルが変更されたか、どのファイルが git リポジトリに追加されていないかなど。コミットする前に毎回このコマンドを使用してライブラリを確認することをお勧めします。

最も一般的な誤操作は、ファイルを変更して直接ファイルを変更することです。 git add を呼び出さずにコミット操作を呼び出して、ファイルが変更されたことを git ライブラリに通知することで、ファイルが変更されます。実際の送信はありません。この時点で、開発者がファイルが送信されたと考えて変更を続けている場合は、ファイルを削除した場合、変更された内容はバージョン管理されなくなります。送信する前に git status を使用して毎回確認すると、この種のエラーが見つかります。そのため、git status コマンドを呼び出すと、 「変更されましたが、更新されていません:」というプロンプトが表示されるファイルには特に注意する必要があります。これらのファイルは、最後のコミットと比較して変更されていますが、

3.6 を使用していません。Git

によって識別されます。 git add は、各バージョンの変更を含む履歴ログを表示します。各バージョンの変更は、コミットに対応します。

#Git log

-1 は、1 つのコミットのみを表示することを意味します。5 つのコミットを表示したい場合は、 、-5 を使用します。指定しない場合、git log はコミットから開始して戻ります。

Git log --stat –summary (各バージョンの詳細を表示します)

プロジェクト ログ情報のヘッダー各ログ行 (つまり、文字列) は、バージョン更新送信の名前です。この名前は、プロジェクトのバージョン番号として理解できます。プロジェクトのバージョン番号は一意である必要があり、デフォルトで Git によって自動的に生成され、マークが付けられます。プロジェクトの特定の更新。プロジェクトのバージョン番号を git-show コマンドのパラメーターとして使用すると、プロジェクト バージョンの更新の詳細を表示できます。

1) Git

2) Git

実際には、上記のコマンドは実際のバージョン番号のカスタマイズではなく、タグ オブジェクトを作成するだけであり、プロジェクトのバージョンを外部に公開するときに使用されます。 Git me

サーバーを置きます ダウンロードされたコードはローカル コードとマージされます。またはブランチ

例: 現在マスター ブランチ上にあり、ブランチ dev をマスターにマージする場合は、 git merge

注: git merge nov/eclair_eocket (マージすることです)サーバー git ライブラリの eclair_eocket ブランチをローカル ブランチにマージします

git rebase nov/eclair_eocket (サーバー git ライブラリの eclair_eocket ブランチをローカルの一時ブランチにマップし、ローカル ブランチ上の変更をマージします)この一時ブランチに追加し、この一時ブランチを使用してローカル

3.8を初期化します。Git d

ローカル コードとインデックス内のコードを比較するか、インデックス内のコードとコードを比較します。ローカルの倉庫

1) Git d

作業ディレクトリとインデックスの

を比較します。

2) Git diff - - cac

インデックスをローカル ウェアハウスと比較する

3.9. Git チェック

3.9.1. スイッチ

1) 新しいブランチを作成し、

Git checkout –b new

2) すでに確立されているローカル ブランチ local_bra

Git checkout local_bra

# に切り替えます。 ##(cat .git/HEAD を使用すると、refs:refs/heads/ local_bran

3 が表示されます) サーバー上のブランチに切り替えます。 #(リモート ブランチ remote_branch は git Branch –r

4 を通じてコミットに切り替えることができます)

Git チェックアウト commit

(cat .git/HEAD を使用した後、 commit_ を表示します)

5)

Git チェックアウト

(cat .git/HEAD を使用した後、t

# を表示します) に切り替えます。 #注意: 1) と 2) を除いて、他の 3 つは一時的な (ブランチなし) 状態に切り替わっているだけです (このヘッドは切り離されています)。 ) オンでは、cat .git/HEAD は対応するコミット ID を指していると認識します。これ (ブランチなし) は一時的にのみ存在し、真に確立されたブランチではありません。このとき、2)を実行すると、これ(ブランチなし)は自動的に消えますが、1)を実行すると、新しいブランチが作成され、この新しいブランチにこれ(ブランチなし)がアタッチされます。 cat .git/ refs/heads/new_branch 先ほどのコミットを指していることがわかります


3.9.2. 既存のブランチで初期化する


確立されたローカル ブランチ、リモート ブランチ、コミット ID またはタグに切り替えながら次のコマンドを実行し、新しいブランチ new_branch を作成し、この新しいブランチにハングします


1) すでに確立されているローカル ブランチ local_branch に切り替え、このブランチを使用して新しいブランチ new_bran


git checkout –b を初期化します。 new_branch local_bra


2) リモート ブランチremote_branch に切り替え、このブランチを使用して新しいブランチ new_bran


Git checkout –b new_branch remote_bra


3) コミット ID に切り替えて、新しいブランチを作成します new_bra


Git checkout –b new_branch commit


4) 特定のタグに切り替えて、新しいブランチを作成します new_bra


##Git checkout –b new_branch


3.9.3. また、


例: 「git checkout app/model/user. rb" は user.rb ファイルを最後に送信されたバージョンから更新し、コミットされていない作業ディレクトリの内容はすべて



## になります。


#3.10. Git-ls


現在の git ライブラリにある

を確認する

3.11. Git


ファイル、ディレクトリ、または


の名前を変更する

例: Git mv helloworld.c helloworld1.c (ファイル helloworld.c の名前を helloworld1


3.12 に変更します。Git bra


3.12.1.


#git リポジトリにブランチを作成するコストはほぼゼロなので、ケチる必要はありません。さらにいくつかのブランチを作成します。初めて git init を実行すると、システムは "master" という名前のブランチを作成します。他のブランチは手動で作成されます。


ここでは、いくつかの一般的なブランチを説明します。ブランチ


メイン ブランチ マスターとの干渉を避け、他のユーザーとのコミュニケーションを容易にするために、独自の個人作業ブランチを作成します


#リスクの高い作業を行う場合は、実験的なブランチを作成してください。


他の人の作業をマージする場合は、マージが完了したら、独自の


# を「フェッチ」して、追加、削除、確認などを行います。


# 注:通常、ブランチ情報は .git/refs/ ディレクトリにあります。heads ディレクトリはローカル ブランチ、remotes は対応するサーバー上のブランチ、タグは


##3.12 です。 .2 .


git ブランチを確認すると、ローカル git ライブラリ内のすべてのブランチがリストされます。リストされたブランチのうち、ブランチ名の前に * がある場合、このブランチは現在の


git ブランチ -r は、サーバー git ライブラリのすべての


をリストします (引き続き使用できます)コマンド「git checkout -b local ブランチ名サーバー ブランチ名」を使用して、サーバー上の特定のブランチのコード テキストを取得します。


#3.12.3. どの

# かを確認します。

##cat .git/H

3.12.4.

# を作成します##1) git ブランチ


ブランチは作成されますが、現在の作業ブランチは新しく作成されたブランチに切り替わりません。そのため、コマンド「git checkout ブランチ名」 " は


2) git checkout –b


ブランチを作成するだけでなくスイッチも作成するために必要です現在作業中のブランチをブランチ


3.12.5. ブランチに切り替える: git checkout


ブランチに切り替えるメイン ブランチ: git checkout mas


3.12.6. 削除


#git ブランチ –D


注: 削除後、ブランチで行われたすべての変更を復元することはできません。これを強制的に削除します


3.12.7. 2 つのブランチ上のファイルを比較します


git diff master ブランチ名 ( Compare master ブランチを別のブランチの


##3.12.8. ブランチを表示


git-show-branch (現在のブランチのコメントと


をコミット

git-show-branch -all (すべてのブランチのコミット コメントと情報を表示)


* [dev]


! [マスター]



#* [開発]


* [dev^]


* [dev~2]


* [マスター]


#上記の例では、「--」の上の 2 行は、dev と master の 2 つのブランチがあり、dev ブランチに最後に送信されたログがマスターの「d2」であることを示しています。ブランチ 最後にコミットされたログは「m2」でした。 「--」の下の行はブランチ進化の履歴を表します。dev は dev ブランチで発生した最後のコミットを表し、dev^ は dev ブランチで発生した最後から 2 番目のコミットを表します。 dev~2 は、dev ブランチ


3.12.9で発生した最後から3番目の操作を表します。現在のブランチの操作を表示します


git whatchan


3.12.10.合




git merge "コメント" マージされたターゲット ブランチがマージされます


マージで競合がある場合、git には # が表示されます


##例: git checkout master (master に切り替え


git merge HEAD dev~2 (master ブランチとdev~2 ブランチ) または: git merge master de



##git pull マージされたターゲット ブランチは次のとおりです。マージ

例: git checkout master (master に切り替え

##git pull .dev~2 (現在のものをマージ) branch と dev~2


##3.13. Git reb


は通常、サーバーの最新のコンテンツをマージするときに使用されます。ローカルへの送信 (例: バージョン C の場合) コンテンツをサーバーからローカルに取得し、ローカルのコンテンツを変更するときに、ローカルで変更されたコンテンツをサーバーに送信したいのですが、サーバー上のバージョンが変更されていることがわかります。このとき、まず Git rebase を実行してサーバーをリベースする必要があります。最新バージョンはローカルのバージョンにマージされます。以下の 2 つの図で説明すると、 rebase コマンドを実行すると、実際に分岐点が C から G に移動し、分岐にも


が追加されます。

##3.14. Git



放棄された研究開発コードのリセットに加えて、ライブラリの逆転と回復も実行されます。重要な役割です。たとえば、コード ライブラリをリモートでクローンします。ローカルで開発した後は、リモートに送信する準備が整います。ただし、ローカル コード ベースが開発されると、機能的なコミットとバックアップ用のコミットが存在します。つまり、コミットログには無駄なログがたくさんあるので、これらのログを保持したくないのですが、リモートに送信するときに、ライブラリにも送信されます。そのため、git res


git replace の概念はさらに複雑で、そのコマンド形式は次のとおりです: git replace [- -mixed | --soft | --hard] [コマンドの



##

--mixed これはデフォルトのオプションです。たとえば、 git replace [--mixed] dev^ (dev^ の定義については、2.6.5 を参照してください)。その機能はブランチ ステータスを dev1^ にリセットすることだけであり、作業ファイルの内容は変更されません。つまり、 dev1^ から dev1 へのすべてのファイル変更は保持されますが、 dev1^ と dev1 の間のコミット ログはすべてクリアされ、変更されたファイルの内容は git add によって識別されません。再コミットしたい場合は、次のことも必要です。変更されたファイルに対して git add を実行します。こうすることで、コミット後に非常にきれいなコミット レコードが得られます。 (インデックスとウェアハウスの


を元に戻す --soft は、 git replace –mixed を実行してから、変更されたファイルに対して git add を実行するのと同じです。このオプションを選択すると、直接コミットできます (ウェアハウスで


--hard コマンドをロールバックすると、ファイルのコンテンツを含むすべての情報がロールバックされます。一般に、これは放棄されたコードをリセットする場合にのみ使用されます。実行後、ファイルの内容は復元できません (作業ディレクトリ、インデックス、ウェアハウス内の


## はロールバックされます。



#使用した分割に切り替えます


git replace HEAD^ 最初の状態にロールバックします


git replace HEAD~2 2 番目のロールバック


作業ディレクトリ内のファイルをロールバックしたい場合は、次を使用します。 gitリセット - - ハード HEAD^ 最初の


git リセット - - ハード HEAD~2 2 番目の

# に戻る
##次の


を使用して、現在の作業ディレクトリを指定されたバージョン番号に完全にロールバックすることもできます。以下に示すように、5 つのバージョンが送信されたと仮定します。 A から G までのバージョンがあり、そのうち C のバージョン番号は bbaf6fb5060b4875b18ff9ff637ce118256d6f20 です。「git replace bbaf6fb5060b4875b18ff9ff637ce118256d6f20」を実行しました。その後、提出された提出物は A ~ C の 3 つだけになりました。


3.15. Git r


#バージョンへの特定の変更を復元します (例: git revert commit_id ( commit_id は、コードがコミットされるときに生成されます)

を表す一意の単語 例: (3.6 の場合) git revert dfb02e6e4f2f7b573337763e5c0013802e392818 (最後のコミットの
を復元するには、この操作を実行します)

3.16. Git con

#このコマンドを使用して、「git config ブランチ」などのさまざまな Git 設定を追加および変更します。 master.remoteorigin" マスターのリモート リポジトリを、origin version

3.17 というエイリアスに設定します。Git s

オブジェクトの違いを表示します

3.18. Git

タグ オブジェクトを作成、一覧表示、削除、または検証します ( GPG## で署名

#特定のバージョンにタグを付けることができるため、複雑なバージョン番号のハッシュ値文字列を覚えておく必要はありません。たとえば、「git tag」を使用できます。 revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20" 復元したバージョンをマークするには、将来そのバージョンを表示したいときに、ハッシュ


# の代わりに revert_version タグ名を使用できます。

#4. Git サーバー操作コマンド (


4.1. Git cl

と同様)


サーバーのウェアハウスのコードをローカルに作成されたディレクトリに取得します (サーバーを使用して)


git を通じてリモート git ライブラリを取得しますclone その後、.git/config 内の開発者情報は一緒に複製されません。開発者情報は引き続きローカル ライブラリの .git/config ファイルに追加する必要があります。さらに、開発者は .gitignore

# も追加する必要があります## 自身。


git clone を通じて取得したリモート git ライブラリには、リモート git ライブラリの現在作業中のブランチのみが含まれています。他のブランチ情報を取得したい場合は、「git ブランチ -」を使用する必要があります。他のリモート ブランチ コードを取得する必要がある場合は、コマンド「git checkout -b ローカル ブランチ名リモート ブランチ名」を使用できます。ここで、リモート ブランチ名は「git Branch -r」、ブランチはリストされる名前は通常、「オリジン/ブランチ名」などです。ローカルブランチ名がすでに存在する場合は、「-b」



は必要ありません。




##4.2. Git


コードを取得するサーバーのリポジトリからのローカル コードのマージ (サーバーと対話し、サーバーから最新のコードをダウンロードします。これは、Git fetch Git mer


from other と同等です)コードをローカルで更新するには、リポジトリ (リモートまたはローカルのいずれか) を使用します。たとえば、「git pullorigin master」は、オリジン リポジトリのコードをローカル マスターに更新します。


git pull 任意の git ライブラリから特定のブランチの内容を取得できます。 使用法

##git pull username@ipaddr: リモート リポジトリ名 リモート ブランチ名 ローカル ブランチ名。このコマンドは、リモート git ライブラリからローカル git ライブラリのローカル ブランチにリモート ブランチ名を取得します。ローカル ブランチ名を書かない場合は、ローカルの現在の

# にプルされます。

デフォルトです。 ##git pull はブランチのマージにも使用できることに注意してください。これは git merge と同じ効果があります。したがって、ローカル ブランチにすでにコンテンツがある場合、git pull はこれらのファイルをマージします。競合があります。













##4



ローカル コミット コードをリモート リポジトリに更新します。 「git Push Origin」はローカル コードを orgin という名前のリモート バージョンに更新します


git Push と git pull はまったく逆で、ローカルブランチからリモートブランチへ。使用法: git Pushusername@ipaddr: リモート リポジトリ名 ローカル ブランチ名 リモート ブランチ名。このコマンドは、ローカル git ライブラリのローカル ブランチをリモート git ライブラリのリモート ブランチにプッシュします。


git Push はファイルを自動的にマージしないように見えることに注意してください。したがって、git プッシュ中に競合が発生した場合、プロンプトは表示されずに、後でプッシュされたファイルの内容によって強制的に上書きされます。これは共同開発する場合には非常に危険です





##4.4. Git


サーバーのリポジトリからコードをダウンロードします。 (サーバーと対話し、サーバーから最新の


をダウンロードすることは、最新バージョンをリモートからローカルに取得することと同等であり、自動的にマージされず、より安全です。 Git pull より


##このメソッドを使用して


例: git checkout nov/eclair_rocket を使用する場合(nov/eclair_rocket はブランチ名)、これは git fetch コマンドが最後に使用されたときにサーバーからダウンロードされたコードを取得するためのものです。最初に git fetch を使用し、次に git checkout nov/eclair_rocket を使用すると、最初に最新の更新情報をサーバーからダウンロードし、最新のコードをダウンロード...) h:。




:。 。 :。 ) l:。 。 )e 相互)。 。 g. w。 g))t本:レコードレコードレコードレコード;:))):]。た。 :e)) ブランチ: 2)。ブランチ: ブランチ d レコード。 2012-22:) 歴史) さようなら。ブランチ r の名前に名前を付けます。名前、名前枝 D オン。 。 。支店。 。 。 ;;:。 h)に記載。 v.エス。コデッハッ。 h. 。支店。 )gg)dd)hh)hh 名前には上枝 t があります。 d. f. F V。 e.うわぁ:)。 1. g. 。 s)。 。 。 。 t))):。 m))):。 d. 。 。 t コマンド) lp を注文します。 。 e.e.を比較してください。 Make ml" 名前設定項目...;.Into...)h:.




:..:.)l:..)e 相互)..g.w.g))t本:記録の記録;:))):].t.:e )) ブランチ: 2). ブランチ: ブランチ d レコード. 2012-22:) 履歴) 別名. 名前ブランチ r 名前. 名前、名前ブランチ D on... ブランチ...;;:. 説明 h).v. es. コード ghdhh. h.. ブランチ.) gg) dd) hh) hh 名前 上ブランチ t. d. f. f)) v. e.wg:). 1. g.. s). ..t))):.m ))):.d..t コマンド) Let lp..e.e:.Make ml" の名前設定項目と比較します。 。 ;。なる。 。 。 ) h:。




:。 。 :。 ) l:。 。 )e 相互)。 。 g. w。 g))t本:レコードレコードレコードレコード;:))):]。た。 :e)) ブランチ: 2)。ブランチ: ブランチ d レコード。 2012-22:) 歴史) さようなら。ブランチ r の名前に名前を付けます。名前、名前枝 D オン。 。 。支店。 。 。 ;;:。 h)に記載。 v.エス。コデッハッ。 h. 。支店。 )gg)dd)hh)hh 名前には上枝 t があります。 d. f. F V。 e.うわぁ:)。 1. g. 。 s)。 。 。 。 t))):。 m))):。 d. 。 。 t コマンド) lp を注文します。 。 e.e.を比較してください。 Make ml" 名前設定項目...;.Into...)h:.




##:..:.)l:..)e 相互)..g.w.g))t本:記録の記録;:))):].t.:e )) ブランチ: 2). ブランチ: ブランチ d レコード. 2012-22:) 履歴) 別名. 名前ブランチ r 名前. 名前、名前ブランチ D on... ブランチ...;;:. 説明 h).v. es. コード ghdhh. h.. ブランチ.) gg) dd) hh) hh 名前 上ブランチ t. d. f. f)) v. e.wg:). 1. g.. s). ..t))):.m ))):.d..t コマンド) Let lp..e.e:.Make ml" の名前設定項目と比較します。 。 ;。なる。 。 。 ) h:。




#:。 。 :。 ) l:。 。 )e 相互)。 。 g. w。 g))t本:レコードレコードレコードレコード;:))):]。た。 :e)) ブランチ: 2)。ブランチ: ブランチ d レコード。 2012-22:) 歴史) さようなら。ブランチ r の名前に名前を付けます。名前、名前枝 D オン。 。 。支店。 。 。 ;;:。 h)に記載。 v.エス。コデッハッ。 h. 。支店。 )gg)dd)hh)hh 名前には上枝 t があります。 d. f. F V。 e.うわぁ:)。 1. g. 。 s)。 。 。 。 t))):。 m))):。 d. 。 。 t コマンド) lp を注文します。 。 e.e.を比較してください。 Make ml" 名前設定項目...;.Into...)h:.



# #

:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成。。。)h:。




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成。。。)h:。




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成。。。)h:。




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成Git

1.1. Git库中由三部分组

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内

1) 工作目录:用户本地的目录

2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索引

3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次更新


1.2. 使用Git时的初始化事

1.2.1. Git初始化配

1) 配置使用git仓库的人员姓

git config --global user.name "Your Name Comes Here

2) 配置使用git仓库的人员emai

git config --global user.email you@yourdomain.example.co

1.2.2. Git文档忽略机

工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文件中

例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则执行

echo “zh” > .gitignor

git add 

有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitignor

1.3. Git と Repo の比較

Git 操作は通常 1 つのウェアハウスに対応しますが、Repo 操作は通常 1 つのプロジェクトに対応します。つまり、プロジェクトは複数のウェアハウスで構成されます

たとえば、Recket プロジェクトで作業する場合は Repo 全体を操作し、ウェアハウスの 1 つを操作する場合は Git を使用します。隠しディレクトリ .git


2 を含むディレクトリで git 操作を実行します。 Git he

Git ヘルプ 基本的な git コマンドを取得します

(特定のコマンドの使用方法を知りたい場合は、たとえば: Git help clone を使用して git clone の使用方法を取得します


3. 基本的な Git ローカル操作

3.1. Git ini

Or use git init-db

to create an empty Git library. Create a .git subdirectory in the current directory. その後、すべてのファイル変更情報が保存されます。各ディレクトリとサブディレクトリに CVS ディレクトリを作成する CVS とは異なり、このディレクトリに保存されます。

.git ディレクトリには設定ファイルがあり、その中の設定情報は変更できます

3.2. Git ad

現在の作業ディレクトリにある変更されたファイルまたは新しく追加されたファイルを Git インデックスに追加します。Git インデックスに追加するということは、バージョン履歴に記録されることを意味します。これもコミットです。前に実行する必要があるステップ

は再帰的に追加できます。つまり、パラメータとしてディレクトリが後に続く場合、ディレクトリ全体のすべてのサブディレクトリとファイルが再帰的に追加されます。たとえば、次のようになります。

git add dir1 (ディレクトリ dir1 を追加、ディレクトリ内のすべてのファイルが追加されます)

Git add f1 f2 (f1、f2 ファイルを追加

git add. (すべて追加)現在のディレクトリ内のファイルとサブディレクトリ

3.3. Git r

現在の作業ディレクトリとインデックスからファイルを削除します

再帰的に削除できます (つまり、これに従う場合)パラメータとしてディレクトリを指定すると、ディレクトリ全体のすべてのサブディレクトリとファイルが再帰的に削除されます。たとえば、

git rm –r * (ディレクトリを入力してこのステートメントを実行すると、ディレクトリ内のすべてのファイルとサブディレクトリが削除されます)。ディレクトリが削除されます

git rm f1 (ローカル ディレクトリ内のファイル レコードとインデックスを含むファイル f1 を削除します。

git rm --ached f1 (ファイル f1 を削除すると、ローカル ディレクトリ ファイルは削除されます)削除されず、インデックス内のファイルのみが削除されます レコード; キャッシュに git 追加されたファイルを削除し、コミット時にファイルが送信されないようにする 大量のファイルが追加される状況に適しています

3.4. Git commit

現在の作業ディレクトリに変更を送信します

git commit コマンドを直接呼び出して、コメントを入力するように求められます。コマンド ラインで次のようにコミット コメントを入力します: git commit -m " gittutor リポストリの初期コミット"。 CVS とは異なり、git 送信コメントは空であってはならず、空でない場合は送信が失敗することに注意してください。

git commit には -a パラメータもあり、git add で識別されない変更を強制的に送信できます。この方法を使用することはお勧めできません

##送信が行われるたびに、git はグローバル コードに対して一意のコミット識別コードを作成します。ユーザーは、git restart コマンドを使用して任意の送信にコードを復元できます

git commit –-amend –m “message” (コミット ID

3.5 で送信されたコンテンツを継続的に変更します。Git statu

リポジトリのステータスを表示します。どのファイルに変更が発生したか、どのファイルが git ライブラリに追加されていないかなど。各コミットの前にこのコマンドでライブラリのステータスを確認することをお勧めします

最も一般的な誤操作は、ファイルを変更し、ファイルが変更されたことを git ライブラリに通知する git add を呼び出さずにコミット操作を直接呼び出すことです。その結果、ファイルが実際には送信されません。この時点で、開発者がファイルが送信されたと考えてファイルの変更を続けたり、さらには削除したりすると、変更されたコンテンツはバージョン管理されません。コミットする前に毎回 git status を使用してチェックすると、このエラーが見つかる可能性があります。したがって、 git status コマンドを呼び出す場合は、「変更されましたが更新されていません:」というプロンプトが表示されるファイルには特に注意する必要があります。これらのファイルはすべて、最後のコミットと比較して変更されたファイルですが、git add

3.6 では識別されません。Git lo

各バージョンの変更を含む履歴ログを表示します。各バージョン変更は、コミット ID

Git ログに対応します。-

-1 は、コミットが 1 つだけ表示されることを意味します。5 つのコミットを表示したい場合は、-5 を使用します。指定しない場合、コミット以降の git log が表示されます。

Git log --stat –summary (各バージョンの詳細な変更点を表示)

プロジェクトのログ情報では、各ログの 1 行目が表示されます。 (つまり、文字列) はバージョン更新送信の名前です。この名前はプロジェクトのバージョン番号として理解できます。プロジェクトのバージョン番号は一意である必要があり、デフォルトで Git によって自動的に生成され、特定の部分をマークします。プロジェクト。更新。プロジェクトのバージョン番号を git-show コマンドのパラメーターとして使用すると、プロジェクト バージョンの更新の詳細を表示できます。例:

1) Git lo


2) Git sho


実際、上記のコマンドはバージョン番号を実際にはカスタマイズせず、タグ オブジェクトを作成するだけです。 . これは進行中です プロジェクトのバージョンを外部に公開するとより便利です

3.7. Git merge

サーバーからダウンロードしたコードをローカル コードとマージします。または、ブランチのマージを実行します。

例: 現在マスター ブランチ上にあり、ブランチ dev をマスターにマージする場合は、 git merge de

注: git merge nov/eclair_eocket ( merge サーバー git ライブラリの eclair_eocket ブランチをローカル ブランチにマージします。

git rebase nov/eclair_eocket (サーバー git ライブラリの eclair_eocket ブランチをローカルの一時ブランチにマップし、ローカル ブランチ上の変更をマージします。この一時ブランチに追加し、この一時ブランチを使用してローカル ブランチを初期化します。

3.8. Git dif

ローカル コードとインデックス内のコードを比較するか、インデックス内のコードを比較します。ローカル ウェアハウスとのコードを比較します。

1) Git dif

作業ディレクトリとインデックスのコードを比較します。

#2) Git diff - - キャッシュ

インデックスとローカル ウェアハウスのコードを比較します

3.9. Git checkou

3.9.1. ブランチに切り替えます

1) 新しいブランチを作成し、次のブランチに切り替えますブランチ

Git checkout –b 新しいブランチ

2) すでに確立されているローカル ブランチ local_branc

Git checkout local_branc

( cat を使用した後) に切り替えます。 git/HEAD 、display refs:refs/heads/ local_branch

3) サーバー上のブランチに切り替えます。 git ブランチ経由でアクセス – r リスト

4) コミット i

Git チェックアウト commit_i

(cat .git/HEAD、commit_id

## を使用した後) に切り替えます。 #5 が表示されます) 特定の ta

Git チェックアウト ta

に切り替えます (cat .git/HEAD を使用した後、tag

が表示されます)

注: 1) と 2) を除き、他の 3 つは一時的な (ブランチなし) 状態に切り替わるだけです (このヘッドは切り離されています)。この時点で、 git ブランチを使用して、それがオンであることを確認できます (ブランチなし). cat .git/HEAD は、対応するコミット ID を指していることを確認します。これ (ブランチなし) は一時的にのみ存在し、真に確立されたブランチではありません。このとき、2)を実行すると、これ(ブランチなし)は自動的に消えますが、1)を実行すると、新しいブランチが作成され、この新しいブランチにこれ(ブランチなし)がアタッチされます。 cat .git/ refs/heads/new_branch 先ほどコミット ID を指していることがわかります

3.9.2. 既存のブランチを使用して新しいブランチを初期化します

次のコマンドを実行します、すでに確立されているブランチに切り替えます。ローカル ブランチ、リモート ブランチ、コミット ID、またはタグと同時に、新しいブランチ new_branch を作成し、この新しいブランチにハングします。

1) に切り替えます。すでに確立されているローカル ブランチ local_branch を使用し、このブランチを使用して新しいブランチを初期化します new_branch

git checkout –b new_branch local_branc

2) リモート ブランチ Remote_branch に切り替え、このブランチを使用して初期化します新しいブランチ new_branch

Git checkout –b new_branch remote_branc

3) コミット ID に切り替えて、新しいブランチを作成します new_branc

Git checkout –b new_branch commit_i

4) スイッチ 特定のタグに移動し、新しいブランチを作成します new_branc

Git checkout –b new_branch ta

3.9.3. コードを復元します

例、「git checkout app/model/user.rb」は、user.rb ファイルを最後に送信されたバージョンから更新し、コミットされていない作業ディレクトリ内のすべての内容が上書きされます


#3.10. Git -ls-fil

現在の git ライブラリ内のファイルを表示します

3.11. Git m

ファイル、ディレクトリ、またはリンクの名前を変更します

例: Git mv helloworld.c helloworld1.c (ファイル helloworld.c の名前を helloworld1.c

3.12 に変更します。Git branc

3.12.1. Total

in git version ライブラリにブランチを作成するコストはほぼゼロなので、もう少しブランチを作成することをケチらないでください。 git init が初めて実行されるとき、システムは「master」という名前のブランチを作成します。 。他のブランチは手動で作成されます。

ここにいくつかの一般的なブランチ戦略があります。

メイン ブランチ マスターとの干渉を避け、他のブランチ マスターとのコミュニケーションを容易にするために、独自の個人作業ブランチを作成します。

リスクの高い作業を行う場合は、実験的なブランチを作成します。

他の人の作業をマージする場合は、マージ用の一時的なブランチを作成するのが最善です。そうすればマージが完了します。その後、「フェッチ」して、自分のブランチ

ブランチの追加、削除、確認などの操作を実行します

注: ブランチ情報は通常 .git/refs/ ディレクトリにあり、その中の heads ディレクトリはローカル ブランチです。リモートは対応するサーバー上のブランチ、タグはタグです

3.12.2. ブランチの表示

git ブランチは、ローカル git ライブラリ内のすべてのブランチをリストします。リストされたブランチのうち、ブランチ名の前に * がある場合、このブランチが現在のブランチであることを意味します

git ブランチ –r はサーバー git ライブラリのすべてのブランチをリストします

(引き続きコマンド「 git checkout -b local ブランチ名 サーバー ブランチ名」を使用して、サーバー上のブランチのコード ファイルを取得します)

#3.12.3. 現在どのブランチにいるかを確認します

cat .git/HEA

3.12.4. ブランチの作成

1) git ブランチ ブランチ

ブランチは作成されますが、現在の作業ブランチは作成されません。新しく作成されたブランチに切り替えられるため、

2) git checkout –b Branch

を切り替えるには、「git checkout ブランチ名」コマンドも必要です。

ブランチを作成しただけでなく、現在の作業ブランチをブランチに切り替えました

3.12.5. ブランチに切り替えます: git checkout ブランチ

メイン ブランチに切り替えます: git checkout maste

3.12.6. ブランチの削除

git ブランチ –D ブランチ

注: 削除後、ブランチ内で発生したすべての変更を復元することはできません。このブランチを強制的に削除します

3.12.7. 2 つのブランチ上のファイルを比較します

git diff master ブランチ名 (master ブランチと別のブランチの違いを比較します

3.12.8. ブランチ履歴の表示

git-show-branch (現在のブランチのコミット コメントと情報の表示

git-show-branch -all (コミット コメントと情報の表示)すべてのブランチの) 例:

* [dev] d

! [master] m

-

* [dev] d

* [dev^] d

* [dev~2] d

* [master] m

上記の例では、「--」の上の 2 行は、は 2 つのブランチ dev と master で、dev ブランチで最後に送信されたログは "d2"、master ブランチで最後に送信されたログは "m2" です。「--」の下の行はブランチ進化の履歴を表します。 dev は、dev ブランチの最後のコミットで発生したことを示し、dev^ は、dev ブランチで発生した最後から 2 番目のコミットを表します。dev~2 は、dev ブランチで発生した最後から 3 番目のコミットを表します。 3.12.9. 現在のブランチ操作メモの表示

git whatchange

3.12.10. マージポイント

メソッド 1

git merge “コメント”マージされたターゲット ブランチのソース

マージに競合がある場合、git はプロンプトを表示します

例: git checkout master (master ブランチに切り替えます)

git merge HEAD dev~2 (master ブランチと dev ~2 ブランチをマージ) または: git merge master dev~

メソッド 2

git pull マージされたターゲット ブランチ マージされたソース ブランチ

例: git checkout master (マスターに切り替えます Branch

git pull . dev~2 (現在のブランチと dev~2 をマージします ブランチ

3.13. Git rebas

は通常、サーバーの最新のコンテンツをローカルにマージするときに使用されます。例: バージョン C では、コンテンツがサーバーからローカルに取得され、ローカルのコンテンツが変更されます。このとき、ローカルで変更されたコンテンツを送信したいと考えていますコンテンツをサーバーにコピーしましたが、サーバー上のバージョンが G に変わっていることがわかりました。現時点では、それを最初に実行する必要があります。Git rebase は、サーバー上の最新バージョンをローカルのバージョンにマージします。たとえば、

については、次の 2 枚の図でわかりやすく説明します rebase コマンド実行後、実際に分岐点が C から G に移動するので、C から G への分岐機能もあります。

##3.14. Git rese

ライブラリの反転と回復は、一部の放棄された研究開発コードに使用されるだけではなく、リセットに加えて、もう 1 つの重要な機能があります。たとえば、コード ベースをリモートで複製し、ローカルで開発して、リモートに送信する準備をします。ただし、ローカル コード ベースが開発される場合、機能的なコミットやバックアップ目的のコミットなどが発生します。つまり、コミット ログには無駄なログが大量にあり、これらのログをリモートに送信するときにライブラリに送信したくないのです。したがって、git replace を使用する必要があります。

git replace の概念は比較的複雑です。コマンド形式: git replace [--mixed | --soft | --hard] [

コマンド オプション

--mixed これはデフォルトのオプションです。たとえば、 git replace [--mixed] dev^ (dev^ の定義については、2.6.5 を参照してください)。その機能はブランチ ステータスを dev1^ にリセットすることだけであり、作業ファイルの内容は変更されません。つまり、 dev1^ から dev1 へのすべてのファイル変更は保持されますが、 dev1^ と dev1 の間のコミット ログはすべてクリアされ、変更されたファイルの内容は git add によって識別されません。再コミットしたい場合は、次のことも必要です。変更されたファイルに対して git add を実行します。こうすることで、コミット後に非常にきれいなコミット レコードが得られます。 (インデックスとウェアハウス

--soft の内容をロールバックすることは、 git replace –mixed を実行してから、変更されたファイルに対して git add を実行することと同等です。このオプションを使用すると、直接コミットできます (ローリングウェアハウスの内容を戻す

--hard このコマンドにより、ファイルの内容を含むすべての情報がロールバックされます。通常、放棄されたコードをリセットする場合にのみ使用されます。実行後、ファイルの内容は復元できません(作業ディレクトリ、インデックス、およびウェアハウスの内容がロールバックされます)

例:

使用したブランチに切り替えます

git replace HEAD^ 最初のレコードをロールバックします

git replace HEAD~2 2 番目のレコードをロールバックします

作業ディレクトリ内のファイルをロールバックする場合は、git replace - -hard HEAD^ を使用します。最初のレコードをロールバックします

git restart - -hard HEAD~2 2 番目のレコードをロールバックします

次のメソッドを使用することもできます

現在の作業ディレクトリを完全に復元します指定されたバージョン番号までスクロールします。以下に示すように、A ~ G によって送信された 5 つのバージョンがあることがわかります。C のバージョン番号は bbaf6fb5060b4875b18ff9ff637ce118256d6f20 です。「git replace bbaf6fb5060b4875b18ff9ff637ce118256d6f20」を実行すると、送信された 3 つのバージョン A ~ C だけが残ります。


3.15. Git rever

バージョンへの特定の変更を復元します。例: git revert commit_id (commit_id は、コードをコミットするときに生成される一意の表現です。文字列

例: ( 3.6) git revert dfb02e6e4f2f7b573337763e5c0013802e392818 (この操作を実行して、最後のコミット操作を復元します

3.16。Git confi

このコマンドを使用して、「git config」などのさまざまな Git 設定を再追加および変更します。ブランチ.マスター.リモートオリジン」を使用して、マスターのリモートリポジトリをオリジンリポジトリというエイリアスとして設定します

3.17。Git sho

さまざまなタイプのオブジェクトを表示します

3.18。Git ta

タグ オブジェクト (GPG で署名) を作成、リスト、削除、または検証する

複雑なバージョン番号のハッシュ値を覚えておく必要がないように、特定のタグをバージョンに変換できます。たとえば、「git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20」を使用して、復元したバージョンをマークできます。その後、バージョンを表示したいときは、ハッシュ値の代わりに revert_version タグ名を使用できます


4. Git サーバー操作コマンド (サーバーに連絡します)

4.1. Git clon

サーバーのウェアハウスのコードをローカルに作成したディレクトリに取得します (サーバーとの対話)

git clone を通じてリモート git ライブラリを取得した後、.git/config 内の開発者情報は一緒に複製されません。開発者情報をローカル ライブラリの .git/config ファイルに追加する必要があります。

git clone を通じて取得したリモート git ライブラリには、リモート git ライブラリの現在の作業ブランチのみが含まれています。他のブランチ情報を取得したい場合は「git Branch -r」で表示し、他のリモートブランチコードを取得する場合は「git checkout -b ローカルブランチ名 リモートブランチ名」コマンドを使用してください。 、ここでリモートブランチ 「git Branch -r」にリストされるブランチ名は通常「オリジン/ブランチ名」のようなものです。ローカル ブランチ名がすでに存在する場合、「-b」パラメーターは必要ありません

例:


4.2. Git pul

サーバーのウェアハウスからコードを取得し、ローカル コードとマージします。 (サーバーと対話し、サーバーから最新のコードをダウンロードすることは、次と同等です。 Git fetch Git merge

コードを他のリポジトリ (リモートまたはローカル) からローカルに更新します。例: "git pullorigin master" は、オリジン リポジトリのコードをローカルのマスター ブランチに更新することです。

git pull は、任意の git ライブラリから特定のブランチの内容を取得できます。使用方法は次のとおりです。

git pull username@ipaddr: リモート リポジトリ名 リモート ブランチ名 ローカル ブランチ名 このコマンドは、リモート git ライブラリのリモート ブランチ名をローカル git ライブラリのローカル ブランチに取得します。このうち、ローカル ブランチの名前が書かれていない場合は、デフォルトでは、ローカルの現在のブランチにプルします。

git pull はブランチのマージにも使用できることに注意してください。git merge と同じ効果があります。したがって、ローカル ブランチにすでにコンテンツがある場合は、git pull これらのファイルはマージされ、競合がある場合はアラームが発行されます。

例:






#4.3. Git プッシュ

ローカル コミット コードをリモート リポジトリに更新します。例: "git 「push Origin」は、ローカルのコミット コードをリモート リポジトリに更新します。コードは orgin

という名前のリモート リポジトリに更新されます。git Push と git pull はまったく逆で、ローカル ブランチのコンテンツを送信します。使用法: git Pushusername@ipaddr :リモート リポジトリ名 ローカル ブランチ名 リモート ブランチ名 このコマンドは、ローカル git ライブラリのローカル ブランチをリモート git ライブラリのリモート ブランチ名にプッシュします。

なお、git Pushではファイルは自動的にマージされないようですので、git Push中に競合が発生した場合は、プッシュ後のファイルの内容で強制的に上書きされ、プロンプトも表示されなくなります。共同開発中は非常に危険です

たとえば


4.4. Git fetc

サーバーのリポジトリからコードをダウンロードします。サーバーに接続し、サーバーから最新のコードをダウンロードします

リモートからローカルに最新バージョンを取得するのと同じですが、自動的にマージされず、Git プルより安全です

##この方法を使用してくださいサーバー上の更新を取得するには

例: git checkout nov /eclair_rocket (nov/eclair_rocket はサーバー上のブランチ名) を使用する場合、git fetch コマンドの実行時にサーバーからダウンロードされたコードを取得します。最後に使用されました; git fetch が最初に使用され、次に git checkout nov/eclair_rocket が使用される場合、コードは最初にサーバーからダウンロードされます。サーバーから最新の更新情報を取得し、次にサーバーから最新のコードをダウンロードします。 。 。 ) h:。 。 。



:。 。 :。 ) l:。 。 )e 相互)。 。 g. w。 g))t本:レコードレコードレコードレコード;:))):]。た。 :e)) ブランチ: 2)。ブランチ: ブランチ d レコード。 2012-22:) 歴史) さようなら。ブランチ r の名前に名前を付けます。名前、名前枝 D オン。 。 。支店。 。 。 ;;:。 h)に記載。 v.エス。コデッハッ。 h. 。支店。 )gg)dd)hh)hh 名前には上枝 t があります。 d. f. F V。 e.うわぁ:)。 1. g. 。 s)。 。 。 。 t))):。 m))):。 d. 。 。 t コマンド) lp を注文します。 。 e.e.を比較してください。 ml"の名前設定項目を作成します...;。コンセプトになります.................. ..すべてのコードを更新 fetc、たとえば、タスクの名前はライブラリにあります 3. Git プッシュ、たとえば、アラーム ブランチは次のとおりです: ブランチ ge pul、たとえば、パラメータ ファイルはサーバー(値を交換する) ta type ho library fi 演算子 string ever version メソッドが記録されており、各レコードは例えばコンテンツコンテンツコンテンツオプションh>etrese関数などブランチブランチソース分割メソッドツーv~ブランチプロンプトソース分割メソッド一緒に分割された ge レコード commit m d dd

- m d例如信息支历区别的区分支分支除分te分支支上分支切换分支个分EA分支件)分支分支看分标签操作分支分支协作策略创建 总nc.c链接 m文件-fil覆盖原代tanc_incncchncch支上新分idagtataid_i i列出ncncchncnc分支分支到分ou代码he代码if比较if分支支上de合并rg比较有用 sholo例如变化显示 -idlo文件状态tu内容代码方式失败内容mi况.记录目录例如文件 r录 文件入 例如一步ad信息目录dbni操作基本方法本命t he操作组成的比ord or执行件中略机coaire员姓化配初始化事更新索引目录录内分组Git概念

1.1. Git库中由三部分组

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内

1) 工作目录:用户本地的目录

2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索引

3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次更新


1.2. 使用Git时的初始化事

1.2.1. Git初始化配

1) 配置使用git仓库的人员姓

git config --global user.name "Your Name Comes Here

2) 配置使用git仓库的人员emai

git config --global user.email you@yourdomain.example.co

1.2.2. Git文档忽略机

工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文件中

例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则执行

echo “zh” > .gitignor

git add 

有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitignor

1.3. Git と Repo の比較

Git 操作は通常 1 つのウェアハウスに対応しますが、Repo 操作は通常 1 つのプロジェクトに対応します。つまり、プロジェクトは複数のウェアハウスで構成されます

たとえば、Recket プロジェクトで作業する場合は Repo 全体を操作し、ウェアハウスの 1 つを操作する場合は Git を使用します。隠しディレクトリ .git


2 を含むディレクトリで git 操作を実行します。 Git he

Git ヘルプ 基本的な git コマンドを取得します

(特定のコマンドの使用方法を知りたい場合は、たとえば: Git help clone を使用して git clone の使用方法を取得します


3. 基本的な Git ローカル操作

3.1. Git ini

Or use git init-db

to create an empty Git library. Create a .git subdirectory in the current directory. その後、すべてのファイル変更情報が保存されます。各ディレクトリとサブディレクトリに CVS ディレクトリを作成する CVS とは異なり、このディレクトリに保存されます。

.git ディレクトリには設定ファイルがあり、その中の設定情報は変更できます

3.2. Git ad

現在の作業ディレクトリにある変更されたファイルまたは新しく追加されたファイルを Git インデックスに追加します。Git インデックスに追加するということは、バージョン履歴に記録されることを意味します。これもコミットです。前に実行する必要があるステップ

は再帰的に追加できます。つまり、パラメータとしてディレクトリが後に続く場合、ディレクトリ全体のすべてのサブディレクトリとファイルが再帰的に追加されます。たとえば、次のようになります。

git add dir1 (ディレクトリ dir1 を追加、ディレクトリ内のすべてのファイルが追加されます)

Git add f1 f2 (f1、f2 ファイルを追加

git add. (すべて追加)現在のディレクトリ内のファイルとサブディレクトリ

3.3. Git r

現在の作業ディレクトリとインデックスからファイルを削除します

再帰的に削除できます (つまり、これに従う場合)パラメータとしてディレクトリを指定すると、ディレクトリ全体のすべてのサブディレクトリとファイルが再帰的に削除されます。たとえば、

git rm –r * (ディレクトリを入力してこのステートメントを実行すると、ディレクトリ内のすべてのファイルとサブディレクトリが削除されます)。ディレクトリが削除されます

git rm f1 (ローカル ディレクトリ内のファイル レコードとインデックスを含むファイル f1 を削除します。

git rm --ached f1 (ファイル f1 を削除すると、ローカル ディレクトリ ファイルは削除されます)削除されず、インデックス内のファイルのみが削除されます レコード; キャッシュに git 追加されたファイルを削除し、コミット時にファイルが送信されないようにする 大量のファイルが追加される状況に適しています

3.4. Git commit

現在の作業ディレクトリに変更を送信します

git commit コマンドを直接呼び出して、コメントを入力するように求められます。コマンド ラインで次のようにコミット コメントを入力します: git commit -m " gittutor リポストリの初期コミット"。 CVS とは異なり、git 送信コメントは空であってはならず、空でない場合は送信が失敗することに注意してください。

git commit には -a パラメータもあり、git add で識別されない変更を強制的に送信できます。この方法を使用することはお勧めできません

##送信が行われるたびに、git はグローバル コードに対して一意のコミット識別コードを作成します。ユーザーは、git restart コマンドを使用して任意の送信にコードを復元できます

git commit –-amend –m “message” (コミット ID

3.5 で送信されたコンテンツを継続的に変更します。Git statu

リポジトリのステータスを表示します。どのファイルに変更が発生したか、どのファイルが git ライブラリに追加されていないかなど。各コミットの前にこのコマンドでライブラリのステータスを確認することをお勧めします

最も一般的な誤操作は、ファイルを変更し、ファイルが変更されたことを git ライブラリに通知する git add を呼び出さずにコミット操作を直接呼び出すことです。その結果、ファイルが実際には送信されません。この時点で、開発者がファイルが送信されたと考えてファイルの変更を続けたり、さらには削除したりすると、変更されたコンテンツはバージョン管理されません。コミットする前に毎回 git status を使用してチェックすると、このエラーが見つかる可能性があります。したがって、 git status コマンドを呼び出す場合は、「変更されましたが更新されていません:」というプロンプトが表示されるファイルには特に注意する必要があります。これらのファイルはすべて、最後のコミットと比較して変更されたファイルですが、git add

3.6 では識別されません。Git lo

各バージョンの変更を含む履歴ログを表示します。各バージョン変更は、コミット ID

Git ログに対応します。-

-1 は、コミットが 1 つだけ表示されることを意味します。5 つのコミットを表示したい場合は、-5 を使用します。指定しない場合、コミット以降の git log が表示されます。

Git log --stat –summary (各バージョンの詳細な変更点を表示)

プロジェクトのログ情報では、各ログの 1 行目が表示されます。 (つまり、文字列) はバージョン更新送信の名前です。この名前はプロジェクトのバージョン番号として理解できます。プロジェクトのバージョン番号は一意である必要があり、デフォルトで Git によって自動的に生成され、特定の部分をマークします。プロジェクト。更新。プロジェクトのバージョン番号を git-show コマンドのパラメーターとして使用すると、プロジェクト バージョンの更新の詳細を表示できます。例:

1) Git lo


2) Git sho


実際、上記のコマンドはバージョン番号を実際にはカスタマイズせず、タグ オブジェクトを作成するだけです。 . これは進行中です プロジェクトのバージョンを外部に公開するとより便利です

3.7. Git merge

サーバーからダウンロードしたコードをローカル コードとマージします。または、ブランチのマージを実行します。

例: 現在マスター ブランチ上にあり、ブランチ dev をマスターにマージする場合は、 git merge de

注: git merge nov/eclair_eocket ( merge サーバー git ライブラリの eclair_eocket ブランチをローカル ブランチにマージします。

git rebase nov/eclair_eocket (サーバー git ライブラリの eclair_eocket ブランチをローカルの一時ブランチにマップし、ローカル ブランチ上の変更をマージします。この一時ブランチに追加し、この一時ブランチを使用してローカル ブランチを初期化します。

3.8. Git dif

ローカル コードとインデックス内のコードを比較するか、インデックス内のコードを比較します。ローカル ウェアハウスとのコードを比較します。

1) Git dif

作業ディレクトリとインデックスのコードを比較します。

#2) Git diff - - キャッシュ

インデックスとローカル ウェアハウスのコードを比較します

3.9. Git checkou

3.9.1. ブランチに切り替えます

1) 新しいブランチを作成し、次のブランチに切り替えますブランチ

Git checkout –b 新しいブランチ

2) すでに確立されているローカル ブランチ local_branc

Git checkout local_branc

( cat を使用した後) に切り替えます。 git/HEAD 、display refs:refs/heads/ local_branch

3) サーバー上のブランチに切り替えます。 git ブランチ経由でアクセス – r リスト

4) コミット i

Git チェックアウト commit_i

(cat .git/HEAD、commit_id

## を使用した後) に切り替えます。 #5 が表示されます) 特定の ta

Git チェックアウト ta

に切り替えます (cat .git/HEAD を使用した後、tag

が表示されます)

注: 1) と 2) を除き、他の 3 つは一時的な (ブランチなし) 状態に切り替わるだけです (このヘッドは切り離されています)。この時点で、 git ブランチを使用して、それがオンであることを確認できます (ブランチなし). cat .git/HEAD は、対応するコミット ID を指していることを確認します。これ (ブランチなし) は一時的にのみ存在し、真に確立されたブランチではありません。このとき、2)を実行すると、これ(ブランチなし)は自動的に消えますが、1)を実行すると、新しいブランチが作成され、この新しいブランチにこれ(ブランチなし)がアタッチされます。 cat .git/ refs/heads/new_branch 先ほどコミット ID を指していることがわかります

3.9.2. 既存のブランチを使用して新しいブランチを初期化します

次のコマンドを実行します、すでに確立されているブランチに切り替えます。ローカル ブランチ、リモート ブランチ、コミット ID、またはタグと同時に、新しいブランチ new_branch を作成し、この新しいブランチにハングします。

1) に切り替えます。すでに確立されているローカル ブランチ local_branch を使用し、このブランチを使用して新しいブランチを初期化します new_branch

git checkout –b new_branch local_branc

2) リモート ブランチ Remote_branch に切り替え、このブランチを使用して初期化します新しいブランチ new_branch

Git checkout –b new_branch remote_branc

3) コミット ID に切り替えて、新しいブランチを作成します new_branc

Git checkout –b new_branch commit_i

4) スイッチ 特定のタグに移動し、新しいブランチを作成します new_branc

Git checkout –b new_branch ta

3.9.3. コードを復元します

例、「git checkout app/model/user.rb」は、user.rb ファイルを最後に送信されたバージョンから更新し、コミットされていない作業ディレクトリ内のすべての内容が上書きされます


#3.10. Git -ls-fil

現在の git ライブラリ内のファイルを表示します

3.11. Git m

ファイル、ディレクトリ、またはリンクの名前を変更します

例: Git mv helloworld.c helloworld1.c (ファイル helloworld.c の名前を helloworld1.c

3.12 に変更します。Git branc

3.12.1. Total

in git version ライブラリにブランチを作成するコストはほぼゼロなので、もう少しブランチを作成することをケチらないでください。 git init が初めて実行されるとき、システムは「master」という名前のブランチを作成します。 。他のブランチは手動で作成されます。

ここにいくつかの一般的なブランチ戦略があります。

メイン ブランチ マスターとの干渉を避け、他のブランチ マスターとのコミュニケーションを容易にするために、独自の個人作業ブランチを作成します。

リスクの高い作業を行う場合は、実験的なブランチを作成します。

他の人の作業をマージする場合は、マージ用の一時的なブランチを作成するのが最善です。そうすればマージが完了します。その後、「フェッチ」して、自分のブランチ

ブランチの追加、削除、確認などの操作を実行します

注: ブランチ情報は通常 .git/refs/ ディレクトリにあり、その中の heads ディレクトリはローカル ブランチです。リモートは対応するサーバー上のブランチ、タグはタグです

3.12.2. ブランチの表示

git ブランチは、ローカル git ライブラリ内のすべてのブランチをリストします。リストされたブランチのうち、ブランチ名の前に * がある場合、このブランチが現在のブランチであることを意味します

git ブランチ –r はサーバー git ライブラリのすべてのブランチをリストします

(引き続きコマンド「 git checkout -b local ブランチ名 サーバー ブランチ名」を使用して、サーバー上のブランチのコード ファイルを取得します)

#3.12.3. 現在どのブランチにいるかを確認します

cat .git/HEA

3.12.4. ブランチの作成

1) git ブランチ ブランチ

ブランチは作成されますが、現在の作業ブランチは作成されません。新しく作成されたブランチに切り替えられるため、

2) git checkout –b Branch

を切り替えるには、「git checkout ブランチ名」コマンドも必要です。

ブランチを作成しただけでなく、現在の作業ブランチをブランチに切り替えました

3.12.5. ブランチに切り替えます: git checkout ブランチ

メイン ブランチに切り替えます: git checkout maste

3.12.6. ブランチの削除

git ブランチ –D ブランチ

注: 削除後、ブランチ内で発生したすべての変更を復元することはできません。このブランチを強制的に削除します

3.12.7. 2 つのブランチ上のファイルを比較します

git diff master ブランチ名 (master ブランチと別のブランチの違いを比較します

3.12.8. ブランチ履歴の表示

git-show-branch (現在のブランチのコミット コメントと情報の表示

git-show-branch -all (コミット コメントと情報の表示)すべてのブランチの) 例:

* [dev] d

! [master] m

-

* [dev] d

* [dev^] d

* [dev~2] d

* [master] m

上記の例では、「--」の上の 2 行は、は 2 つのブランチ dev と master で、dev ブランチで最後に送信されたログは "d2"、master ブランチで最後に送信されたログは "m2" です。「--」の下の行はブランチ進化の履歴を表します。 dev は、dev ブランチの最後のコミットで発生したことを示し、dev^ は、dev ブランチで発生した最後から 2 番目のコミットを表します。dev~2 は、dev ブランチで発生した最後から 3 番目のコミットを表します。 3.12.9. 現在のブランチ操作メモの表示

git whatchange

3.12.10. マージポイント

メソッド 1

git merge “コメント”マージされたターゲット ブランチのソース

マージに競合がある場合、git はプロンプトを表示します

例: git checkout master (master ブランチに切り替えます)

git merge HEAD dev~2 (master ブランチと dev ~2 ブランチをマージ) または: git merge master dev~

メソッド 2

git pull マージされたターゲット ブランチ マージされたソース ブランチ

例: git checkout master (マスターに切り替えます Branch

git pull . dev~2 (現在のブランチと dev~2 をマージします ブランチ

3.13. Git rebas

は通常、サーバーの最新のコンテンツをローカルにマージするときに使用されます。例: バージョン C では、コンテンツがサーバーからローカルに取得され、ローカルのコンテンツが変更されます。このとき、ローカルで変更されたコンテンツを送信したいと考えていますコンテンツをサーバーにコピーしましたが、サーバー上のバージョンが G に変わっていることがわかりました。現時点では、それを最初に実行する必要があります。Git rebase は、サーバー上の最新バージョンをローカルのバージョンにマージします。たとえば、

については、次の 2 枚の図でわかりやすく説明します rebase コマンド実行後、実際に分岐点が C から G に移動するので、C から G への分岐機能もあります。

##3.14. Git rese

ライブラリの反転と回復は、一部の放棄された研究開発コードに使用されるだけではなく、リセットに加えて、もう 1 つの重要な機能があります。たとえば、コード ベースをリモートで複製し、ローカルで開発して、リモートに送信する準備をします。ただし、ローカル コード ベースが開発される場合、機能的なコミットやバックアップ目的のコミットなどが発生します。つまり、コミット ログには無駄なログが大量にあり、これらのログをリモートに送信するときにライブラリに送信したくないのです。したがって、git replace を使用する必要があります。

git replace の概念は比較的複雑です。コマンド形式: git replace [--mixed | --soft | --hard] [

コマンド オプション

--mixed これはデフォルトのオプションです。たとえば、 git replace [--mixed] dev^ (dev^ の定義については、2.6.5 を参照してください)。その機能はブランチ ステータスを dev1^ にリセットすることだけであり、作業ファイルの内容は変更されません。つまり、 dev1^ から dev1 へのすべてのファイル変更は保持されますが、 dev1^ と dev1 の間のコミット ログはすべてクリアされ、変更されたファイルの内容は git add によって識別されません。再コミットしたい場合は、次のことも必要です。変更されたファイルに対して git add を実行します。こうすることで、コミット後に非常にきれいなコミット レコードが得られます。 (インデックスとウェアハウス

--soft の内容をロールバックすることは、 git replace –mixed を実行してから、変更されたファイルに対して git add を実行することと同等です。このオプションを使用すると、直接コミットできます (ローリングウェアハウスの内容を戻す

--hard このコマンドにより、ファイルの内容を含むすべての情報がロールバックされます。通常、放棄されたコードをリセットする場合にのみ使用されます。実行後、ファイルの内容は復元できません(作業ディレクトリ、インデックス、およびウェアハウスの内容がロールバックされます)

例:

使用したブランチに切り替えます

git replace HEAD^ 最初のレコードをロールバックします

git replace HEAD~2 2 番目のレコードをロールバックします

作業ディレクトリ内のファイルをロールバックする場合は、git replace - -hard HEAD^ を使用します。最初のレコードをロールバックします

git restart - -hard HEAD~2 2 番目のレコードをロールバックします

次のメソッドを使用することもできます

現在の作業ディレクトリを完全に復元します指定されたバージョン番号までスクロールします。以下に示すように、A ~ G によって送信された 5 つのバージョンがあることがわかります。C のバージョン番号は bbaf6fb5060b4875b18ff9ff637ce118256d6f20 です。「git replace bbaf6fb5060b4875b18ff9ff637ce118256d6f20」を実行すると、送信された 3 つのバージョン A ~ C だけが残ります。


3.15. Git rever

バージョンへの特定の変更を復元します。例: git revert commit_id (commit_id は、コードをコミットするときに生成される一意の表現です。文字列

例: ( 3.6) git revert dfb02e6e4f2f7b573337763e5c0013802e392818 (この操作を実行して、最後のコミット操作を復元します

3.16。Git confi

このコマンドを使用して、「git config」などのさまざまな Git 設定を再追加および変更します。ブランチ.マスター.リモートオリジン」を使用して、マスターのリモートリポジトリをオリジンリポジトリというエイリアスとして設定します

3.17。Git sho

さまざまなタイプのオブジェクトを表示します

3.18。Git ta

タグ オブジェクト (GPG で署名) を作成、リスト、削除、または検証する

複雑なバージョン番号のハッシュ値を覚えておく必要がないように、特定のタグをバージョンに変換できます。たとえば、「git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20」を使用して、復元したバージョンをマークできます。その後、バージョンを表示したいときは、ハッシュ値の代わりに revert_version タグ名を使用できます


4. Git サーバー操作コマンド (サーバーに連絡します)

4.1. Git clon

サーバーのウェアハウスのコードをローカルに作成したディレクトリに取得します (サーバーとの対話)

git clone を通じてリモート git ライブラリを取得した後、.git/config 内の開発者情報は一緒に複製されません。開発者情報をローカル ライブラリの .git/config ファイルに追加する必要があります。

git clone を通じて取得したリモート git ライブラリには、リモート git ライブラリの現在の作業ブランチのみが含まれています。他のブランチ情報を取得したい場合は「git Branch -r」で表示し、他のリモートブランチコードを取得する場合は「git checkout -b ローカルブランチ名 リモートブランチ名」コマンドを使用してください。 、ここでリモートブランチ 「git Branch -r」にリストされるブランチ名は通常「オリジン/ブランチ名」のようなものです。ローカル ブランチ名がすでに存在する場合、「-b」パラメーターは必要ありません

例:


4.2. Git pul

从服务器的仓库中获取代码,和本地代码合并。(与服务器交互,从服务器上下载最新代码,等同于: Git fetch + Git merge

从其它的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:“git pull origin master ”就是将origin这个版本库的代码更新到本地的master主分支

git pull可以从任意一个git库获取某个分支的内容。用法如下

git pull  username@ipaddr:远端repository名远端分支名 本地分支名。这条命令将从远端git库的远端分支名获取到本地git库的一个本地分支中。其中,如果不写本地分支名,则默认pull到本地当前分支

需要注意的是,git pull也可以用来合并分支。 和git merge的作用相同。 因此,如果你的本地分支已经有内容,则git pull会合并这些文件,如果有冲突会报警

例如






4.3. Git push

将本地commit的代码更新到远程版本库中,例如 “git push origin”就会将本地的代码更新到名为orgin的远程版本库中

git push和git pull正好想反,是将本地某个分支的内容提交到远端某个分支上。用法: git pushusername@ipaddr:远端repository名本地分支名 远端分支名。这条命令将本地git库的一个本地分支push到远端git库的远端分支名中

需要格外注意的是,git push好像不会自动合并文件。因此,如果git push时,发生了冲突,就会被后push的文件内容强行覆盖,而且没有什么提示。 这在合作开发时是很危险的事情

例如


4.4. Git fetc

从服务器的仓库中下载代码。(与服务器交互,从服务器上下载最新代码

相当于从远程获取最新版本到本地,不会自动merge,比Git pull更安全些

使用此方法来获取服务器上的更新

例: git checkout nov/eclair_rocket (nov/eclair_rocket はサーバー上のブランチ名) を使用すると、最後に git fetch コマンドを使用したときにサーバーからダウンロードされたコードが取得されます。git fetch を使用した場合は、まず git Checkout nov/eclair_rocket を使用します。まずサーバーから最新の更新情報を取得し、次にサーバーから最新のコードをダウンロードします。 。 。 ) h:。 。 。



:。 。 :。 ) l:。 。 )e 相互)。 。 g. w。 g))t本:レコードレコードレコードレコード;:))):]。た。 :e)) ブランチ: 2)。ブランチ: ブランチ d レコード。 2012-22:) 歴史) さようなら。ブランチ r の名前に名前を付けます。名前、名前枝 D オン。 。 。支店。 。 。 ;;:。 h)に記載。 v.エス。コデッハッ。 h. 。支店。 )gg)dd)hh)hh 名前には上枝 t があります。 d. f. F V。 e.うわぁ:)。 1. g. 。 s)。 。 。 。 t))):。 m))):。 d. 。 。 t コマンド) lp を注文します。 。 e.e.を比較してください。 ml" の名前設定項目...;. を...) h:...



:...:.) l:. にします。 ..) e 相互)..g.w.g))tthis:record recordrecord;:))):].t.:e))branch:2).branch:branch drecord.2012-22: ) 歴史) 分化. 名前 ブランチ r name. 名前、名前ブランチ D on... ブランチ...;;:. 説明 h). v. es. コード ghdhh. h.. ブランチ.) gg) dd) hh) hh 名前 上のブランチt.d.f.f))v.e.wg:).1.g..s)...t))):.m))):.d.. .t コマンド) コマンド lp..e.e:.make との比較ml」の名前設定項目。 。 ;。なる。 。 。 ) h:。 。 。



:。 。 :。 ) l:。 。 )e 相互)。 。 g. w。 g))t本:レコードレコードレコードレコード;:))):]。た。 :e)) ブランチ: 2)。ブランチ: ブランチ d レコード。 2012-22:) 歴史) さようなら。ブランチ r の名前に名前を付けます。名前、名前枝 D オン。 。 。支店。 。 。 ;;:。 h)に記載。 v.エス。コデッハッ。 h. 。支店。 )gg)dd)hh)hh 名前には上枝 t があります。 d. f. F V。 e.うわぁ:)。 1. g. 。 s)。 。 。 。 t))):。 m))):。 d. 。 。 t コマンド) lp を注文します。 。 e.e.を比較してください。 ml" の名前設定項目...;. を...) h:...



:...:.) l:. にします。 ..) e 相互)..g.w.g))tthis:record recordrecord;:))):].t.:e))branch:2).branch:branch drecord.2012-22: ) 歴史) 分化. 名前 ブランチ r name. 名前、名前ブランチ D on... ブランチ...;;:. 説明 h). v. es. コード ghdhh. h.. ブランチ.) gg) dd) hh) hh 名前 上のブランチt.d.f.f))v.e.wg:).1.g..s)...t))):.m))):.d.. .t コマンド) コマンド lp..e.e:.make との比較ml」の名前設定項目。 。 ;。なる。 。 。 ) h:。 。 。



:。 。 :。 ) l:。 。 )e 相互)。 。 g. w。 g))t本:レコードレコードレコードレコード;:))):]。た。 :e)) ブランチ: 2)。ブランチ: ブランチ d レコード。 2012-22:) 歴史) さようなら。ブランチ r の名前に名前を付けます。名前、名前枝 D オン。 。 。支店。 。 。 ;;:。 h)に記載。 v.エス。コデッハッ。 h. 。支店。 )gg)dd)hh)hh 名前には上枝 t があります。 d. f. F V。 e.うわぁ:)。 1. g. 。 s)。 。 。 。 t))):。 m))):。 d. 。 。 t コマンド) lp を注文します。 。 e.e.を比較してください。 ml" の名前設定項目...;. を...) h:...



:...:.) l:. にします。 ..) e 相互)..g.w.g))tthis:record recordrecord;:))):].t.:e))branch:2).branch:branch drecord.2012-22: ) 歴史) 分化. 名前 ブランチ r name. 名前、名前ブランチ D on... ブランチ...;;:. 説明 h). v. es. コード ghdhh. h.. ブランチ.) gg) dd) hh) hh 名前 上のブランチt.d.f.f))v.e.wg:).1.g..s)...t))):.m))):.d.. .t コマンド) コマンド lp..e.e:.make との比較ml」の名前設定項目。 。 ;。なる。 。 。 ) h:。 。 。



:。 。 :。 ) l:。 。 )e 相互)。 。 g. w。 g))t本:レコードレコードレコードレコード;:))):]。た。 :e)) ブランチ: 2)。ブランチ: ブランチ d レコード。 2012-22:) 歴史) さようなら。ブランチ r の名前に名前を付けます。名前、名前枝 D オン。 。 。支店。 。 。 ;;:。 h)に記載。 v.エス。コデッハッ。 h. 。支店。 )gg)dd)hh)hh 名前には上枝 t があります。 d. f. F V。 e.うわぁ:)。 1. g. 。 s)。 。 。 。 t))):。 m))):。 d. 。 。 t コマンド) lp を注文します。 。 e.e.を比較してください。 ml" の名前設定項目を作成...;.になります...) h:...



:。 。 :。 ) l:。 。 )e 相互)。 。 g. w。 g))t本:レコードレコードレコードレコード;:))):]。た。 :e)) ブランチ: 2)。ブランチ: ブランチ d レコード。 2012-22:) 歴史) さようなら。ブランチ r の名前に名前を付けます。名前、名前枝 D オン。 。 。支店。 。 。 ;;:。 h)に記載。 v.エス。コデッハッ。 h. 。支店。 )gg)dd)hh)hh 名前には上枝 t があります。 d. f. F V。 e.うわぁ:)。 1. g. 。 s)。 。 。 。 t))):。 m))):。 d. 。 。 t コマンド) lp を注文します。 。 e.e.を比較してください。 ml" の名前設定項目を作成...;.になります...) h:...



:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成Git概念
1.1. Git库中由三部分组成
Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内。
1) 工作目录:用户本地的目录;
2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索引。
3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次更新。
git の使い方の詳細な紹介
1.2. 使用Git时的初始化事项
1.2.1. Git初始化配置
1) 配置使用git仓库的人员姓名
git config --global user.name "Your Name Comes Here"
2) 配置使用git仓库的人员email
git config --global user.email you@yourdomain.example.com
1.2.2. Git文档忽略机制
工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文件中。
例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则执行:
echo “zh” > .gitignore
git add .
有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitignore
1.3. Git与Repo的比较
Git操作一般对应一个仓库,而Repo操作一般对应一个项目,即一个项目会由若干仓库组成。
例如,在操作整个Recket项目时使用Repo,而操作其中的某个仓库时使用Git。在包含隐藏目录.git的目录下执行git操作。

2. Git ヘルプ
Git ヘルプは基本的な git コマンドを取得します
(特定のコマンドの使用方法を知りたい場合は、たとえば、Git help clone を使用して git clone の使用方法を取得します)

3. 基本的な Git ローカル操作コマンド
3.1. Git init
または git init-db を使用します。
空の Git リポジトリを作成します。現在のディレクトリに .git サブディレクトリを作成します。将来的には、各ディレクトリとサブディレクトリに CVS ディレクトリを作成する CVS とは異なり、すべてのファイル変更情報がこのディレクトリに保存されるようになります。
.git ディレクトリには設定ファイルがあり、その中の設定情報は変更できます。
3.2. Git add
現在の作業ディレクトリにある変更または新しく追加されたファイルを Git インデックスに追加します。Git インデックスに追加するということは、ファイルがバージョン履歴に記録されることを意味します。これは、必要なことでもあります。送信前に実行されるステップ。
再帰的に追加できます。つまり、パラメータとしてディレクトリが後に続く場合、ディレクトリ全体のすべてのサブディレクトリとファイルが再帰的に追加されます。例:
git add dir1 (ディレクトリ dir1 を追加、ディレクトリ内のすべてのファイルが追加されます)
Git add f1 f2 (f1、f2 ファイルを追加します)
git add . (現在のディレクトリにすべてのファイルを追加します)ディレクトリ ファイルとサブディレクトリ)
3.3. Git rm
現在の作業ディレクトリとインデックスからファイルを削除します。
再帰的に削除できます。つまり、パラメーターとしてディレクトリが後に続く場合、ディレクトリ全体のすべてのサブディレクトリとファイルが再帰的に削除されます。例:
git rm –r * (ディレクトリを入力し、このステートメントを実行して、ディレクトリ内のすべてのファイルとサブディレクトリを削除します)
git rm f1 (ローカル ディレクトリとインデックスこのファイル レコードを含むファイル f1 を削除します)
git rm --ached f1 (ファイル f1 を削除します。ローカル ディレクトリ ファイルは削除されません。インデックス内のファイル レコードのみが削除されます。git 追加されたファイルはキャッシュに削除されます。コミット時に削除されません。このファイルの送信は、一度に多数のファイルを追加したが、そのうちのいくつかを除外したい場合に適しています。)
3.4. Git コミット
変更を送信します。現在の作業ディレクトリ。
git commit コマンドを直接呼び出すと、コメントを入力するように求められます。コマンドラインに次のようにコミット コメントを入力します: git commit -m "gittutor リポストリの初期コミット"。 CVS とは異なり、git commit コメントは空であってはなりません。空でない場合、コミットは失敗します。
Git commit には -a パラメーターもあり、git add で識別されない変更を強制的に送信できますが、この方法はお勧めできません。
コミットが行われるたびに、git はグローバル コードに対して一意のコミット識別コードを作成します。ユーザーは git restart コマンドを使用してコードを任意のコミットに復元できます。
git commit –-amend –m "message" (コミット ID で送信されたコンテンツを継続的に変更します)
3.5. Git ステータス
リポジトリのステータスを確認します。どのファイルが変更されたのか、どのファイルが git ライブラリに追加されていないのかなどを知ることができます。各コミットの前に、このコマンドを使用してライブラリのステータスを確認することをお勧めします。
最も一般的な誤操作は、ファイルを変更し、ファイルが変更されたことを git ライブラリに通知する git add を呼び出さずにコミット操作を直接呼び出すことです。その結果、ファイルが実際には送信されません。この時点で、開発者がファイルが送信されたと考えてファイルの変更を続けたり、さらには削除したりすると、変更されたコンテンツはバージョン管理されません。コミットする前に毎回 git status を使用してチェックすると、このエラーが見つかる可能性があります。したがって、 git status コマンドを呼び出す場合は、「変更されましたが更新されていません:」というプロンプトが表示されるファイルには特に注意する必要があります。これらのファイルはすべて、最後のコミットと比較して変更されたファイルですが、git add では識別されません。
3.6. Git ログ
各バージョンの変更を含む履歴ログを表示します。各バージョン変更はコミット ID に対応します。
Git log -1
-1 はコミットを 1 つだけ表示することを意味します。コミットを 5 つ表示したい場合は -5 を使用します。指定しない場合は、コミット以降の git ログが表示されます。
Git log --stat –summary (各バージョンの詳細な変更点を表示)
プロジェクトのログ情報では、各ログの最初の行 (つまり文字列) がバージョン更新の送信名になります。この名前はプロジェクトのバージョン番号として理解できます。プロジェクトのバージョン番号は一意である必要があり、プロジェクトの特定の更新を示すためにデフォルトで Git によって自動的に生成されます。プロジェクトのバージョン番号を git-show コマンドのパラメーターとして使用すると、プロジェクト バージョンの更新の詳細を表示できます。例:
1) Git log
git の使い方の詳細な紹介
2) Git show
git の使い方の詳細な紹介
実際、上記のコマンドは実際にはバージョン番号をカスタマイズするのではなく、これは単なるタグ オブジェクトであり、プロジェクトのバージョンを外部にリリースする場合に便利です。
3.7. Git マージ
サーバーからダウンロードしたコードをローカル コードとマージします。またはブランチをマージします。
例: 現在マスター ブランチ上にあり、ブランチ dev をマスターにマージする場合は、 git merge dev
注: git merge nov/eclair_eocket (サーバー git ライブラリの eclair_eocket ブランチをマージします)ローカル ブランチに追加 (上)
git rebase nov/eclair_eocket (サーバー git ライブラリの eclair_eocket ブランチをローカルの一時ブランチにマップし、ローカル ブランチの変更をこの一時ブランチにマージし、この一時ブランチを使用しますローカル ブランチを初期化します)
3.8. Git diff
ローカル コードとインデックス内のコードを比較するか、インデックス内のコードとローカル ウェアハウス内のコードを比較します。
1) Git diff
作業ディレクトリ内のコードとインデックスを比較します。
2) Git diff -- キャッシュ
インデックスとローカル ウェアハウスのコードを比較します。
3.9. Git checkout
3.9.1. ブランチへの切り替え
1) 新しいブランチを作成し、このブランチに切り替えます
Git checkout –b 新しいブランチ名
2) 確立されたブランチに切り替えますローカル ブランチ local_branch
Git checkout local_branch
(cat .git/HEAD を使用すると、refs:refs/heads/ local_branch が表示されます)
3) サーバー上のブランチ Remote_branch に切り替えます
Git checkout remote_branch
(リモート ブランチremote_branch は git Branch –r で一覧表示できます)
4) 特定のコミット ID に切り替えます
Git checkout commit_id
(cat .git/HEAD を使用した後、commit_id を表示します)
5) 特定のタグに切り替えます
Git チェックアウト タグ
(cat .git/HEAD を使用すると、タグが表示されます)
注: 1) と 2) を除く、他の 3 つは単に一時的な (ブランチなし) 状態に切り替えます (このヘッドは切り離されています)。この時点で、git ブランチを使用してそれがオンである (ブランチなし) ことを確認でき、cat .git/HEAD はそれが対応するブランチを指していることがわかります。コミットID。これ (ブランチなし) は一時的にのみ存在し、真に確立されたブランチではありません。このとき、2)を実行すると、これ(ブランチなし)は自動的に消えますが、1)を実行すると、新しいブランチが作成され、この新しいブランチにこれ(ブランチなし)がアタッチされます。 cat .git/ refs/heads/new_branch 先ほどすでにコミット ID を指していることがわかります。
3.9.2. 既存のブランチを使用して新しいブランチを初期化する
以下のコマンドを実行して、確立済みのローカル ブランチ、リモート ブランチ、またはコミット ID またはタグに切り替えながら新しいブランチを作成します。そしてこの新しい枝にぶら下がってください。
1) すでに確立されているローカル ブランチ local_branch に切り替え、このブランチを使用して新しいブランチ new_branch を初期化します。
git checkout –b new_branch local_branch
2) リモート ブランチ Remote_branch に切り替え、このブランチを使用して新しいブランチ new_branch を初期化します。
Git checkout –b new_branch remote_branch
3) 特定のコミット ID に切り替えて、新しいブランチを作成します new_branch
Git checkout –b new_branch commit_id
4) 特定のタグに切り替えて、新しいブランチを作成しますnew_branch
Git checkout –b new_branch タグ
3.9.3. コードを復元する
たとえば、「git checkout app/model/user.rb」は、最後に送信されたバージョンから user.rb ファイルを更新します。戻ってくると、コミットされていない作業ディレクトリ内のすべての内容が上書きされます。

3.10. Git-ls-files
現在の git ライブラリにどのようなファイルがあるかを確認します。
3.11. Git mv
ファイル、ディレクトリ、またはリンクの名前を変更します。
例: Git mv helloworld.c helloworld1.c (ファイル helloworld.c の名前を helloworld1.c に変更します)
3.12. Git ブランチ
3.12.1. 概要
git リポジトリ内 コストブランチを作成する手間はほぼゼロなので、もう少しブランチを作成することをケチらないでください。 git init が初めて実行されると、システムは「master」という名前のブランチを作成します。他のブランチは手動で作成されます。
一般的なブランチ戦略は次のとおりです:
メイン ブランチ マスターとの干渉を避け、他のユーザーとのコミュニケーションとコラボレーションを促進するために、独自の個人作業ブランチを作成します。
高リスクのプロジェクトを実行する場合。実験的なブランチを作成する;
他の人の作業をマージする場合は、マージ用の一時的なブランチを作成し、マージが完了したら自分のブランチに「フェッチ」するのが最善です。
ブランチの追加、削除、確認などの操作を実行します。
注: 通常、ブランチ情報は .git/refs/ ディレクトリにあります。heads ディレクトリはローカル ブランチ、remotes は対応するサーバー上のブランチ、tags はタグです。
3.12.2. ブランチの表示
git ブランチは、ローカル git ライブラリ内のすべてのブランチをリストします。リストされているブランチのうち、ブランチ名の前に * が付いているものは、そのブランチが現在のブランチであることを意味します。
git Branch –r は、サーバー git ライブラリのすべてのブランチをリストします。
(引き続き「git checkout -b local ブランチ名 サーバー ブランチ名」コマンドを使用して、サーバー上の特定のブランチのコード ファイルを取得できます)。
3.12.3. 現在どのブランチにいるかを確認する
cat .git/HEAD
3.12.4. ブランチを作成する
1) git ブランチ ブランチ名
ブランチは作成されましたが、現在の作業ブランチは新しく作成されたブランチに切り替えられません。したがって、切り替えるにはコマンド "git checkout ブランチ名" も必要です。
2) git checkout -b ブランチ名
ブランチだけでなく、現在の作業ブランチもブランチはこのブランチに切り替えられます。
3.12.5. ブランチに切り替える: git checkout ブランチ名
master ブランチに切り替える: git checkout master
3.12.6. ブランチを削除する
git Branch –D ブランチ名
注: 削除後、このブランチで行われたすべての変更を復元することはできません。このブランチを強制的に削除します。
3.12.7. 2 つのブランチ上のファイル間の差異を比較します
git diff master ブランチ名 (master ブランチと別のブランチの差異を比較します)
3.12.8. ブランチ履歴の表示
git- show-branch (現在のブランチのコミット コメントと情報を表示します)
git-show-branch -all (すべてのブランチのコミット コメントと情報を表示します) 例:
* [dev] d2
! [master] m2
--
* [dev] d2
* [dev^] d1
* [dev~2] d0
* [master] m2
上の例、「 「--」の上の 2 行は、dev と master の 2 つのブランチがあり、dev ブランチで最後に送信されたログが「d2」、master ブランチで最後に送信されたログが「m2」であることを示しています。 。「--」の下の行はブランチ進化の履歴を表します。dev は dev ブランチで発生した最後のコミットを表し、dev^ は dev ブランチで発生した最後から 2 番目のコミットを表します。 dev~2 は、dev ブランチで発生した最後から 3 番目のコミットを表します。
3.12.9. 現在のブランチの操作記録を表示する
git whatchanged
3.12.10. ブランチをマージする
方法 1:
git merge “コメント” マージ対象ブランチは、ブランチからマージされます。ソースブランチ
マージ内に競合がある場合、git はプロンプトを表示します。
例: git checkout master (master ブランチに切り替える)
git merge HEAD dev~2 (master ブランチと dev~2 ブランチをマージ) または: git merge master dev~2
方法 2:
git pull マージされたターゲット ブランチ マージされたソース ブランチ
例: git checkout master (master ブランチに切り替える)
git pull . dev~2 (現在のブランチと dev~2 ブランチをマージする)
3.13. Git rebase
通常、サーバーの最新のコンテンツをローカルにマージするときに使用されます。例: バージョン C では、コンテンツをサーバーからローカルに取得し、ローカルのコンテンツを変更します。このとき、ローカルで変更したコンテンツをサーバーに送信しますが、サーバー上のバージョンが G に変更されていることがわかります。この時点で、Git リベースを実行して、サーバー上の最新バージョンをローカルのバージョンにマージする必要があります。例:
次の2枚の図で説明するとわかりやすいですが、rebaseコマンド実行後、実際に分岐点がCからGに移動するため、分岐もCからGへの機能を持ちます。
git の使い方の詳細な紹介[6]
3.14. Git のリセット
放棄された研究開発コードのリセットに加えて、ライブラリの逆転と回復も重要な役割を果たします。たとえば、コード ベースをリモートで複製し、ローカルで開発して、リモートに送信する準備をします。ただし、ローカル コード ベースが開発される場合、機能的なコミットやバックアップ目的のコミットなどが発生します。つまり、コミット ログには無駄なログが大量にあり、これらのログをリモートに送信するときにライブラリに送信したくないのです。そこで、gitresetを使用します。
git restart の概念は比較的複雑です。コマンド形式: git replace [--mixed | --soft | --hard] []
コマンドオプション:
--mixed これはデフォルトのオプションです。たとえば、 git replace [--mixed] dev^ (dev^ の定義については、2.6.5 を参照してください)。その機能はブランチ ステータスを dev1^ にリセットすることだけであり、作業ファイルの内容は変更されません。つまり、 dev1^ から dev1 へのすべてのファイル変更は保持されますが、 dev1^ と dev1 の間のコミット ログはすべてクリアされ、変更されたファイルの内容は git add によって識別されません。再コミットしたい場合は、次のことも必要です。変更されたファイルに対して git add を実行します。こうすることで、コミット後に非常にきれいなコミット レコードが得られます。(インデックスとウェアハウスの内容はロールバックされます)
--soft は、 git restart –mixed を実行してから、変更されたファイルに対して git add を実行することと同じです。このオプションを使用すると、直接コミットできます。 (ウェアハウス内の内容はロールバックされます)
--hard コマンドを使用すると、ファイルの内容を含むすべての情報がロールバックされます。通常、廃止されたコードをリセットする場合にのみ使用されます。実行後はファイルの内容を復元できません。 (作業ディレクトリ、インデックス、ウェアハウスの内容はロールバックされます)
例:
使用するブランチに切り替えます;
git replace HEAD^ 最初のレコードをロールバックします
git replace HEAD~2 2 番目のレコードをロールバックします。
作業ディレクトリ内のファイルをロールバックする場合は、 git restart --hard HEAD^ を使用して最初のレコードをロールバックします。
git restart --hard HEAD~2 最初のレコードをロールバックします。レコード 2 つのレコード
次の方法も使用できます:
現在の作業ディレクトリを指定されたバージョン番号に完全にロールバックします。以下に示すように、A から G までのバージョンが 5 回送信されたと仮定します。 C の番号は bbaf6fb5060b4875b18ff9ff637ce118256d6f20 で、「git replace bbaf6fb5060b4875b18ff9ff637ce118256d6f20」を実行した結果、提出されたバージョン A ~ C の 3 つだけが残りました。
git の使い方の詳細な紹介[5]
3.15. Git revert
バージョンへの特定の変更を復元します。例: git revert commit_id (Commit_id は、コードのコミット時に生成される一意の文字列です)
例: (3.6 の場合) git revert dfb02e6e4f2f7b573337763e5c0013802e392818 (この操作を実行すると、最後のコミット操作が復元されます)
3.16. Git config
このコマンドを使用して、Git のさまざまな設定を追加および変更します。たとえば、「git config Branch.master.remoteorigin」と指定すると、マスターのリモート リポジトリがオリジン リポジトリというエイリアスに設定されます。
3.17. Git show
さまざまな種類のオブジェクトを表示します。
3.18. Git タグ
タグ オブジェクト (GPG で署名された) を作成、リスト、削除、または検証します。
特定のバージョンにラベルを付けることができるため、複雑なバージョン番号のハッシュ値文字列を覚えておく必要はありません。たとえば、「git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20」を使用して、復元したバージョンをマークできます。今後バージョンを確認する場合は、ハッシュ値の代わりに revert_version タグ名を使用できます。

4. Git サーバー操作コマンド (サーバーとの連携)
4.1. Git clone
サーバーのウェアハウスのコードをローカルに作成したディレクトリに取り出します (サーバーとの連携)
リモートの取得git clone による終了 git リポジトリの後、.git/config 内の開発者情報は一緒に複製されません。ローカル ライブラリの .git/config ファイルに開発者情報を追加する必要があります。さらに、開発者は自分で .gitignore ファイルを追加する必要もあります。
git clone を通じて取得したリモート git ライブラリには、リモート git ライブラリの現在の作業ブランチのみが含まれます。他のブランチ情報を取得したい場合は「git Branch -r」で表示し、他のリモートブランチコードを取得する場合は「git checkout -b ローカルブランチ名 リモートブランチ名」コマンドを使用してください。 、ここでリモートブランチ 「git Branch -r」にリストされるブランチ名は通常「オリジン/ブランチ名」のようなものです。ローカル ブランチ名がすでに存在する場合、「-b」パラメータは必要ありません。
例:
git の使い方の詳細な紹介[5]
4.2. Git プル
サーバーのリポジトリからコードを取得し、ローカル コードとマージします。 (サーバーと対話し、サーバーから最新のコードをダウンロードします。これは、Git fetch Git merge と同等です)
他のリポジトリ (リモートまたはローカル) からコードをローカルに更新します。例: "git "pullオリジンマスター」は、オリジンリポジトリのコードをローカルマスターブランチに更新することです。
git pull は、任意の git ライブラリから特定のブランチの内容を取得できます。使用法は次のとおりです:
git pull username@ipaddr: リモート リポジトリ名 リモート ブランチ名 ローカル ブランチ名 。このコマンドは、リモート git リポジトリのリモート ブランチ名をローカル git リポジトリのローカル ブランチに取得します。このうちローカルブランチ名を書かないとデフォルトでローカルのカレントブランチにプルされます。
git pull はブランチのマージにも使用できることに注意してください。 git merge と同じ機能があります。したがって、ローカル ブランチにすでにコンテンツがある場合、git pull はこれらのファイルをマージし、競合がある場合は警告します。 ### 例えば: ##################

git の使い方の詳細な紹介

git の使い方の詳細な紹介
4.3. Git プッシュ
ローカルのコミット コードをリモート リポジトリに更新します。 orgin という名前のリモート リポジトリ。
Git Push と Git Pull はまったく逆で、ローカル ブランチの内容をリモート ブランチに送信します。使用法: git Pushusername@ipaddr: リモート リポジトリ名 ローカル ブランチ名 リモート ブランチ名 。このコマンドは、ローカル git リポジトリのローカル ブランチをリモート git リポジトリのリモート ブランチ名にプッシュします。
git Push はファイルを自動的にマージしないように見えることに注意してください。したがって、git プッシュ中に競合が発生した場合、プロンプトは表示されずに、後でプッシュされたファイルの内容によって強制的に上書きされます。これは共同開発する場合には非常に危険です。
例:
git の使い方の詳細な紹介
4.4. Git フェッチ
サーバーのリポジトリからコードをダウンロードします。 (サーバーと対話し、サーバーから最新のコードをダウンロードします)
これは、最新バージョンをリモートからローカルに取得するのと同等であり、自動的にマージされず、Git pull よりも安全です。
このメソッドを使用して、サーバー上の更新を取得します。
例: git checkout nov/eclair_rocket (nov/eclair_rocket はサーバー上のブランチ名) を使用すると、最後に git fetch コマンドを使用したときにサーバーからダウンロードされたコードが取得されます。まず git Checkout nov/eclair_rocket を使用します。まずサーバーから最新の更新情報を取得し、次にサーバーから最新のコードをダウンロードします。

以上がgit の使い方の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。