1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカルにGitサーバーを作りVSから直接操作する手順(自分用メモ)

Last updated at Posted at 2025-05-04

1.Gitローカルリポジトリの作成

(1) Gitを管理するフォルダを決める

  • 複数人で共有する場合、当然ネットワークドライブにする
ネットワークドライブのGit用ディレクトリ
/srv/git/myproject.git
mkdir -p /srv/git/myproject.git
cd /srv/git/myproject.git
git init --bare

(2) Gitで管理したいVSのソリューションに .gitignore を追加

  • .vs や obj など、Gitでは管理したくないフォルダやファイルを無視するために最初に必要
  • .gitignore を .slnと同じ階層に保存

image.png

  • 最低限の .gitignore
.vs/
bin/
obj/
*.user
*.suo

(3) VSで作成したソリューションを登録

① VSのソースフォルダでGit初期化(作業ツリーあり)

VSのソースフォルダ
D:\Dev\WinFormsApp1
cd D:\Dev\WinFormsApp1
git init
git add .
git commit -m "初回コミット"

git add . の "."を忘れずに

② bareリポジトリをリモートとして登録

git remote add origin /srv/git/myproject.git

③ 初回プッシュ

git push -u origin master

④ 念のために初回プル

git pull --rebase origin master

2. 別の利用者からのGitリポジトリ共有方法

別の利用者のローカルなVSのソースフォルダ
D:\MyFolder\WinFormsApp1
git clone /srv/git/myproject.git D:\MyFolder\WinFormsApp1

クローンが作成される

3.VSからのGit利用

(1) これまでの手順でオリジナル、別の利用者ともに自動でGit管理される

image.png

(2) ソースを修正したらコミット

image.png

(3) サーバーと同期

image.png

image.png

4.Gitリポジトリのバックアップ

  • 別のファイルサーバーへ履歴も含め完全コピーする
robocopy "\\srv01\GitRepos\MyApp.git" "\\自社NAS\GitBackup\MyApp.git" /MIR /Z /R:1 /W:1
オプション 意味
/MIR ミラーリング:コピー元と同じ構造にする(※削除も反映)
/Z 再起動後でも再開できる「中断可能なコピー」モード
/R:1 コピー失敗時のリトライ回数(1回だけ再試行)
/W:1 リトライ時の待機秒数(1秒)

5.修正が競合したらどうなるか?

(1) あえて同じファイルを修正します。

public partial class Form1 : Form
{
    private string _name = "GitTest1111111111111";

    public Form1()
    {
        InitializeComponent();
    }
}
public partial class Form1 : Form
{
    private string _name = "GitTest22222222222";

    public Form1()
    {
        InitializeComponent();
    }
}

(2) 先にGitTest1111111111111をコミットしてサーバーと同期

image.png

image.png

(3) つづいてGitTest22222222222をコミットしてサーバーと同期

image.png

サーバーと同期したタイミングで競合が検出される

image.png

(4) 人間が判断してマージエディターで競合を修正

マージエディターを開く
image.png

一例として、GitTest22222222222側を優先し「マージを許可」

image.png

(5) 許可したマージをコミットしサーバーと同期

image.png

image.png

これで競合は解決!

6.おまけ(Gitの最新をSVNへ同期する方法)

(1) Gitの最新版をワークツリーにチェックアウト

@echo off
REM 一時作業用フォルダ
set WORK=C:\GitTemp\MyApp
set REPO=\\srv01\GitRepos\MyApp.git

if exist %WORK% rd /s /q %WORK%
git clone %REPO% %WORK%

(2) SVNの作業コピーを更新

set SVNWC=C:\SVNWork\MyApp
set SVNR=https://svn-server/repos/MyApp

if not exist %SVNWC% (
    svn checkout %SVNR% %SVNWC%
)

xcopy /E /Y /Q %WORK%\* %SVNWC%\

(3) SVNコミット(差分のみ)

cd %SVNWC%
svn add * --force
svn commit -m "Git最新版をデイリー同期"
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?