2017-10-30 9 views
-1

gitにはかなり新しいです。私のワークフローを設定して、最も便利な方法で作業する方法についてちょっと混乱しています。GitHubからコードの最新バージョンを実行していることを確認するには

私は自分のラップトップ(OSXを走らせている)と私たちのPythonコードのための時間のかかるテストを実行しようとしているsshを通してCentOSを走らせています。数ヶ月間これをやって、私はすぐに、フォルダ構造がかなり異なるので、私は並行しているが別々の開発ラインを持っていたことに気づいた。

私はgithubのレポをセットアップする時間をとって、それを私のラップトップにクローンしました。その後、私はPythonファイルを対にして(サーバーバージョンとラップトップバージョン)、手動で差分をマージし、ファイルをGithubにプッシュしました。最後に、私はサーバー上にレポをクローンしました。今私は3つの場所すべてで同じバージョンを持っています。

今後、さまざまなプラットフォーム間の相違を避けたいと思います。理想的には私がに自動的にローカルリポジトリをGithubと同期させたいのですが(理論的には.bashrcで行うことができるはずですか?)、そしてサーバからログアウトしてください。基本的に私は、異なるマシン間で手動で同期することを忘れるチャンスを避けようとしています。

どうすればこの問題を解決できますか?この戦略に潜在的な落とし穴がありますか?

+0

これは、継続的展開と呼ばれています。 Jenkinsというツールでこれを達成する方法については、[記事](https://code.tutsplus.com/tutorials/setting-up-continuous-integration-continuous-deployment-with-jenkins--cms-21511) Web開発者やGitHubユーザーの間で普及しているオプションですが、他にも多くの種類があります)。 – JDB

+0

広範囲に基づいて投票した人には、具体的な詳細が不足していましたか?私は詳細を提供してうれしいですが、私はその質問が有用な答えを保証するのに十分具体的だと感じています。ここでは多くの人にとってシンプルなものかもしれませんが、最後に私はSOがよく分からない/よく分かっていることを学ぶために質問した場所であることを確認しました。また、問題の解決策が数多くある可能性があるという事実が、その問題が解決できないということを意味するものではありません。 – posdef

+0

[FAQから](https://stackoverflow.com/help/dont-ask):「***主観的な質問には避けてください。すべての答えが同じように有効です。」「質問するのは完全に素晴らしい質問です、そうではありません。 CI&CDには全書籍があります。ここで誰も正しい答えはありません...あなたの経験、予算、セキュリティ上の懸念、ワークフロー、環境設定などによって異なります。これは非常に広いテーマです。これは「どのツールを使うべきか」というタイプの質問に非常に近いものですが、直接質問するのは避けていましたので、私は「あまりにも広すぎる」と投票しました。 (しかし、-1ではありませんでした) – JDB

答えて

0

git自体には、ローカルrepoとリモートrepoを自動的に同期させるためのフックや設定はありません。

回避策は、スクリプトを実行してリモートrepoとローカルリポジトリを同期させるスケジュールです。以下のように

同期スクリプトの例(シンクmaster支店):

#!/bin/sh 

git fetch 
flag=0 
ahead=$(git log origin/master..master --oneline) 
if [[ -z "${ahead// }" ]]; then 
    echo "Local repo has no commits un-pushed" 
else 
    { 
    flag=1 
    echo "local master branch is ahead of origin/master $flag" 
    } 
fi 
behind=$(git log master..origin/master --oneline) 
if [[ -z "${behind// }" ]]; then 
    { 
    if [ $flag == 0 ]; then 
     echo "already sync" 
    else 
     git push 
    fi 
    } 
else 
    { 
    if [ $flag == 0 ]; then 
     git pull origin master 
    else 
    { 
     git pull origin master --rebase 
     git push 
    } 
    fi 
    } 
fi 
echo "Now the local repo is aync eith remote repo" 

スケジュールするためには、スクリプトを実行し、あなたが参照できます。

schedule running a bash shell script in windows

Running .sh every 5 minutes

することもできます関連する問題here

関連する問題