GitHubの使用方法に関する完全なチュートリアル

最近Gitを使い始めましたか?または、しばらく使用していたかもしれませんが、その多くの謎は依然として混乱しています。

Gitは主にバージョン管理システムであり、ソフトウェア開発プロジェクトの主要な要素です。通常、2つの主な目的を果たします:コードのバックアップとコードのバージョン管理。バックアップコピーにロールバックする必要がある場合に備えて、ステップごとにコードを操作して、各ステップの進行状況を保存できます。

一般的な問題は、Gitの使用が難しい場合があることです。バージョンとブランチが同期していない場合があり、コードをプッシュしようとして真剣に時間を費やしています!さらに悪いことに、特定のコマンドが正確にどのように機能するかを知らないと、コードのビットを誤って削除したり上書きしたりする可能性があります!

だからこそ、このチュートリアルを準備し、gitを適切に使用する方法をお教えします。

インストールとセットアップ

インストール中

まず最初に、それを使用するにはgitをインストールする必要があります! aptを使用すると、すばやく簡単に実行できます。

sudo apt install git-all

基本設定

必要に応じて、今後のgitコマンドで再度入力する必要がないように、gitユーザー名とメールを保存してください。

git config --global user.name "ユーザー名"
git config --global user.email "email"

一部の人々が見逃すことの多い巧妙なトリックは、gitに追加の色付けを有効にして、コマンドの出力を簡単に読み取れるようにすることです!

git config --global color.ui true

基本的なバージョン管理

gitの初期化

これで、プロジェクトのバージョン管理を開始できます。先に進み、標準の「cd」コマンドを使用して、ターミナルでバージョン管理を設定するディレクトリに移動します。これで、次のようにgitリポジトリを初期化できます。

git init

これにより、必要なすべてのリポジトリファイル(Gitリポジトリスケルトン)を含む.gitという名前の新しいサブディレクトリが作成されます。この時点では、プロジェクトの何もまだ追跡されていません。

追加とコミット

既存のファイルのバージョン管理を開始するには、それらのファイルを追跡して最初のコミットを行う必要があります。それを実現するには、gitプロジェクトにアタッチしたいファイルをgitに追加することから始めます。

git add <ファイル>
git commit -m '最初のコミット'

リモートバックアップ

すばらしいです!これで、GitHubプロジェクトのローカルバージョン管理が開始されました。プロジェクトをリモートで保存およびバックアップする場合は、GitHubにリモートリポジトリを作成する必要があります(無料です!)。そのため、まずgithub.comに進み、リポジトリを作成します。次に、リポジトリのリンクを使用して、ローカルgitプロジェクトの原点、つまりそのコードが保存される場所としてリポジトリを追加します。

###一般的な例
git remote add origin \
https://github.com/user/repo.git
###私のリポジトリの例
git remote add origin \
https://github.com/GeorgeSeif/Semantic-Segmentation-Suite.git

次に、コードをGitHubにプッシュします...ビオラ!コードをバックアップしました!

git push origin master

ファイルを操作する

状態確認

どのファイルがどの状態にあるかを判断するために使用する主なツールは、git statusコマンドです。既にコミットされているファイルとコミットされていないファイルを確認できます。すべてのファイルが既にコミットおよびプッシュされているときにこのコマンドを実行すると、次のように表示されます。

$ gitステータス
#ブランチマスター上
コミットするものがない

プロジェクトに新しいファイルを追加し、そのファイルが以前に存在しなかった場合、$ gitステータスを実行すると、次のような追跡されていないファイルが表示されます。

$ gitステータス
#ブランチマスター上
#未追跡ファイル:
#(「git add  ...」を使用して、コミットされる内容に含めます)
#
#README
コミットには何も追加されませんが、追跡されていないファイルが存在します(追跡するには「git add」を使用します)

これにより、$ gitステータスは、すでにバックアップしたものとローカルにあるものをすばやく確認するのに非常に役立ちます。

高度なファイル追加

