Git 局域网简单配置

本文详细介绍了如何使用Git进行版本控制,包括创建版本库、提交更改、远程仓库同步等操作步骤。


Git核心:http://code.google.com/p/msysgit/downloads/list?q=full+installer+official+git
TortoiseGit :http://code.google.com/p/tortoisegit/

首先,在服务器创建一个文件夹用于存放你要公开的版本库。
然后进入这个文件夹,右键->Git create repository here,弹出的窗口中勾选Make it Bare!
之后将这个文件夹完全共享(共享都会吧?注意权限要让使用这个文件夹的用户为“完全控制”)。


在客户机打开我的电脑,点“映射网络驱动器”
之后找到服务器刚才共享的文件夹,驱动器自己选择,我选择了X:,勾上“登录时重连接”。
完成后,打开X盘看一下,是不是能看到文件了?那就说明映射成功了!
然后到项目文件夹(假设已经创建好了本地的版本库了),
点右键->TortoiseGit->Settings,
左边找到Remote(这项是针对版本库的,没有这项,说明你没有在当前文件夹创建版本库,
                那就先Git create repository here,这时就不要Make it Bare了,因为这是客户机。),
在这个窗口中Remote项是名字,随便起一个填上吧。
URL是更新路径,这里填上刚才映射下来的盘符,比如x:,
第三项留空(私钥路径,如果你用SSH就需要填写)。


commit 还是在本地,没有到服务器
Push  提交到服务器
Pull  从服务器得到          

Setting--Git--Remote:
    Remote:test
    Url:C:/Git    (repository路径)  网路上的:https://github.com/username/repositoryName.git
    
提交服务器:
local branch: master             Remote branch: master
Remote URL: test

$ git config --global user.name "defnngj"//给自己起个用户名
$ git config --global user.email  "defnngj@gmail.com"//填写自己的邮箱

git add .
git add test.txt
git commit -m "this is commit message"
git merage master     将master合并到当前分支
$ git remote add origin git@github.com:defnngj/hello-world.git   //连接远程github项目 
$ git push -u origin master   //将本地项目更新到github项目上去

转自http://www.cnblogs.com/fnng/archive/2012/01/07/2315685.html

------------------------------------关于可能出现的错误----------------------------------

1.在执行

$ git remote addorigin git@github.com:defnngj/hello-world.git

错误提示:fatal: remote origin already exists.

解决办法:

$ git remote rm origin

然后在执行:$ git remote add origin git@github.com:defnngj/hello-world.git 就不会报错误了

 

2. 在执行

$ git push origin master

错误提示:error:failed to push som refs to.......

解决办法:

$ git pull origin master //先把远程服务器github上面的文件拉先来,再push 上去。

 


如你现在新创建了一个项目,想把它提交到github上面?

 

假设你创建好了一个项目,并切换到项目的根目录下面:

$ git status  //查看当前项目下所有文的状态,如果第一次,你会发现都红颜色的,因为它还没有交给git/github管理。

$ git add . //.)点表示当前目录下的所有内容,交给git管理,也就是提交到了git的本地仓库。

Ps:git的强大之处就是有一个本地仓库的概念,在没有网络的情况下可以先将更新的内容提交到本地仓库。

$ git commit –m”new natter ”  //对你更新或修改了哪些内容做一个描述。

$ git remote add origin git@github.com:defnngj/hibernate-demo.git

//如果你是第一次提交项目,这一句非常重要,这是你本地的当前的项目与远程的哪个仓库建立连接。

Ps: origin可以改为别人的名字,但是在你下一次push(提交)时,也要用你修改之后的名字。

$ git remote -v //查看你当前项目远程连接的是哪个仓库地址。

$ git push -u origin master //将本地的项目提交到远程仓库中。

 

------------------------------------------------------------

假如,你回到了家,想把公司提交的项目克隆到本地?

 

如果你是第一次想把github上面的项目克隆到本地或者要克隆别人的项目到地。

