63

リポジトリのクローンを作成しましたが、リポジトリ内のmasterブランチが追跡していorigin/masterます。アプリを機能させるために、ブランチを作成しwork、開発マシンに固有のいくつかの構成ファイルを変更しました。

私の通常のワークフローは、ブランチに切り替え、ブランチで行われた変更とそれらの変更をアップストリームmasterにマージすることです。問題は、特定の変更がプッシュされたくないということです。ブランチをこれらの変更にマージすると、変更もマージされます。workpushworkmaster

私がこれまでに見つけた唯一の解決策は、それらの変更をコミットしないことですworkが、それは満足のいく解決策ではありません。

4

4 に答える 4

83

これらのローカル構成ファイルのコミット(したがってプッシュも)を防ぎたい場合は、gitupdate-index--assume-unchangedを使用できます。このフラグでマークされたファイルは、変更されないと見なされます(--no-assume-unchangedでフラグをリセットするまで)

于 2010-01-31T23:23:45.937 に答える
8

ファイルがまだ追跡されていない場合は、ローカルリポジトリの.gitignoreファイルに追加できます。それ以外の場合は、git update-index --assume-unchangedMauricioが言ったように使用する必要があります。

.gitignoreファイルの詳細は次のとおりです。

http://git-scm.com/docs/gitignore

于 2010-01-31T23:32:24.460 に答える
6

これを解決する1つの方法は、アップストリームにプッシュする前に、作業ブランチからマスターに各変更を「チェリーピック」することです。ローカルでの変更のみのコミットメッセージにNOCOMMITのような単語を含めてから、次のようなシェルスクリプトを使用する手法を使用しました。

#!/bin/sh

BRANCH=`git branch | grep ^\\* | cut -d' ' -f2`
if [ $BRANCH != "master" ]; then
  echo "$0: Current branch is not master"
  exit 1
fi

git log --pretty=oneline work...master | grep -v -E '(NOCOMMIT|DEBUG):' | cut -d' ' -f1 | tac | xargs -l git cherry-pick

このチェリーは、NOCOMMIT(またはDEBUG)でマークされていない各変更をマスターブランチに選択します。

于 2010-01-31T23:20:18.273 に答える
1

必要なのは.gitignoreファイルであり、すべての構成ファイルを.gitignoreファイル内に追加します。

.gitignoreファイルの準備ができたら、キャッシュから構成ファイルを削除する必要がある場合があります

コマンドは次のとおりです。

(Assume you use linux)
vi .gitignore
//Add all your config file inside

//run the following command to remove your config file from GIT cache if your config files is already track by GIT

git rm --cached myconfig.php
于 2010-12-21T04:02:09.720 に答える