Gitにファイルを追加するより高度な方法がいくつかあり、ワークフローをより効率的にします。変更があるすべてのファイルを探して1つずつ追加するのではなく、次の操作を実行できます。

###ファイルを1つずつ追加する
git add filename

###現在のディレクトリにあるすべてのファイルを追加する
git add -A

###現在のディレクトリにあるすべてのファイルの変更を追加する
git add。

###追加する変更の選択(これにより、すべての###の変更が適用され、変更を「Y」または「N」にすることができます)
git add -p

高度なコミット

以前は、$ git commit -m "commit message"を使用してGitにファイルをコミットできることがわかりました。短いコミットメッセージではこれで十分ですが、もっと手の込んだことをしたい場合はもう少し必要になります。

###ステージングされたファイルをコミットする
###これは通常、短いコミットメッセージに使用されます
git commit -m 'コミットメッセージ'

###ファイルを追加して、一発でコミットする
git commit filename -m 'commit message'

###ファイルの追加とステージングされたファイルのコミット
git commit -am 'コミットメッセージを挿入'

###最新のコミットメッセージを変更する
git commit-「新しいコミットメッセージ」を修正

#一連のコミットを1つにまとめる
###乱雑なコミット履歴を整理するためにこれを使用するかもしれません
git rebase -i
###これにより、コアエディターのインターフェイスが提供されます。
#コマンド:
#p、選択=コミットを使用
#r、reword =コミットを使用するが、コミットメッセージを編集する
#e、編集=コミットを使用、ただし修正は停止
#s、squash =コミットを使用しますが、前のコミットにマージします
#f、fixup = "squash"に似ていますが、このコミットのログメッセージを破棄します
#x、exec =シェルを使用してコマンド(行の残り)を実行

分岐とマージ

GitHubリポジトリのmasterブランチには、常に動作する安定したコードが含まれている必要があります。ただし、現在作業しているが完全には安定していないコードもバックアップしたい場合があります。新しい機能を追加したり、コードを試したり壊したりしているかもしれませんが、それでもバックアップを維持して進行状況を保存したいでしょう!

分岐を使用すると、マスターブランチに影響を与えることなく、コードの別のコピーで作業できます。最初にブランチを作成すると、マスターブランチの完全なクローンが新しい名前で作成されます。その後、この新しいブランチのコードを、ファイルのコミットなどを含めて個別に変更できます。新しい機能が完全に統合され、コードが安定したら、マスターブランチにマージします!

分岐

ブランチを作成して作業するために必要なものはすべて次のとおりです。

###作業するローカルブランチを作成する
git checkout -b branchname

### 2つのブランチ間の切り替え
git checkout branch_1
git checkout branch_2
###バックアップとして新しいローカルブランチをリモートにプッシュする
git push -u origin branch_2

###ローカルブランチを削除する-まだマージされていないブランチ###を削除することはできません
git branch -d branch_2

###ローカルブランチを削除する-これは、ブランチがまだ###マージされていない場合でも削除します!
gitブランチ-D branch_2

###ローカルブランチとリモートブランチの両方を含む、リポジトリの現在のすべてのブランチを表示する。特定の機能追加用の###ブランチが既にあるかどうか、特に大きな###プロジェクトの場合に最適です
git branch -a

###ローカルおよびリモートを含む、現在の###ブランチにマージされたすべてのブランチの表示。コードのすべての###がどこから来たのかを見るのに最適です!
git branch -a --merged

###ローカルおよびリモートを含む、現在の###ブランチにマージされていないすべてのブランチの表示
git branch -a --no-merged

###すべてのローカルブランチの表示
gitブランチ

###すべてのリモートブランチを表示する
git branch -r

#マスターブランチをローカルブランチにリベースします
$ git rebase origin / master

#マスターをローカルブランチにリベースした後、ローカルブランチをプッシュする
$ git push origin + branchname

マージ

