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仓库

  1. git init在项目下创建git裸仓库
  2. git add . 添加项目下的所有文件到git缓存区(注意后面的小数点“.”,代表所有文件)
  3. git commit -m "提交文件",提交到git仓库

  4. git remote add <远程仓库别名> <远程仓库地址>,关联远程仓库

  5. git pull --rebase <远程仓库别名> master,获取远程库与本地同步合并(如果远程库不为空,这一步操作是必须的)

  6. 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 <远程仓库别名> 移除远程仓库

四、操作中遇到的问题

  1. git 命令不起作用。
    修改/etc/profile,# Path manipulation下if中添加pathmunge /usr/local/git/bin。
  2. 使用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 -- <文件名> 撤销修改,将文件还原成上次提交的内容

  (未完待续)

 


 

    

posted on 2018-07-19 16:45  节奏35  阅读(194)  评论(1编辑  收藏  举报

导航