私人 Git 仓库搭建[1]
GitHub 在面向开源开放协同场景具有显著优势,但同时也不适用于托管具有私密性的个人项目,比如磕(DA)盐(GONG)人用 LaTEX 撰写的论文。借助服务器搭建私人 Git 仓库用于论文撰写和修改全流程版本管理是不二选择。通过 Git 托管论文可以进行有效的内容对比和校验等,比如使用版本对比工具可以清晰明了地定位导师修改的内容。
搭建步骤
- 安装 Git
|
|
- 创建一个 Git 用户用来运行 Git 服务;提示没有权限时加上
sudo
|
|
- 创建仓库
|
|
配置客户机免密登录
收集需要免密登录的客户机公钥,一般位于~/.ssh
或者C:\Users\saul\.ssh
中的 id_rsa.pub
文件中;将公钥写入服务器的/home/git/.ssh/authorized_keys
文件中(若没有则创建)。
- 首先客户机生成并获取公钥:
|
|
- 服务器配置
|
|
客户机克隆仓库
- 正常未修改 SSH 端口:
|
|
- 修改 SSH 端口配置方式:
|
|
Git 放弃本地修改
尚未使用 git add
缓存代码
可以使用 git checkout -- filepathname
(比如:git checkout -- readme.md
,不要忘记中间的 --
,不写就成了检出分支了!!)。放弃所有的文件修改可以使用 git checkout .
命令。
此命令用来放弃掉所有还没有加入到缓存区(就是 git add
命令)的修改:内容修改与整个文件删除。但是此命令不会删除掉刚新建的文件,因为刚新建的文件还没已有加入到 git 的管理系统中,所以对于 git 是未知的,自己手动删除就好了。
已经使用 git add
缓存代码
可以使用 git reset HEAD filepathname
(比如:git reset HEAD readme.md
)来放弃指定文件的缓存,放弃所以的缓存可以使用 git reset HEAD .
命令。
此命令用来清除git对于文件修改的缓存,相当于撤销 git add
命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了如(未使用git add缓存代码)所示的状态。继续用处理(未使用git add
缓存代码)中的操作,就可以放弃本地的修改。
已经使用 git commit
提交代码
可以使用 git reset --hard HEAD^
来回退到上一次commit的状态。此命令可以用来回退到任意版本:git reset --hard commitid
你可以使用 git log
命令来查看git的提交历史。
-
本地新增了一堆文件(并没有
git add
到暂存区),想放弃修改。- 单个文件或文件夹:
rm filename
,rm -rf dir
- 所有文件/文件夹:
git clean -xdf
- 单个文件或文件夹:
-
本地新增了一堆文件(已经git add到暂存区),想放弃修改。
- 单个文件/文件夹:
git reset HEAD filename
- 所有文件/文件夹:
git reset HEAD .
- 单个文件/文件夹:
Git 版本回滚
首先查询历史对应不同版本的ID, 用于回退定位:
|
|
恢复到历史版本:
|
|
把修改推到远程服务器:
|
|
重新更新就可以了:
|
|
仓库子模块的使用 [2]
项目中经常使用别人维护的模块,在 git 中使用子模块的功能能够大大提高开发效率。使用子模块后,不必负责子模块的维护,只需要在必要的时候同步更新子模块即可。
- 添加子模块
|
|
- 克隆带子模块的仓库
克隆的仓库中,子模块中没有代码,需要初始化及更新;
|
|
- 子模块拉取远程更新代码
如果想要在子模块中查看新工作,可以进入到子模块的目录中运行 git fetch
与 git merge
,合并上游分支来更新本地代码。
|
|
如果不想在子目录中手动抓取与合并, 在主仓库的根目录运行 git submodule update --remote
,Git 将会进入子模块然后抓取并更新。