0

git で動作するように次の設定を行いたいと考えています。特定のプロジェクトについて、職場のデスクトップ コンピューターのディレクトリ ($desktop) に "origin" リポジトリを配置したいと考えています。次に、自宅または他の場所 ($laptop) からこのリポジトリにアクセス、プル、プッシュできるようにしたいと考えています。

他の質問で私が見たものについては、プロセスには通常、デスクトップに裸の git リポジトリを作成することが含まれます。

$desktop > git init -bare

ただし、これにより作業ディレクトリのないリポジトリが生成されることを理解しています。私はこれをしたくありません。リポジトリをプロジェクト固有にし、デスクトップとラップトップの両方の特定のディレクトリに配置し、特定のディレクトリ ツリーに保持しているものだけを追跡したいと考えています。これは明らかに git の問題であり、通常のリポジトリには「絶対に」プッシュしないでください。

これを整理する方法はありますか?

4

3 に答える 3

2

チェックアウトを使用してリポジトリにプッシュすることはお勧めできません。これは、プッシュによってチェックアウトされたファイルが更新されないため、リポジトリの状態が非常に混乱しやすいためです。

これを回避する簡単な方法の 1 つは、デスクトップに 2 つのリポジトリを作成することです。ラップトップからプッシュできる裸のリポジトリと、デスクトップでコーディングするときに使用する作業リポジトリです。もう 1 つの方法は、ラップトップのリポジトリをデスクトップから見えるようにして、双方向にプルできるようにすることです。

ベア リポジトリにプッシュしている場合でも、最初に作業リポジトリからプルすることを妨げるものは何もないことに注意してください。そのため、デスクトップで行っていたことを常に最新の状態に保つことができます。

于 2012-07-04T09:14:19.217 に答える
1

デスクトップ リポジトリで、.git/config を追加する必要があります。

[core]
   sharedRepository true

[receive]
   denyCurrentBranch false

最初の構成では、リポジトリにプッシュできます。2 つ目の構成では、リモート リポジトリがチェックアウトされているブランチにプッシュできます。

この助けを願っています!

于 2012-07-04T10:07:18.243 に答える
1

1 つの可能性は、デスクトップ上の通常のリポジトリから単純にプルすることですが、そこでチェックアウトされたブランチに直接プッシュするのではなく、ラップトップで更新を受信するためだけの他のブランチにプッシュしてから、それらを個別にマージすることです。

あれは:

laptop$ git clone desktop:path/to/project
laptop$ cd project
[... make changes...]
laptop$ git push -f desktop:path/to/project master:from-laptop

desktop$ cd path/to/project
desktop$ git merge from-laptop

デフォルトでその仕様に従ってプッシュされるbranch.master.push master:from-laptopように、ラップトップリポジトリで構成できます。git push

于 2012-07-12T17:48:48.793 に答える