1

簡単なことをする必要がありますが、正しい方法を見つけることができません...

私と他の開発者は、クラウドリポジトリで同じGITブランチを使用しています。彼は、適切にフォーマットされておらず、ローカルでコミットされていないが、クラウドにプッシュされなかったコードを含むファイルを追加しました。

.gitを使用して彼のフォルダに直接接続して、これらのファイルを取得したいと思いますgit pull。この段階で、GITは私のためにリモートブランチを作成し、このファイルを保持するためにローカルブランチを作成することを知っています。

私が理解できないのは:

  1. 特定のファイルのみをプルできますか?

  2. このファイルを作業中のメインブランチに追加して編集し、サーバーにプッシュするにはどうすればよいですか?

ところで:正しい方法は、一時的なブランチを作成し、友人のマシンからそれにプッシュし、マシンをプルしてからクラウドにプッシュすることだと思いますが、私の職場では、適切にフォーマットされていないコードをコミットするのは問題があります...

4

1 に答える 1

1

彼のマシンとローカル リポジトリに接続できると仮定すると、git clone彼のブランチを取得して、ローカル追跡ブランチを作成する必要があります。このビットをカバーしているように聞こえますが、後世のために:

git remote add <repo> <his_repo_path>

特定のファイルだけをプルすることはできません。あなたができることは、彼のブランチのあなたのバージョンを何かユニークなものと呼ぶことです。

git fetch <repo> <his_branch>:throwaway ;# this would call your branch 'throwaway'

彼の履歴 (つまり の履歴throwaway) が のように見えるとしA-B-C-D-E-Fます。コミットBとだけが必要な場合Dは、cherry-pick を使用してそれらをメイン ブランチに取り込むことができます。

git checkout <main_branch> ;# checkout your main branch
git cherry-pick `B`
git cherry-pick `D`

これで完了です。

悪い習慣なのでお勧めしませんが、1つか2つのファイルだけが本当に必要で、インテリジェントなサイズのファイルを作成していない人から引っ張っている場合は、それでうまくいきます。コミット:

  1. git checkout -B trashme master ;# or whatever your main branch is
  2. ファイルをコピーします。文字通りコピーを作成するか、電子メールで送信してもらいます。
  3. trashmeブランチがチェックアウトされている間に、それらをリポジトリに移動します。
  4. ステージングしてコミットする前に編集してください。
  5. それらcherry-pickのコミットまたはgit merge trashme.
于 2012-07-10T11:57:24.097 に答える