20200724のGitに関する記事は7件です。

Xcode11でerror: invalid object 100644 が出たとき

状況

いつも通りcommitしようとしたらこのようなエラーが出た
image.png

やったこと

①ググった

「error: invalid object 100644」でググったところ、この記事がヒットした
https://stackoverflow.com/questions/33053917/xcode-7-created-new-branch-commit-fails

質問者の方はいろんなサイトにこの質問を投げかけたけど有効な回答は得られたなったみたい
だけど、ローカルのXcodeプロジェクトを削除した後に最新のリポジトリを複製して、変更点だけをまた書き換えたらいけたらしい

②やってみる

プロジェクトが消滅するのを予防するために圧縮しておきます
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3534303137382f32353738653133662d386664622d666633332d663239382d3634666136613366353336302e706e67.png

複製しました

いろいろ変更しました

で、全て置き換えました

③いけた

いけました

最後に

最後の方めっちゃ雑になっちゃってすいません
出すかどうか迷ったんですけど、記事が圧倒的に少なかったので一応あげておきます
参考になったら幸いです

環境

Xcode11.6(11E708)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

git tagをすべて削除する

以下を実行するとローカル・リモートすべてのタグを削除する

#Delete local tags.
git tag -d $(git tag -l)
#Fetch remote tags.
git fetch
#Delete remote tags.
git push origin --delete $(git tag -l) # Pushing once should be faster than multiple times
#Delete local tags.
git tag -d $(git tag -l)

Source: https://gist.github.com/okunishinishi/9424779

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GitHubで複数アカウントを使い分けることに手こずったらみる記事

GitHubで複数アカウントを使い分けようとしたら、どの記事も小出しにしか情報を出していなかったため
(初心者なので全部教えてもらわないとできないため)
包括的にまとめます。

今後はSSHでアクセスしようと覚悟を決める

あれです。git cloneとかするとき、何も考えずHTTPSでやってたアクセス方式です。
スクリーンショット 2020-07-24 21.37.53.png

これからは、「Use SSH」ボタンをクリックして、SSH接続しましょう。

SSHとは?

そもそもHTTPSとSSHの違いは何でしょうか。

この問題は、HTTPSはHTTPというテキストデータをSSLという暗号技術によってセキュアにしていることから(HTTPS←HTTP+SSL)、SSLとSSHの違いに置き換えることができます。
←初心者はそもそもここからわからない。しかもSSLとSSHの名前似すぎ。

これに関しては、以下の記事などで詳しく書かれています。
- ここが違うよSSHとSSL! - Qiita
- 「SSL」と「SSH」の違い|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

SSHの鍵を作成し、GitHubに登録する

SSH鍵の作成方法について、色々な方がまとめてくださっています。
個人的に一番わかりやすかったのは以下の記事です。

補足として、SSH鍵自体はGitHub以外でも使うことがあるらしいので、ターミナルで作成することができます。
作成されるとホームディレクトリ(ターミナル立ち上げ時のカレントディレクトリ)に「.ssh」という隠しファイルができます。
この中にある「config」というのがとてつもなく大事なファイルです。
もし、2つのアカウント(仕事用とプライベート用)を使い分けたいのであれば、以下の構成がおすすめです。

.ssh/
 ┣config
 ┣private/
    ┣id_rsa
    ┗id_rsa.pub
 ┗job/
    ┣id_rsa
    ┗id_rsa.pub

上記リンクの補足として、ssh鍵をコピーするときは=mail@hoge.comのイコールマークまでコピーしましょう。

sshキー情報を.ssh/configに設定する

次のステップは、以下の記事が秀逸です。
- 一つのPC上で複数のgitアカウントをうまいこと使い分ける | 前菜の備忘録

configファイルの変更は、私の場合ターミナルでvimコマンドで編集しました。
vimにまだ慣れていない方は、ググってみてください。とりあえずiとwq使えばなんとかなります。

% vim ~/.ssh/config

以下のように設定しました。

Host github github.com
  HostName github.com
  User git
  Port  22
  IdentityFile ~/.ssh/git_job/id_rsa
  TCPKeepAlive yes
  IdentitiesOnly yes

Host github-sub github-sub.com
  HostName github.com
  User git
  Port 22
  IdentityFile ~/.ssh/git_private/id_rsa
  TCPKeepAlive yes
  IdentitiesOnly yes

私の場合は「IdentityFile」のスペルが違ってずっと接続できませんでした…

接続の確認

以下のsshコマンドで、正しくGitHubと両アカウントが接続できるか確認できます。

# メイン
$ ssh -T git@github.com
# サブ
$ ssh -T git@github-sub.com

以下のように表示されれば、一見ダメなように見えますが大丈夫です。

Hi (User ID)! You've successfully authenticated, but GitHub does not provide shell access.

GitHubで操作!

