基本的に、リモート git リポジトリを 1 分ごとにチェックする crontab タスクを作成しています。変更がある場合は、それらを (ローカル リポジトリに) プルし、各コミットを通過し、コミットごとに grunt selenium タスクを実行します。
ちょっと立ち往生している部分は、リモートの git リポジトリに新しいコンテンツがあり、プルする必要があるかどうかを確認する方法です!
基本的に、リモート git リポジトリを 1 分ごとにチェックする crontab タスクを作成しています。変更がある場合は、それらを (ローカル リポジトリに) プルし、各コミットを通過し、コミットごとに grunt selenium タスクを実行します。
ちょっと立ち往生している部分は、リモートの git リポジトリに新しいコンテンツがあり、プルする必要があるかどうかを確認する方法です!
それを見つけるために使用できますgit ls-remote
:
git ls-remote origin master
このコマンドは、マスター ブランチの最新の sha-1 ID を取得します。必要な数のブランチを指定することも、ブランチを指定しないですべてを取得することもできます。それを使用して、ローカルブランチと比較できます。
ただし、同じネットワーク操作を 2 回行う必要がないように、すべての変更をフェッチする方が効率的かもしれません。
git fetch origin
このようにして、「origin/master」で更新を取得し、「master」と比較して更新があるかどうかを確認できます。これはマージもリベースもしないので、更新があることを検出したら、やりたいことは何でも実行git pull
できます。git merge
git rebase
git fetch
git log ..origin/master --oneline | wc -l
プル時に適用されるリビジョン (コミット) の数を出力します。
0 より大きい場合は、新しいコンテンツがあることを意味します。
私の知る限り、2 つのコマンドが役立つ可能性があります。間違っていたらごめんなさい。申し訳ありません。
Git には、リモート リポジトリから自身を更新するための 2 つのコマンドがあります。git fetch は別のレポと同期し、ローカルにないデータをすべてプルダウンし、同期したときにそのリモートの各ブランチがあった場所へのブックマークを提供します。これらは「リモート ブランチ」と呼ばれ、ローカル ブランチと同じですが、Git ではチェックアウトできないことを除けば、ローカル ブランチと同じですが、マージしたり、他のブランチと比較したり、履歴ログを実行したりできます。同期した後、ローカルでそのようなものを。
リモート サーバーから新しいデータを取得する 2 番目のコマンドは git pull です。このコマンドは基本的に git fetch を実行し、その後すぐにそのリモートのブランチの git merge を実行します。これは、現在のブランチによって追跡されます。引っ張るという考え方、
リモートがすべてセットアップされていて、更新を取り込みたいと仮定すると、最初に git fetch [alias] を実行して、持っていないすべてのデータを取得するように Git に指示し、次に git merge [alias] を実行します。 /[branch] サーバー上で新しいものをすべて現在のブランチにマージします (その間に他の誰かがプッシュした場合など)。したがって、他の何人かと一緒に Hello World プロジェクトに取り組んでいて、最後に接続してからプッシュされた変更を取り込みたい場合は、次のようにします。
$ git fetch github
remote: Counting objects: 4006, done.
remote: Compressing objects: 100% (1322/1322), done.
remote: Total 2783 (delta 1526), reused 2587 (delta 1387)
Receiving objects: 100% (2783/2783), 1.23 MiB | 10 KiB/s, done.
Resolving deltas: 100% (1526/1526), completed with 387 local objects.
From github.com:schacon/hw
8e29b09..c7c5a10 master -> github/master
0709fdc..d4ccf73 c-langs -> github/c-langs
6684f82..ae06d2b java -> github/java
* [new branch] ada -> github/ada
* [new branch] lisp -> github/lisp
ここでは、このリモートと最後に同期してから、5 つのブランチが追加または更新されていることがわかります。「ada」と「lisp」ブランチは新しく、「master」、「c-langs」、「java」ブランチは更新されています。この例では、他の開発者が提案された更新を、'master' にマージされる前にレビューのためにリモート ブランチにプッシュしています。
Git が作成するマッピングを確認できます。リモート リポジトリの「マスター」ブランチは、ローカルでは「github/master」という名前のブランチになります。そうすれば、git merge github/master を実行して、そのリモートの「マスター」ブランチをローカルの「マスター」ブランチにマージできます。または、git log github/master ^master を実行して、そのブランチにある新しいコミットを確認できます。リモートの名前が「origin」の場合、代わりに origin/master になります。ローカル ブランチを使用して実行するほとんどすべてのコマンドは、リモート ブランチも使用できます。
複数のリモート リポジトリがある場合は、実行して特定のリポジトリからフェッチするか、実行git fetch [alias]
してすべてのリモートと同期するように Git に指示できます。git fetch --all.
git status コマンドも
git status コマンドは、作業ディレクトリとステージング領域の状態を表示します。どの変更がステージングされ、どの変更がステージングされていないか、どのファイルが Git によって追跡されていないかを確認できます。ステータス出力には、コミットされたプロジェクト履歴に関する情報は表示されません。このためには、git log を使用する必要があります。
git status
ステージングされている、ステージングされていない、追跡されていないファイルを一覧表示します。