$ git clone git@github.com:defnngj/hibernate-demo.git //在git下面切换到想存放此项目的文件目录下,运行这条命令就可以将项目克隆下来。

 

假如本地已经存在了这个项目,而仓库中又有一新的更新,如何把更的合并到本地的项目中?

$ git fetch origin    //取得远程更新,这里可以看做是准备要取了

$ git merge origin/master  //把更新的内容合并到本地分支/master

 

-------------------------------------------

项目中删除了一些文件,如何提交?

 

假如远程仓库中已经存了aaa这个文件,我fetch了下来,并删除了aaa这个文件,想再push上到远程仓库中,并使远程仓库中的项目被新的修改覆盖(也是是远程仓库中的aaa也被删除)

$ git status   //可以看到我们删除的哪些文件

$ git add .   //删除之后的文件提交git管理。

$ git rm   src/com/hzh/hibernate/dao/aaa.java    //移除我们删除的那个文件,不然git不允许我们往远程仓库提交。

Ps: 如果你想删除的是某个目录(java包),这里想移除整个目录的内容。

$ git rm  src/com/hzh/hibernate/bbb/ -r   // -r 会把bbb/目录下的所有内容一次性移动。

 

------------------------------------------------------------------------

远程创建了一个新仓库,本地创建了一个新项目,如何使新的项目与仓库对应起来?

 

其实,这个也很简单,只是我当时对那些命令不太理解,所以比较模糊,不知如何对应。

 

$ git remote add origin git@github.com:defnngj/hibernate-demo.git

//还是这个命令,在你push项目之前加上这一句就OK了。

git@github.com:defnngj/hibernate-demo.git 就是你常见的新仓库的地址啊。git切换到新项目下,在push之前,加上这一句,我们创建的新仓库就与新项目建立了连接。

 

 









转载于:https://www.cnblogs.com/dfg727/p/3487224.html

