gitを使って作業をしているのですが、本来であればignoreされているファイルをコミットに含めてpushしてしまいました。
不必要なファイルのみリモートから削除することは可能でしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
こんにちは。
当該のファイルに対する削除コミットを使う手もあるかと思います。具体的な手順は以下です。
(1) .gitignore
に追記する前にプッシュしてしまったファイルの、ローカル(手元)での最新版をどこか git レポジトリ以外のところ( /tmp など)にコピーしておく。
(2) 手元のレポジトリで、①そのファイルを削除し、②.gitignore
にそのファイルを追記する、という①②を行って(他のファイルの修正もあれば、それも適宜含めて)コミット、プッシュする。(①のコマンドは git rm -f <ファイル名>
)
(3) 上記 (1) でどこかにコピーしておいた当該ファイルを、レポジトリに再度コピーする。
(4) 当該ファイルに修正を加えても、git status
で変更されたファイルとして認識されていないことを確認
以下は上記を使った簡単な事例のログです。
- あるレポジトリに、ファイル
a.txt
、b.txt
、c.txt
の3点があり、これがGit管理下にあり、origin/master にプッシュされた直後です。この時点では、.gitignoreはありません。
shell
1[q146422 (master)]$ ls -a 2. .. .git a.txt b.txt c.txt 3[q146422 (master)]$ git status 4On branch master 5Your branch is up to date with 'origin/master'. 6 7nothing to commit, working tree clean 8[q146422 (master)]$ git log 9commit y6hgt6730okhf45(・・・略) (HEAD -> master, origin/master) 10Author: jun68ykt <jun68ykt> 11Date: Thu Sep 13 20:34:43 2018 +0900 12 13 initial commit 14
- 3つのファイルを変更します。以下では、各ファイルに
hello
の1行を追記したので、git status
でみると、ステージされていない変更ファイルとして3つのファイルすべてが表示されています。
shell
1[q146422 (master)]$ echo "hello" >> a.txt 2[q146422 (master)]$ echo "hello" >> b.txt 3[q146422 (master)]$ echo "hello" >> c.txt 4[q146422 (master)]$ git status 5On branch master 6Your branch is up to date with 'origin/master'. 7 8Changes not staged for commit: 9 (use "git add <file>..." to update what will be committed) 10 (use "git checkout -- <file>..." to discard changes in working directory) 11 12 modified: a.txt 13 modified: b.txt 14 modified: c.txt 15 16no changes added to commit (use "git add" and/or "git commit -a")
- ここで
b.txt
だけは Git の管理下から外したいとします。b.txt
を /tmp にコピーしたあと、git rm
で削除します。
shell
1[q146422 (master)]$ cp -p b.txt /tmp 2[q146422 (master)]$ git rm -f b.txt 3rm 'b.txt'
- .gitignore を作成します。(以下では、
b.txt
のみを含む.gitignoreをコマンドラインから作成していますが、もちろんエディタを使って編集してかまいません。)
shell
1[q146422 (master)]$ echo 'b.txt' > .gitignore 2[q146422 (master)]$ git status 3On branch master 4Your branch is up to date with 'origin/master'. 5 6Changes to be committed: 7 (use "git reset HEAD <file>..." to unstage) 8 9 deleted: b.txt 10 11Changes not staged for commit: 12 (use "git add <file>..." to update what will be committed) 13 (use "git checkout -- <file>..." to discard changes in working directory) 14 15 modified: a.txt 16 modified: c.txt 17 18Untracked files: 19 (use "git add <file>..." to include in what will be committed) 20 21 .gitignore 22
- すべての変更をコミットしてプッシュします。
shell
1[q146422 (master)]$ git add *.txt 2[q146422 (master)]$ git add .gitignore 3[q146422 (master)]$ git status 4On branch master 5Your branch is up to date with 'origin/master'. 6 7Changes to be committed: 8 (use "git reset HEAD <file>..." to unstage) 9 10 new file: .gitignore 11 modified: a.txt 12 deleted: b.txt 13 modified: c.txt 14 15[q146422 (master)]$ git commit -m '2nd commit' 16[master b6200f0] 2nd commit 17 4 files changed, 3 insertions(+), 1 deletion(-) 18 create mode 100644 .gitignore 19 delete mode 100644 b.txt 20[q146422 (master)]$ git push 21Counting objects: 5, done. 22Delta compression using up to 4 threads. 23Compressing objects: 100% (2/2), done. 24Writing objects: 100% (5/5), 343 bytes | 343.00 KiB/s, done. 25Total 5 (delta 0), reused 0 (delta 0) 26To github.com:jun68ykt/q146422.git 27 46086d7..b6200f0 master -> master
- /tmp にコピーしておいた
b.txt
を再度コピーしてレポジトリに戻し、修正を加えてから、git diff
やgit status
を実行しても、b.txt
は表示されなくなりました。
shell
1[q146422 (master)]$ cp -i /tmp/b.txt . 2[q146422 (master)]$ echo "good night" >> b.txt 3[q146422 (master)]$ git status 4On branch master 5Your branch is up to date with 'origin/master'. 6 7nothing to commit, working tree clean 8[q146422 (master)]$ git diff 9[q146422 (master)]$ 10
以上参考になれば幸いです。
投稿2018/09/13 12:17
総合スコア9058
0
プッシュしたものを取り消してやり直せば良いかと思います。
下記が参考になりそうです。
http://tweeeety.hateblo.jp/entry/2015/06/10/215753
投稿2018/09/13 09:33
総合スコア443
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。