"--global"つけなければ、リポジトリローカルに設定できるらしいdnf install -y git git config --global user.email "メールアドレス" git config --global user.name "名前"
mkdir test.git git init --bare test.git git config --global init.defaultBranch main git branch -m main
git clone test.git
cd test git add a.txt git commit -m 'initial import'
git push
git log
リポジトリの同期git clone --mirror //nasorg/folder/test.git
コンフリクトはベアじゃないリポジトリで行う。git fetch -p origin git push --mirror
originが無いので、originを作成するgit remote -v
origin確認git remote add origin /c/current_repo
origin変更git remote -v origin c:/current_repo (fetch) origin c:/current_repo (push)
origin確認git remote set-url origin //nas_name/repo.git
pushするgit remote -v origin //nas_name/repo.git (fetch) origin //nas_name/repo.git (push)
git push -u origin main
cloneしてみる$ mkdir //nas_name/git/test $ git init --bare //nas_name/git/test Initialized empty Git repository in //nas_name/git/test/ $ git remote -v 何も表示されない mike@bmxps13 MINGW64 /c/data/trunk/test (master) $ ls test.txt ファイルが1個入っている。(ローカルリポジトリにaddしてコミット済) $ git status On branch master nothing to commit, working tree clean $ git remote add origin //nas_name/git/test $ git remote -v origin //nas_name/git/test (fetch) origin //nas_name/git/test (push) Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Writing objects: 100% (3/3), 211 bytes | 211.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 To //nas_name/git/test * [new branch] master -> master Branch 'master' set up to track remote branch 'master' from 'origin'.
$ mkdir tmp $ cd tmp $ git clone //nas_name/git/test Cloning into 'test'... done. $ ls test/ $ ls test test.txt
remote URLを変更する$ git remote -v origin http://mainpc:8080/git/mike/SimpleComm.git (fetch) origin http://mainpc:8080/git/mike/SimpleComm.git (push)
変更したremote URLを確認する$ git remote set-url origin https://github.com/githubusername/reponame.git
pushする。が、失敗。$ git remote -v origin https://github.com/githubusername/reponame.git (fetch) origin https://github.com/githubusername/reponame.git (push)
pushする$ git push -u origin master error: src refspec master does not match any error: failed to push some refs to 'https://github.com/githubusername/reponame.git'
$ git push -u origin main Enumerating objects: 145, done. Counting objects: 100% (145/145), done. Delta compression using up to 8 threads Compressing objects: 100% (138/138), done. Writing objects: 100% (145/145), 5.22 MiB | 2.34 MiB/s, done. Total 145 (delta 83), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (83/83), done. To https://github.com/githubusername/reponame.git * [new branch] main -> main Branch 'main' set up to track remote branch 'main' from 'origin'.
git config core.filemode false
git config -l | grep filemode
■クローンgit init --bare sample.git
■ブランチの一覧git clone //servername/sample.git
■ブランチの作成git branch -a
■ブランチの切り替えgit checkout -b ブランチ名
もしこの時'detached HEAD'みたいな表示が出た場合git checkout ブランチ名
■pushgit switch -c 新ブランチ名
■pushおこられgit push
言われる通りやる。ブランチ名まで全てコピペで良い。git push fatal: The current branch emulator has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin ブランチ名
次回からはgit pushだけでいける。git push --set-upstream origin ブランチ名
■pullおこられ1git pull
git pull There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details. git pull <remote> <branch> If you wish to set tracking information for this branch you can do so with: git branch --set-upstream-to=origin/<branch> Emulator
メッセージ翻訳「ブランチ 'Emulator' は 'origin' からのリモートブランチ 'Emulator' を追跡するように設定されました。」git branch --set-upstream-to=origin/Emulator Emulator Branch 'Emulator' set up to track remote branch 'Emulator' from 'origin'.
git fetch 最新版をリモートから取得。pullすればfetch+merge出来るが、いざというとき大変らしい git merge origin/master リモートから取得した最新にマージする。 git checkout -b develop ブランチ作成。この場合はmasterからのブランチになる。作業途中でもブランチ作成可能 vi hello.c ファイル編集 git diff ファイルの変更確認 git add hello.c ここらはTortoiseGitでやっても良い git commit -a -m 'hello -> goodbye' TortoiseGitなら日本語入力とか改行とか楽 git checkout master git merge dev git push
基本 | git status | ステータス表示。何すれば良いか教えてくれる。結構便利。 |
リポジトリ | git init | リポジトリの作成(カレントディレクトリをリポジトリにする) |
リポジトリ | git init --bare %repos | リポジトリの作成%reposというリポジトリ(フォルダ)を作成する。 |
リポジトリ | git clone %repository | %repositoryを複製 この時//machinaname/tmp/repo.git みたいに書くと共有リポジトリを指定可能。 |
リポジトリ | git clone --bare %repository %directory | 共有用リポジトリを作成。%repositoryを%direcotoryへ複製 --bareを付けないと共有出来ない |
ブランチ | git branch -a | すべてのブランチを表示 |
ブランチ | git checkout -b %branch | %branchを作成して切り替え この時ローカルのファイルは変更されない★この挙動がポイント |
ブランチ | git checkout %branch | %branchへ切り替え |
ブランチ | git checkout %tagname | %タグへ切り替え ★この時'detached HEAD'状態になり、全てのブランチから独立した状態になる。 'git checkout -b newbranch'でブランチを作り、後でマージする。 |
ブランチ | git branch -d %branch | %branchを削除する |
ステージ | git add %file | ステージに追加 |
ステージ | git rm --cached %file | ステージから削除 |
ステージ | git rm %file | ファイルを削除し、削除情報をステージに追加 |
マージ | git merge --no-ff %branch | %branchをHEADへマージする --no-ffを付けないと後でマージの追跡が出来なくなるので★必ず★付ける。 |
リモートリポジトリ | git push | |
リモートリポジトリ | git fetch | |
リモートリポジトリ | git merge | |
リモートリポジトリ | git pull %remote %branch git pull origin %branch | リモートリポジトリをアップデートする。originはclone時自動で付くらしい %branch省略するとmasterになる?のか? |
リモートリポジトリ | git remote -v | リモートの詳細 |
リストア | git restore . | カレントディレクトリの変更を戻す https://tracpath.com/docs/git-restore/ |
リセット | git reset --hard HEAD | 変更を全て破棄してチェックアウトした状態に戻す git reset についてもまとめてみる - murankの日記 |
コミット | git commit -a | エディタが起動して、コミットメッセージを編集出来る |
コミット | git commit -a -m 'message' | コミットメッセージを指定してコミット |
コミットまとめ | git log --oneline --decorate | コミットログを表示 |
コミットまとめ | git rebase -i HEAD~2 | HEAD含めて2個のコミットをまとめる。 この後表示されるエディタで削除したいメッセージをfにする。 |
タグ | git tag | タグ一覧 |
タグ | git tag -a %tagname -m '%tagtext' | 今のコミットに対してタグをつける |
掃除 | git clean -fX -d | ignoreファイルのみ削除。フォルダも削除。 |
掃除 | git clean -fx -d | トラッキングしているファイル以外全て削除。フォルダも削除。 |
操作 | clone | pull | fetch | init | checkout |
ダウンロード | ○ | ○ | ○ | — | — |
展開 | ○ | ○ | — | — | ○ |
ディレクトリ作成 | ○ | — | — | ○ | — |
操作 | Git(初心者) | Git(中級者) | アーカイブファイル |
ディレクトリ作成 | git clone... | git init | mkdir arc |
ダウンロード | — | git fetch | wget -O arc/xxx.tar.gz http://... |
展開 | — | git checkout | tar zxvf arc/xxx.tar.gz |
git remote add origin %repository | リモートリポジトリに名前を付ける。この場合はorigin |
git init
git status
git add *.c
git rm --cached hello.c
git rm hello.c
Author identity unknown *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'root@op1.(none)')
git commit -m 'initial project version'
-m | コマンドラインでコミットメッセージ指定 |
git commit -a -m 'added new file'
-a | トラッキングしているファイルを自動でステージ(add)する。 |
2個まとめる。$ git log --oneline --decorate 28247f5 (HEAD, master) mata wasureta 78a0314 wasureta 399216f initial import
エディタが起動し、こんな風に表示されたりする。git rebase -i HEAD~2
まとめ方その1(squash)pick 78a0314 wasureta pick 28247f5 mata wasureta
まとめ方その2(fixup)pick 78a0314 wasureta s 28247f5 mata wasureta
fixupした後のログpick 78a0314 wasureta f 28247f5 mata wasureta
3個まとめる。$ git log --decorate --oneline e285904 (HEAD, master) wasureta 399216f initial import
こうすると、こんなかんじにエディタ表示されるのでgit rebase -i HEAD~3
下の2個をsにして保存終了。pick xx pick xx pick xx
もう一回エディタが表示されるので、そこでまとめたコミットログを書く。pick xx s xx s xx
git rebase --abort
git tag
git tag -a rev1 -m 'revision 1'
$ git status # On branch master nothing to commit (working directory clean)
git log git log --oneline --decorate
--oneline | 一行表示 |
--decorate | これを付けないとタグ表示しない... |
↑はこれと同等git checkout -b testing
git branch testing git checkout testing
git branch testing
git branch -d testing
git branch
git checkout -- <file>
git commit --amend
共有リポジトリを複製git clone --bare /c/data/testproject /c/shared/repos/project.git
git clone /c/shared/repos/project.git
git pushできない - 橋本詳解receive.denyCurrentBranch
git config --add receive.denyCurrentBranch ignore
Git で複数のリポジトリをまとめたり、逆に切り出したりするcd test git remote add repo2 //server/folder/test git fetch repo2 git merge repo2/master
エディタ設定で起動時にUTF-8N(BOM)無しにしている。git config --global core.editor "'C:/tools/bin/k2e/K2Editor.exe' //on"
ユーザーの設定<U+FEFF>日本語メッセージテスト
git config --global user.email "you@example.com" git config --global user.name "Your Name"
export GIT_PAGER="nkf -W -s | less"
もしくは、こうするとsample.gitフォルダを作りつつ、リポジトリを作ってくれる。md C:\Git\repos\sample.git cd C:\Git\repos\sample.git git init --bare
こんな感じでバッチファイル作成git init --bare sample.git
リモートからはこんな感じで"C:\Program Files (x86)\Git\cmd\git.cmd" daemon --verbose --export-all --enable=receive-pack --base-path=C:/Git/repos
git ls-remote git://サーバ名/sample.git
で、結局サーバー動作うまくいかなかったので、やめた...orzlaunchctl load com.git-run-daemon-run.plist launchctl list | grep git launchctl unload com.git-run-daemon-run.plist