以上で複数アカウントを使い分けることができますが、以下のように操作時のコマンドを変えないといけません。
以下のように、サブアカウント(プライベート用アカウント)を利用する場合はgit@以下をgithub-subとする必要があります。

# メイン
$ git remote add origin git@github:<ACCOUNT_NAME>/<YOUR_REPSITORY>.git
# サブ
$ git remote add origin git@github-sub:<ACCOUNT_NAME>/<YOUR_REPSITORY>.git

後は以下の記事の要領で、git configを変更しておけばOKです。

それでもエラーが出る場合

上記手順で上手くいかなかった場合、以下の記事が参考になるかもしれません。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Git]基本操作一覧

概要

Git操作について、備忘録様に記します。

操作一覧

リポジトリを作成する

git init

ファイルやディレクトリをインデックスに保存

git add <ファイル名>
  • -p オプション ファイルの変更箇所の一部を保存
  • -i オプション インデックスに登録するファイルを対話的に検索 

インデックスに追加したファイルをコミットする

git commit
  • -a オプション 変更されたファイルを検出してインデックスに追加してコミット
  • -m オプション コミットメッセージを指定してコミット

変更されたファイルの一覧を表示

git status

変更されたファイルの差分を確認

git diff

コミットログを確認

git log
  • 特定のファイルをみたい場合はファイル名を指定

ファイルやディレクトリ名を変更、移動

git mv <古いファイル名> <新しいファイル名>

ファイルを削除

git rm <ファイル名>

管理対象ではないファイルの削除

git clean

手元で変更したインデックスに登録されていないファイルを元に戻す

git checkout -- <ファイル名>

インデックスに登録したファイルを取り消す

git reset HEAD -- <ファイル名>

以前コミットしたファイルだけをインデックスに登録

git add -u
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Windows10】TortoiseGitを基本的な機能を使ったみた。part2

【開発環境】

Windows 10 HOME

Git-2.27.0-64-bit
TortoiseGit 2.10.0.2 - 64-bit

【目次】

  項目     
- はじめに
- git branch
- git ckeckout
- 最後に
- 参考

はじめに

前回はgit clone,git push を行いましたが
今回はgit ckeckout,git branch あたりをやっていこうと思います。

違っている箇所等があれば指摘してください。

【前提条件】
・githubに登録済で「sample2」リポジトリを作成してtest.text がある。

・デスクトップに「sample2」のフォルダがある。

git branch

ローカルで自分専用の作業ルートを別に作るみたいな感じです。
個人的にはこのbranchがgit を使う中でkeyにになっている気がします。

branch = (木の)枝と考えればイメージ付きやすいのでないでしょうか。

1.png

「sample2」フォルダを右クリック → TortoiseGit → ブランチを作成

2.png

新しいブランチ名を入力し、
新しいブランチで作業する場合は、「新しいブランチに切り替える(S)」にチェックする
内容を確認し「OK」

3.png

一旦 「閉じる」を押下。

4.png

test.textファイルに青部分の「20200724 1320 edit」を追記します。

6.png

「sample2」フォルダを右クリック → Gitコミット

7.png

コミット先 : sample2_branch である事を確認。
メッセージ : sample2_branch と入力。
text (青文字) :ダブルクリックすると修正した差分が確認出来ます。

内容を確認して「コミットしてプッシュ」。

7_2.png

ローカル名 : sample2_branch
リモート  : 空白時はローカル名が反映されます。
        別名にする時のみ入力。

8.png

閉じる。

9.png

反映先のgithubをブラウザで見てみると先ほど
ブランチのプルダウンに「sample2_branch」が出来ているので選択。

10.png

確かに修正したtest.textファイルに
「20200724 1320 edit」と追記されています。

git ckeckout

ブランチの変更です。

作業用通路の変更みたいな感じで、このブランチの切り替えを行うと
修正したファイルの中身がそのブランチ毎に変わると考えれば
イメージしやすいのではないでしょうか?

1.png

「sample2」フォルダを右クリック → TortoiseGit → 切り替え/チェックアウト

2.png

さっきまではブランチが「sample2_branch」で作業していたので
「master」に変更してみます。

そして「OK」

3.png

閉じる。

4.png

その後、「test.text」を開いてみると
「sample2_branch」のブランチで追記した部分がありません。

確かにブランチの切り替えが出来ているようです。

最後に

git に限らず自分の言葉や他の人に分かるように例えやイメージで説明出来れば
自分自身の理解も深まるのではないでしょうか?
(私自身出来ているかどうかは不明。。)

参考

【Git】オレならこう説明する!Git初心者への用語説明

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

CentOS7にGit2系をyumでインストール

やりたいこと

CentOS7で普通にyumでGitをインストールすると、1.8系がインストールされます。
2系をインストールしたくていくつかのサイトを検索したのですが、書かれたままの方法だと実現できなかったので、記録のために残します。