<think>我们正在处理一个关于在局域网配置和使用Git进行版本控制的问题。根据用户的问题,我们需要提供详细的步骤指导。同时,我们需要参考提供的引用内容,但要注意,这些引用内容是关于gitblit和Windows文件共享的,而用户的问题可能更通用。因此,我们将结合通用方法和引用中的有用信息。 目标:在局域网环境中配置和使用Git,不依赖互联网。 可能的方案: 1. 使用纯Git协议(通过git daemon)搭建一个简单Git服务器(引用4和5提到了一些)。 2. 使用Git over SSH,通过SSH协议访问(引用1提到使用ssh配置)。 3. 使用HTTP协议(但可能更复杂,需要web服务器)。 4. 使用共享文件夹(如Windows共享或Samba,引用5提到基于Windows文件共享)。 由于用户没有指定操作系统,我们假设服务器可以是Windows或Linux,客户端也可以是两者。但为了通用性,我们将重点放在共享文件夹和SSH两种方式,因为这两种方式在局域网中较为常见。 步骤概览: 1. 在服务器上创建一个裸仓库(bare repository)。 2. 设置网络共享或SSH访问,使得客户端可以访问这个仓库。 3. 客户端克隆仓库并进行操作。 我们将分两种主要方式介绍: 方式一:使用共享文件夹(适合Windows和Linux之间,或同系统) 方式二:使用SSH(更安全,适合需要认证的场景) 注意:引用1提到在Windows上搭建gitblit(一个Git服务器管理软件),但用户可能只需要简单Git服务器,所以我们可以不依赖gitblit,而使用Git自带的功能。 详细步骤: ### 方式一:使用共享文件夹(以Windows服务器为例,客户端可以是Windows或Linux) 1. 在服务器上创建共享文件夹: - 选择一个文件夹,例如:`D:\git_repos`。 - 右键点击文件夹,选择“属性” -> “共享” -> “高级共享”,勾选“共享此文件夹”,设置共享名(如`git_repos`)。 - 设置权限:确保局域网内的用户有读写权限(根据引用5,需要开启网络发现和文件共享,关闭密码保护共享)。 2. 在共享文件夹中创建裸仓库(bare repo): - 在共享文件夹中,右键选择“Git Bash Here”(确保服务器已安装Git),然后运行: ```bash git init --bare myproject.git ``` `myproject.git`是仓库名。 3. 在客户端克隆仓库: - 在客户端(Windows)使用文件管理器访问共享文件夹,记下路径,如`\\server_ip\git_repos\myproject.git`。 - 在客户端的Git Bash中: ```bash git clone //server_ip/git_repos/myproject.git ``` 或者使用映射的网络驱动器(如Z:盘): ```bash git clone Z:/git_repos/myproject.git ``` - 在Linux客户端,可以使用samba挂载共享文件夹,然后使用git克隆。或者直接使用smb路径(需要安装cifs-utils): ```bash sudo mount -t cifs //server_ip/git_repos /mnt/git_repos -o username=your_username,password=your_password git clone /mnt/git_repos/myproject.git ``` 或者直接通过smb协议克隆(但Git可能不支持直接克隆smb,所以建议先挂载)。 ### 方式二:使用SSH(以Linux服务器为例,Windows服务器也可配置SSH) 1. 在服务器上安装并启动SSH服务: - Linux(如Ubuntu): ```bash sudo apt update sudo apt install openssh-server sudo systemctl enable ssh sudo systemctl start ssh ``` - Windows:安装OpenSSH Server(Windows 10 1809以上版本支持),或使用Cygwin等。 2. 在服务器上创建裸仓库: - 选择一个目录,例如`/srv/git`,然后创建裸仓库: ```bash sudo mkdir /srv/git sudo chown your_user:your_group /srv/git cd /srv/git git init --bare myproject.git ``` 3. 设置SSH访问权限: - 确保客户端用户可以通过SSH登录到服务器,并且有权限访问`/srv/git`目录。 - 将客户端的公钥添加到服务器用户的`~/.ssh/authorized_keys`文件中(如果使用同一个用户,比如git用户,通常建议创建一个专门用户)。 4. 在客户端克隆仓库: ```bash git clone username@server_ip:/srv/git/myproject.git ``` 其中`username`是服务器上的用户,需要对该目录有读写权限。 ### 通用步骤(无论哪种方式): 1. 客户端配置用户名和邮箱(引用3): ```bash git config --global user.name "Your Name" git config --global user.email "your.email@example.com" ``` 2. 在克隆的仓库中进行开发,提交,然后推送: ```bash git add . git commit -m "Initial commit" git push origin master ``` ### 注意事项: - 使用共享文件夹方式简单,但权限控制较弱(引用4提到,如果使用git daemon,则没有加密,任何人都可以访问)。共享文件夹方式同样存在权限问题,且可能受限于文件锁定(特别是在Windows上)。 - SSH方式更安全,适合需要认证的场景。 ### 引用参考: - 引用5提到了在Windows上设置共享文件夹的步骤(开启网络发现和文件共享)。 - 引用1提到了在Qt中使用git,并提到了ssh配置(方式二)。 - 引用3提到了配置用户名和邮箱,这是Git使用的基本配置。 ### 生成相关问题: 根据用户的问题,我们生成以下相关问题: 1. 在局域网中使用Git,如何选择最适合的协议(共享文件夹、SSH、Git协议)? 2. 如何设置Git仓库的访问权限,确保只有授权用户才能提交? 3. 在Windows和Linux混合的局域网环境中,如何配置Git服务器? 4. 如何解决Git在共享文件夹中可能遇到的文件锁定问题? 5. 如何备份局域网中的Git仓库? ### 回答结构: 我们将按照以下结构回答用户: 1. 介绍两种主要方式(共享文件夹和SSH)的适用场景和优缺点。 2. 分步骤详细说明每种方式的配置。 3. 给出通用配置(用户名邮箱)。 4. 注意事项。 5. 生成相关问题。</think>### 在局域网配置和使用 Git 的完整指南 #### 一、基础概念 1. **Git 服务器选择** 在局域网中,可通过以下方式搭建 Git 服务器: - **Git 原生协议**:轻量级但无加密(引用[4]) - **SSH 协议**:安全且易配置(推荐) - **共享文件夹**:通过 SMB/NFS 访问(引用[5]) - **Gitblit 等工具**:带 Web 界面(引用[1]) 2. **核心组件关系** - Git 客户端:所有设备安装(引用[2]) - 服务器:存储中央仓库的机器 - 局域网:确保设备在同一网络 #### 二、配置步骤(以 SSH 协议为例) ##### 1. 服务器端配置(Linux/Windows) ```bash # 创建裸仓库(中央仓库) mkdir -p /srv/git/project.git && cd /srv/git git init --bare project.git # 设置共享权限 chmod -R 775 project.git ``` ##### 2. 客户端配置(所有设备) ```bash # 安装 Git(Linux) sudo apt install git # 配置全局用户(引用[3]) git config --global user.name "YourName" git config --global user.email "user@lan.local" ``` ##### 3. 通过 SSH 访问仓库 ```bash # 生成 SSH 密钥(客户端) ssh-keygen -t rsa # 默认路径 ~/.ssh/id_rsa # 将公钥复制到服务器 ssh-copy-id user@server_ip # Linux 客户端 # Windows 需手动复制 id_rsa.pub 到服务器 ~/.ssh/authorized_keys # 克隆仓库 git clone ssh://user@server_ip/srv/git/project.git ``` #### 三、替代方案:共享文件夹(无需 SSH) 1. **Windows 服务器设置**(引用[5]) - 创建共享文件夹(如 `\\server\git_repos`) - 启用网络发现和文件共享 - 关闭密码保护共享 2. **客户端直接访问** ```bash # Linux 客户端挂载共享 sudo mount -t cifs //server_ip/git_repos /mnt/git # 初始化仓库 cd /mnt/git && git init --bare project.git # 克隆仓库 git clone /mnt/git/project.git ``` #### 四、开发工作流示例 1. **首次提交代码** ```bash cd project echo "# Project" > README.md git add . && git commit -m "Initial commit" git push origin master ``` 2. **团队协作更新** ```bash # 拉取他人修改 git pull origin master # 解决冲突后推送 git push origin feature-branch ``` #### 五、安全加固建议 1. **SSH 最佳实践** - 禁用 root 登录:`/etc/ssh/sshd_config` 中设置 `PermitRootLogin no` - 更改默认端口:`Port 2222` 2. **共享文件夹权限** ```bash # Linux 权限控制 chown -R gituser:gitgroup /srv/git setfacl -R -m u:user1:rwx /srv/git/project.git ``` #### 六、故障排查 1. **连接测试** ```bash ssh -T git@server_ip # 验证 SSH ping server_ip # 检查网络 ``` 2. **常见错误解决** - **权限拒绝**:检查 `authorized_keys` 文件权限(应为 600) - **无共享访问**:确认 SMB/NFS 服务已启动(引用[5]) > **注意事项**: > - 若使用 Git 原生协议(`git://`),需运行 `git daemon`(引用[4]),但缺乏加密 > - 生产环境推荐 SSH 或 HTTPS > - Windows 客户端建议安装 [Git for Windows](https://git-scm.com/) --- ### 相关问题 1. 如何在 Git 中设置分支保护策略,防止直接推送主分支? 2. 使用共享文件夹时,如何解决 Windows 和 Linux 之间的文件权限冲突? 3. 如何通过 Git Hooks 实现代码提交时自动运行测试脚本? 4. 在无互联网环境中,如何搭建 GitLab 私有仓库管理平台? 5. Git 仓库体积过大时,如何安全地清理历史记录?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值