因为需要频繁的在各电脑上切换,例如在实验室电脑和自己的电脑上工作,工作代码又需要在同版本控制之下。要满足这样的需求,可以使用网上免费的Git托管服务器,例如GitHub,但是免费的托管项目,又需要开源。如果有一个可以可以移动的Git服务器,问题就解决了,本文就是一个把Git服务器版本库放到U盘里面的解决方案,当然你要保证你的U盘别丢了。

以windows为例:

1、windows下安装git的管理工具, 安装时选用 git bash和git here 。安装好后鼠标右键桌面或者项目文件下 选择“ Git Bash Here "进行操作。

2、假设欲在 u盘目录 H:/code_repo/dcshop目录建立仓库作为服务端,依次执行以下命令:

cd H:/code_repodcshop          #切换当前目录到h磁盘

git --bare init --shared #创建以个空的仓库 ,并且可以多用户共享

最后一行git init的作用是创建一个空的git仓库或重新初始化一个已存在的仓库。bare参数的作用是让 syncfiles目录等价于一个赤裸的仓库(bare repository),shared参数则指定仓库在多个用户间共享。由此相当于创建了一个作为服务端的仓库。这个仓库的目录结构可以和后面创建的仓库 对比下,是不一样的。

3、假设欲同步的文件位于d:syncfiles目录下,现在需要把d:syncfiles目录下的文件推送到服务端仓库中,依次执行以下命令:

cd /d/syncfiles

git init                        #在此目录创建一个git仓库

git config core.autocrlf false  #可选,关闭自动将lf换行符转换为crlf换行符

git add .                       #将目录下的全部文件添加到索引中

git commit -m "提交信息"         #将变化提交到仓库 "提交信息"

git remote add "origin" H:/code_repo/dcshop //添加一个远程仓库,origin为别名(git默认就是origin)

git push origin master   #将本地内容推送到服务端仓库中

如果 git commit 提交有问题,提示Plase tell me who you are ? 是你没有定义你的名字和邮箱。

#输入下面两句,并且替换成你的名字和邮箱
git config --global user.email "your@email.com"
git config --global user.name "Your Name"

以上步骤完成后,本地d:syncfiles目录下的文件即被推送到服务端仓库中了。以后文件有改动时,可按以下步骤提交变化:

 git add 改动的文件

git commit -m "提交信息"

#以上步骤可以反复进行,等工作告一段落时可再提交到服务端仓库中

git push

4、现在假设要在e:进行同步,则步骤如下:

cd /e

git clone H:/code_repo/dcshop      #从服务端克隆出一个仓库

git config core.autocrlf false

执行后,可在e:下看到syncfiles目录,这个目录的结构和d:syncfiles完全一致(同时可以比对下h:syncfiles的目录结构,是不一样的)。以后如果对这个目录进行更改,可按第3步将更改推送到服务端仓库中。

5、从服务端仓库中同步更改。假设在d:syncfiles进行了更新并推送到了服务端仓库,此时需要在e:syncfiles中进行同步。这个步骤包含了两个动作:

  • 从服务端仓库取出更新版本
  • 与本地仓库进行合并

步骤如下:

cd /e/syncfiles

git pull origin master

以上展示了git中常见的操作,但没有涉及到以下内容:

  • branch(分支)
  • 冲突和合并
  • 撤销和恢复

要说明的是,在git中有一个默认的分支存在,即master分支(主分支,即上文命令中出现的master),该分支由git自动生成。之前我们的各个操作都是在主分支上进行的,只是我们未察觉它的存在而已。

 

附上我的.git/config

 

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = I:\\code_repo\\dcshop
    puttykeyfile = 
[branch "master"]
    remote = origin
    merge = refs/heads/master

 

 

 

 

转载于:https://www.cnblogs.com/zhjoylive/p/4746577.html

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