0

現在、接続が非常に遅いため、会社の git サーバーに新しいブランチをプッシュする必要があります。SVN を使用すると、必要に応じてファイルを一度に 1 つずつリモート SVN サーバーにコミット/プッシュできます。以前は、接続が遅かったとき、一度に 1 つのフォルダーをアップロードでき、うまく機能していました。私は確かにgitで似たようなものを使うことができました。

4

2 に答える 2

1

git-push(1) を実行すると、マニュアルには次のように書かれています。

多くの場合、これ<src>はプッシュしたいブランチの名前ですが、master~4 や HEAD など、任意の「SHA-1 式」にすることができます (gitrevisions(7) を参照)。

その結果、個々のコミットを時系列で整理し、詳細な refspec でそれぞれを指定することで、個々のコミットをリモートにプッシュできるはずです。例えば:

# Get all commits not in remotes/origin/master and
# sort in chronological order.
commits_list=$(
    git log --oneline --reverse refs/remotes/origin/master..HEAD | 
    awk '{print $1}'
)

# Push each commit one-by-one to origin/master.
for commit in $commits_list; do
    git push origin $commit:refs/heads/master
done

これをローカルでテストしたところ、意図したとおりに動作するようです。試してみる; 他に何もなければ、正しい方向に向けることができます。

于 2012-06-24T20:28:45.083 に答える
0

ブランチが多数の小さなコミットで構成されていて、1 つの大きな変更が追加されている場合、コミットを段階的にプッシュすることでこれを実現できる場合があります。おそらく、コードが会社のサーバー上のコードから分岐するポイントから始まる新しいブランチを作成し、ブランチからコミットの範囲を段階的にプルし、各範囲がプルされた後にプッシュします。

しかし、別々のフォルダー/ファイルをプッシュする-それは不可能だと確信しています。コミットがアトミックエンティティであるというgitの要件に逆らっています。

于 2012-06-24T20:06:33.987 に答える