git服务器的搭建及使用(第二章)
一、git服务器创建仓库
在普通用户有读写权限的目录下,创建git仓库,切勿使用root创建(root创建的仓库,普通用户无写的权限,导致提交失败)。
mkdir xxx.git
git init --bare创建git裸仓库
(
裸仓库不能进行任何操作,否则会报错fatal: this operation must be run in a work tree。
需要使用如下命令,再进行git其他操作:
touch readme
git init
git add readme
git commit -m "提交readme"
)
或者克隆现有的仓库
git clone <git仓库地址>
二、本地项目上传到git服务器
在Windows平台上安装Git,msysGit的项目的安装包,下载地址 https://gitforwindows.org/
在本地项目目录下创建git仓库并添加远程服务器git仓库
- git init在项目下创建git裸仓库
- git add . 添加项目下的所有文件到git缓存区(注意后面的小数点“.”,代表所有文件)
-
git commit -m "提交文件",提交到git仓库
-
git remote add <远程仓库别名> <远程仓库地址>,关联远程仓库
-
git pull --rebase <远程仓库别名> master,获取远程库与本地同步合并(如果远程库不为空,这一步操作是必须的)
-
git push -u <远程仓库别名> master,将最新的修改推送到远程仓库
三、远程仓库的使用
git remote -v 查看远程仓库
git remote add <远程仓库别名> <远程仓库地址> 添加远程仓库
git fetch <远程仓库别名> 从远程仓库中抓取本地仓库没有的数据
git pull <远程仓库别名> <分支名> 从仓库分支中拉取数据
git push <远程仓库别名> <分支名> 推送文件到上游
git remote show <远程仓库别名> 查看远程仓库信息
git remote rename <旧远程仓库别名> <新远程仓库别名> 远程仓库重命名
git remote rm <远程仓库别名> 移除远程仓库
四、操作中遇到的问题
- git 命令不起作用。
修改/etc/profile,# Path manipulation下if中添加pathmunge /usr/local/git/bin。 - 使用ssh公钥,代替每次输入密码请求远程git时,不起作用。
设置home目录对组的写权限以及设置git管理员下的.ssh目录读写权限。
chmod g-w /home/xxx
chmod 700 /home/xxx/.ssh
chmod 600 /home/xxx/.ssh/authorized_keys
五、git对文件的基本操作及原理
Git仓库中的项目文件属于提交状态及已跟踪文件,git对文件变化的变化用快照记录,工作一段时间后,文件的状态可能处于未修改、已修改或已放入暂存。
git status 检查当前文件状态。
git add <文件名> 跟踪当前文件,暂存状态(针对新文件或修改过的文件)。
git commit -m "注释" 提交更新。
git commit -a -m "注释" 跳过暂存区,直接提交。
git rm -f <文件名> 强制删除文件,清除暂存区的文件。
git mv <旧文件名> <新文件名> 移动文件。
git diff 查看尚未暂存的文件更新的部分。
git diff -cached(stager) 查看已暂存的将要添加到下次提交里的内容。
git log 查看提交的历史,列出所有的更新,按时间排列。
git log -p -n 查看提交历史,-p显示每次提交的内容差异,-n表示仅显示最近n次的提交。
git log --stat 查看每次提交的简略统计信息。
git log --shortstat 只显示--stat最后的行数修改添加移除统计。
git log --name-only 仅在提交信息后显示已修改的文件清单。
git log --name-status 显示新增、修改、删除的文件清单。
git log --abbrev-commit 仅显示SHA-1的前几个字符,而非所有的40个字符。
git log --relative-date 使用较短的相对时间显示。
git log --graph 显示ASCII图形表示的分支合并历史。
git log --pretty 使用其他格式显示历史提交信息,可用选项包括oneline、short、full、fuller和format(后期指定格式)。
git log --pretty=format:"%h - %t - %an - %cn" 以下为常用选项:
%H 提交对象的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象的完整哈希字串
%p 父对象的简短哈希字串
%an 作者的名字
%ae 作者的电子邮箱
%ad 作者修订日期(可以用--date=选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者的名字
%ce 提交者的电子邮箱地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明
git log --since="",--after="" 仅显示指定时间之后的提交。
git log --until="",--before="" 仅显示指定时间之前的提交。
git log --author 仅显示指定作者相关的提交。
git log --committer 仅显示指定提交者相关的提交。
git log --grep 仅显示含指定关键字的提交。
git log --S 仅显示添加或移除了某个关键字的提交。
git commit --amend 覆盖上次提交,提交补充
git reset HEAD <文件名> 取消暂存的文件,及撤销上次提交
git checkout -- <文件名> 撤销修改,将文件还原成上次提交的内容
(未完待续)