0

git をあまり使ったことがないので、これは「git はこのようなものをサポートしていますか」という質問に近いものです。

あなたは仕事中です...仕事をしています...あなたは大きな変更を加え、ビルドし、コミットを行い、すぐに次の大きな機能に取り組み始めました. ファイルにいくつかの変更を加えましたが、コミットするには不十分で、ベルが鳴りました . 在宅勤務を続けたいが、部分的なコミットで履歴ツリーを汚したくありません。

理想的には、履歴ツリーをたとえば GitHub にアップロードし、作業ツリーの内容をアップロードして、自宅で作業を続けることができます。

git はこのようなものをサポートしていますか?

いつでもすべてを USB にアップロードして、そこから続行することもできますが、それではアイデア全体が無効になります。

4

3 に答える 3

4

部分的な変更を (できればストーリー ブランチで) コミットしてプッシュしてから、ここで説明されているように、中間コミットを最終的なコミットに押しつぶします: http://gitready.com/advanced/2009/02/10/squashing-commits-with- rebase.html

于 2012-12-06T07:23:36.643 に答える
1

単純に変更をコミットし、自宅で (プルした後) 最後のコミットを元に戻します:

git reset HEAD^

しかし、強制プッシュ ( ) を行う必要があり、push -f他の誰かがこのブランチで作業している場合、問題が発生します。これには 2 つの解決策があります。

  1. 別のブランチにコミットします。

    git checkout -b my-temp-branch
    git commit -am "dirty state"
    git push origin my-temp-branch
    

    次に、自宅で正しいブランチをチェックアウトし、それを一時ブランチに移動し、最後のコミットを元に戻し、一時ブランチを削除します。

    git checkout **branch**
    git pull origin my-temp-branch
    git reset HEAD^
    git push --delete origin my-temp-branch
    
  2. 別のリポジトリにコミットします。中央リポジトリに一時ブランチを散らかしたくない場合は、github に独自のリポジトリを作成し (企業コードについて話している場合はプライベート)、別のリモートとして設定し、ステップ 1 と同じことを行います。

    git remote add private **repo**
    

    これは一度行う必要があり、家に帰ったら:

    git commit -am "dirty state"
    git push private **branch**
    

    次に、自宅で、プライベート リポジトリからプルしてダーティ コミットをリセットするだけです。

    git checkout **branch**
    git pull private **branch**
    git reset HEAD^
    
于 2012-12-06T07:45:14.240 に答える
0

Git は分散型のリビジョン管理とソース コードです。

そのため、変更を行っても最終コミットの準備ができていない場合はいつでも、全体を元に戻すことを避けて作業を開始するには、新しいブランチに切り替えて作業をコミットします。

git checkout -b <new-branch>
git add .
git commit 

これを確認してください:既存のコミットされていない作業を Git の新しいブランチに移動する

于 2012-12-06T07:25:26.537 に答える