2017-07-31 13 views
0

約3年間、私たちはssh://[email protected]:40000/myproject.gitでホストされているgit repoで開発しています。今私はssh://[email protected]:7999/w3/myproject.gitであるクライアントのgit repoにファイルを転送する必要があります。reposの切り替え

次に、開発者は、転送されたrepoの作業を開始する必要があります。これはbitbucketのものです。

私は2つの質問がありますが、repos間でコードを転送する最も良い方法は何ですか?

次に、開発者が新しいレポの作業を開始するにはどうすればよいですか?リモートURLを変更するだけで可能ですか?プロジェクトは巨大なので、開発者がプロ​​ジェクトの構築、構成などに一日を費やすのを避けることが大好きです。

ありがとうございます。

答えて

1

はいリモートURLを編集することは可能です。あなたのgit-clientに依存しますが、GUIレスのgitのレイヤーでは、.git/configファイルを見れば、リモートのすべての定義がそこにあります。

[core] 
    bare = false 
    (.....) 
[user] 
    name = you 
    email = [email protected] 
[remote "origin"]        #<---- here ya go '1 
    url = ssh://[email protected]:40000/myproject.git #<--- here ya go '2 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 

だから、あなたは、それを変更.gitを圧縮することができ、他のDEVにそれを与える、と彼は行く準備ができます。ヤックあなたがポイントブランクにいない限り、そうしないでください。

これは、すべて手動で行うことにあまり意味がないからです。 Gitは複数のリモコンを簡単に扱うことができ、新しいリモートリポジトリを初期化できるpushと、開発者を設定できるcloneがあります。両方のリモコンが設定されています。その後

git remote add newrepo ssh://[email protected]:7999/w3/myproject.git 

...その直後

git push newrepo master 

または

git push --all 
git push --tags 
... etc 

をプッシュ:あなたはすでに伝統的なoriginはちょうど新しい名前で新しいものを追加していると仮定すると、

新しいリポジトリには、「すべて」(=あなたがプッシュしたものに依存します)がソースから取り込まれます新しい開発者は単に古いものを無視してその新しいものからclone/pullすることができます。

ノーマルプッシュを実行しているので、新しいレポには完全履歴も表示されます。あなたがそれを望まないなら、まずそれをトリミングする必要があります(スカッシュなど)。

+0

'git remote add newrepo'が既に存在し、そこに古いコードがあるので、私はできません。 – DarthVader

+0

@DarthVader:新しいリポジトリに古いコードが含まれていますか?ちょっと変わったね?とにかく、古いコードを削除して最新のものに置き換えたい場合は、まず最初に新しいリポジトリをクリーンアップしてください: 'master'以外のすべてのブランチを削除してください(おそらく' master' beucaseを削除することはできないでしょうサーバの裸のリポジトリにブランチする)、孤立した空のコミットを 'master'ブランチに強制的にプッシュします。その後、新しいリポジトリは完全に空になり、実際のソースリポジトリからプッシュされたコンテンツを受け取る準備が整います。 – quetzalcoatl

0

通常、gitはリポジトリ全体をクローンしているので、クローン作成の他に多くのことをする必要はありません。
開発者は、「オリジナル」のURLを変更するか、別の名前で新しいURLをクローンしてそこにプッシュすることを忘れないでください。
個人的に私は遠隔起源を削除し、遠隔起源を追加します。

+0

ありがとうございました。構文は何でしょうか?私は今それを試すことができます。 – DarthVader

0

$ git remote add <new_origin_name> <new_origin_url>

コマンドです。ここで、new_origin_nameには、古いリモートリポジトリに与えた名前以外の名前を使用できます。

$ git push --force <new_origin_name> 

--forceが強すぎる場合は、--force-with-leaseを使用できます。あなたの他の開発者はまったく同じことをする必要があります(もちろん、--forceオプションを使用する以外は!)。

Bitbucket(Windows/Mac)では、すべての人がAtlassianソフトウェアsourcetreeを使用するのは悪い考えではないかもしれません。