環境

CentOS 7.8

インストール

IUSリポジトリを登録

まず、IUSリポジトリを登録します。
検索した記事だと以下のコマンドがよく書かれているのですが、Cannot open で上手くいきませんでした。

# yum -y install https://centos7.iuscommunity.org/ius-release.rpm
Loaded plugins: fastestmirror
Cannot open: https://centos7.iuscommunity.org/ius-release.rpm. Skipping.
Error: Nothing to do

IUSのサイトを開き、セットアップ手順通りに実施したところ、上手くいきました。
https://ius.io/setup

# yum install \
https://repo.ius.io/ius-release-el7.rpm \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

Gitのインストール

それではGitをインストールします。
以下のコマンドでインストールしようとしたところ、依存関係のエラーが出ました。

# yum install git --enablerepo=ius --disablerepo=base,epel,extras,updates
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package git224.x86_64 0:2.24.2-1.el7.ius will be installed
--> Processing Dependency: perl-Git = 2.24.2-1.el7.ius for package: git224-2.24.2-1.el7.ius.x86_64
--> Processing Dependency: git-core-doc = 2.24.2-1.el7.ius for package: git224-2.24.2-1.el7.ius.x86_64
--> Processing Dependency: git-core = 2.24.2-1.el7.ius for package: git224-2.24.2-1.el7.ius.x86_64
--> Processing Dependency: emacs-filesystem >= 24.3 for package: git224-2.24.2-1.el7.ius.x86_64
--> Processing Dependency: perl(Term::ReadKey) for package: git224-2.24.2-1.el7.ius.x86_64
--> Processing Dependency: perl(Git::I18N) for package: git224-2.24.2-1.el7.ius.x86_64
--> Processing Dependency: perl(Git) for package: git224-2.24.2-1.el7.ius.x86_64
--> Processing Dependency: libsecret-1.so.0()(64bit) for package: git224-2.24.2-1.el7.ius.x86_64
--> Running transaction check
---> Package git224.x86_64 0:2.24.2-1.el7.ius will be installed
--> Processing Dependency: emacs-filesystem >= 24.3 for package: git224-2.24.2-1.el7.ius.x86_64
--> Processing Dependency: perl(Term::ReadKey) for package: git224-2.24.2-1.el7.ius.x86_64
--> Processing Dependency: libsecret-1.so.0()(64bit) for package: git224-2.24.2-1.el7.ius.x86_64
---> Package git224-core.x86_64 0:2.24.2-1.el7.ius will be installed
--> Processing Dependency: libpcre2-8.so.0()(64bit) for package: git224-core-2.24.2-1.el7.ius.x86_64
---> Package git224-core-doc.noarch 0:2.24.2-1.el7.ius will be installed
---> Package git224-perl-Git.noarch 0:2.24.2-1.el7.ius will be installed
--> Processing Dependency: perl(Error) for package: git224-perl-Git-2.24.2-1.el7.ius.noarch
--> Finished Dependency Resolution
Error: Package: git224-2.24.2-1.el7.ius.x86_64 (ius)
           Requires: emacs-filesystem >= 24.3
Error: Package: git224-2.24.2-1.el7.ius.x86_64 (ius)
           Requires: libsecret-1.so.0()(64bit)
Error: Package: git224-2.24.2-1.el7.ius.x86_64 (ius)
           Requires: perl(Term::ReadKey)
Error: Package: git224-perl-Git-2.24.2-1.el7.ius.noarch (ius)
           Requires: perl(Error)
Error: Package: git224-core-2.24.2-1.el7.ius.x86_64 (ius)
           Requires: libpcre2-8.so.0()(64bit)
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

以下のコマンドで依存パッケージも含めてインストールします。

# yum install git224-2.24.2-1.el7.ius.x86_64

途中でkeyのインストールが聞かれるので y を押します。

 Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-IUS-7
Importing GPG key 0x4B274DF2:
 Userid     : "IUS (7) <dev@ius.io>"
 Fingerprint: c958 7a09 a11f d706 4f0c a0f4 e558 0725 4b27 4df2
 Package    : ius-release-2-1.el7.ius.noarch (@/ius-release-el7)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-IUS-7

is this ok [y/N]:

インストールが成功しました。バージョンを確認します。

# git version
git version 2.24.2

IUSリポジトリを無効にしたい場合は、以下のコマンドを実行します。

# yum-config-manager --disable ius
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Git 公式マニュアル

HEADって何? reset て何?

分からないことがある度、Googleで検索するものの、なかなかピッタリのサイトが見つからない事が多い。公式マニュアルは難しと思い敬遠していましたが、以外と分かりやすく、びっくりしたので、興味のある方は是非、ご覧になってください。
https://git-scm.com/book/ja/v2

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む