3

私は自分の論文にgitを使い始めたばかりです。私の質問は、私にとって適切なワークフローは何かということです。ここに私の前提条件があります:

使用したハードウェア:

  • 自宅で使用するノートパソコンA
  • ラップトップB私が図書館にいるときに使用するネットブック
  • 大学のデスクトップコンピュータ
  • gitも実行している私の大学のサーバー上のプライベートファイルスペース(大学によってプレインストールされていますね)

私が知るまで私がしたことは、LaTeXを使って自分の論文を書き、それをこれらすべてのコンピューター間で手作業でコピーすることです。私がsthを書いていることがよくあります。あるマシンで休みがあり、最新バージョンがどこにあるのかわかりません。このような場合、diffを使用して比較し、最新のドキュメントを見つけました。

gitについて少し読んだところ、それが私に大いに役立つことがわかりました。サーバーに中央リポジトリを配置し、すべてのコンピューターでサーバーにプッシュ/プルするようなものを考えました。

これで、サーバー上にベアリポジトリを作成しgit init、各コンピューター上に(によって)ローカルリポジトリを作成しました。

しかし、これが正しいかどうかはわかりません。現在、すべてのコンピューターが同期しているため、すべてのローカルリポジトリに同じファイル/バージョンが含まれています。ラップトップAからサーバー上のベアリポジトリにプッシュしました。

サーバーリポジトリからデスクトップコンピューターにプルしようとしました:

git pull origin master 

出力:

* branch            master     -> FETCH_HEAD
Merge made by the 'recursive' strategy.

私が正しく理解していれば、それは私のデスクトップコンピュータにブランチを作成しました。この後、デスクトップPCでの作業を開始する前に、さらに操作を適用する必要がありますか?

別の試みは:

git pull origin master:master

出力:

 ! [rejected]        master     -> master  (non-fast-forward)

理由はわかりませんが、Gitの本で読んだ限りでは、これは予想される動作です。これにより、プルするたびに新しいブランチが作成されるのを防ぐことができませんか?

とにかく、私は今ここでstackoverflowに関する多くの投稿を読み、公式のgitブックのいくつかの章も読んでいますが、私の頭は少しハミングしています。

ここで始めたワークフローが、私が達成したいことに対してまったく正しいかどうかはわかりません。たぶん、サーバーgitを使用するのではなく、ファイルスペースにクローンを作成する必要がありますか?誰かが私を正しい軌道に乗せることができますか?

どうもありがとう。

4

2 に答える 2

2

いいえ、各コンピューターにリポジトリーを作成するわけではありません。1台のコンピューターでリポジトリを作成し、中央のリポジトリにプッシュして、そこから他のコンピューターにクローンを作成します。

最も簡単な解決策:

Laptop A:  leave alone
Laptop B:  change name of existing git repository to retain it as a backup.  Then `git clone <url>` from central repo
Desktop:  same as laptop B

リポジトリのクローンが作成され、ファイルが正しいことを確認したら、名前を変更した元のリポジトリを削除できます。

それ以降、コンピューターに移動するときのワークフローは次のとおりです。

git pull (to receive any changes you pushed while on a different computer.  If it exits silently, there were no changes)
work, work, work
git add .
git commit -m <comment>
git push
于 2012-07-17T14:26:32.157 に答える
2

サーバー上でベアリポジトリを作成した後、各コンピューターでgit initを実行する代わりに、サーバー上のベアリポジトリからクローンを作成する必要があります。たとえば、sshプロトコルを使用している場合は、他の各コンピューターで次のようなことを行うことができます。

git clone ssh://username@servername:/path/to/bare/repo.git

これにより、オリジンがベアリポジトリを使用してサーバーからリモートに自動的に設定されます。次に、ローカルコンピューターで必要なすべての変更を行い、次のようにローカルで変更をコミットできます。

git add .
git commit -m 'Made some changes'

次に、次のことを行います。

git pull

更新する場合、および:

git push

ローカルでコミットした変更をサーバーにプッシュする場合。

于 2012-07-17T14:26:58.570 に答える