すばらしいです!これで、ブランチを作成してそのコードを操作する方法を学びました!ブランチに新しい機能を追加したら、マスターブランチにマージし直して、マスターが最新のコード機能をすべて使用できるようにします。

方法は次のとおりです。

###まず、マスターブランチを見ていることを確認してください
git checkout master

###ブランチをマスターにマージします
git merge branch_2

それでおしまい!ブランチとマスター間のコードの競合を修正する必要があるかもしれませんが、Gitは、そのマージコマンドを入力した後、すべてを行う方法を示します。

間違いの修正とバックトラッキング

間違いが起こる…。また、コーディングで頻繁に発生します!重要なことは、それらを修正できることです。

ここに恐れはありません! Gitには、プッシュするコードを間違えたり、何かを上書きしたり、プッシュしたものを修正したい場合に必要なものがすべて揃っています。

###最新のコミットのコードのバージョンに切り替える
git reset HEAD
git reset HEAD-特定のファイルのファイル名#
###最新のコミットの前にコードのバージョンに切り替える
git reset HEAD ^-ファイル名
git reset HEAD ^-特定のファイルのファイル名#
### 3つか5つのコミットに戻る
git reset HEAD〜3-ファイル名
git reset HEAD〜3-特定のファイルのファイル名#
git reset HEAD〜5-ファイル名
git reset HEAD〜5-特定のファイルのファイル名#
###特定のコミットに戻る
###「0766c053」はコミットIDです
git reset 0766c053-ファイル名
git reset 0766c053-特定のファイルのファイル名#
###前のコマンドは「ソフト」リセットとして知られていました。 ###コードはリセットされますが、gitは必要に応じて他のコード###のコピーを手元に置いておきます。一方、-hardフラグ###は、作業ディレクトリ内のすべての変更を上書きするようGitに指示します。
git reset --hard 0766c053

Gitの便利なヒントとコツ

ざらざらしたものですべて完了です!ワークフローの改善に役立つGitのヒントとコツをいくつか紹介します。

検索中

###ディレクトリ内の文字列の一部を検索します
git grep 'something'

###ディレクトリ内の文字列の一部を検索し、-nが###を出力し、gitが一致を見つけた行番号を出力します
git grep -n 'something'

###何らかのコンテキスト(いくつかの行を持つ文字列の部分を検索します
###探している「何か」の前と後
git grep -C <行数> 'something'

###文字列の一部を検索し、その前に行も表示します
git grep -B <行数> 'something'

###文字列の一部を検索し、その後の行も表示します
git grep -A <行数> 'something'

誰が何を書いたかを見る

###ファイルの変更履歴を作成者の名前で表示する
git blame 'filename'

###ファイルの変更履歴を作成者の名前###とgitコミットIDで表示します
git blame 'filename' -l

ロギング

###リポジトリ内のすべてのコミットのリストを表示します。このコマンドは、コミットID、作成者、日付、###コミットメッセージなど、コミットに関する###すべてを表示します。
git log

###コミットメッセージと変更のみを表示するコミットのリスト
git log -p

###探している特定の文字列を持つコミットのリスト
git log -S 'something'

###作成者によるコミットのリスト
git log --author '著者名'

###リポジトリ内のコミットのリストの概要を表示します。この###は、コミットIDとコミットメッセージの短いバージョンを示しています。
git log --oneline

###昨日からリポジトリにあるコミットのリストを表示する
git log --since = yesterday

###作成者ごとにログを表示し、###コミットメッセージ内の特定の用語を検索
git log --grep "term" --author "name"

推奨読書

プログラミングの仕事に侵入しようとしていますか、それとも現在の仕事をアップグレードしようとしていますか?コーディングインタビューの解読には、Google、Microsoft、Amazonなどの企業向けの一般的なコーディングインタビューの質問とそのソリューションの最良の例があります。

すばらしい本を共有することは誰にとっても役立つので、私はこのブログをすばらしい本へのAmazonアフィリエイトリンクでサポートしています!アマゾンアソシエイトとして、資格のある購入から収入を得ています。