Git操作指南——命令行方式


Git是一款免费而且开源的版本控制工具,可用来管理小型或大型的项目,而且相当高效。

下载地址

https://git-scm.com/downloads

创建新仓库

# 使用命令行创建工程目录
mkdir proj_name

# 进入到目录
cd proj_name

# 执行初始化仓库命令,以创建新的git仓库
git init

检出仓库

# 执行如下命令以创建一个本地仓库的克隆版本
git clone /path/to/repository

# 如果是远端服务器上的仓库,你的命令会是这个样子
git clone username@host:/path/to/repository

工作流

  • 你的本地仓库由 git 维护的三棵“树”组成。
  • 第一个是你的 工作目录,它持有实际文件;
  • 第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动;
  • 最后是 HEAD,指向你最近一次提交后的结果。

添加与提交

# 你可以计划改动(把它们添加到缓存区),使用如下命令:
git add <filename>

# 或者如下命令,将添加全部文件,谨慎操作,在.gitignore文件未配置完成时最好不要这么做,省去一些麻烦
git add *

# 这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:
git commit -m "代码提交信息"

# 现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。

推送改动

# 你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:
git push origin master

# 可以把 master 换成你想要推送的任何分支。
# 如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:
git remote add origin <server>

# 如此你就能够将你的改动推送到所添加的服务器上去了。

分支

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”。在其他分支上进行开发,完成后再将它们合并到主分支上。

# 创建一个叫做“feature_x”的分支,并切换过去:
git checkout -b feature_x

# 切换回主分支:
git checkout master

# 再把新建的分支删掉:
git branch -d feature_x

# 除非你将分支推送到远端仓库,不然该分支就是不为他人所见的:
git push origin <branch>

更新与合并

# 要更新你的本地仓库至最新改动,执行:
git pull

# 以在你的工作目录中 获取(fetch) 并 合并(merge) 远端的改动。

# 要合并其他分支到你的当前分支(例如 master),执行:
git merge <branch>

# 两种情况下,git 都会尝试去自动合并改动。不幸的是,自动合并并非次次都能成功,并可能导致 冲突(conflicts)。 这时候就需要你修改这些文件来人肉合并这些 冲突(conflicts) 了。改完之后,你需要执行如下命令以将它们标记为合并成功:
git add <filename>

# 在合并改动之前,也可以使用如下命令查看:
git diff <source_branch> <target_branch>

标签

# 在软件发布时创建标签,是被推荐的。这是个旧有概念,在 SVN 中也有。可以执行如下命令以创建一个叫做 1.0.0 的标签:
git tag 1.0.0 1b2e1d63ff

# 1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。使用如下命令获取提交 ID:
git log

#你也可以用该提交 ID 的少一些的前几位,只要它是唯一的。

替换本地改动

# 假如你做错事,你可以使用如下命令替换掉本地改动:
git checkout -- <filename>

#此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到缓存区的改动,以及新文件,都不受影响。

# 假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:
git fetch origin

git reset --hard origin/master

有用的贴士

# 内建的图形化 git:
gitk

# 彩色的 git 输出:
git config color.ui true

# 显示历史记录时,只显示一行注释信息:
git config format.pretty oneline

# 交互地添加文件至缓存区:
git add -i

帮助信息

# 查看git的帮助
git help

# 查看git所有子命令
git help -a

# 查看git子命令的详细帮助信息
git help subcommand

# 查看git通用向导
git help -g

日志提交规范

  • 第一行为对改动的简要总结,长度不超过50,用语采用命令式而非过去式
  • 第一行结尾不要英文的句号.
  • 第二行为空行
  • 第三行开始,是对改动的详细介绍,可以是多行内容,长度不超过72,可以包括原因、做法、效果等各种一切与当前改动相关的
  • 建议全部英文,首字母大写,若采用中文,尽量用UTF-8编码
  • 大项目中,可以用module/submodule:前缀作为第一行的开头,前缀首字母不必大写,前缀的冒号后面跟一个空格比较好看,为了控制字符串的长度,子模块名称可以适当缩写,但应保持统一
  • 避免用法
    • 当备份工具
    • 一个改动不一次提交完成
    • 注释不清晰

巩固练习

  • 新建一个工程目录并创建版本管理库
  • 在工程目录下新建几个文件并添加到版本管理
  • 提交版本管理库最新的变动并按标准写好日志
  • 新增两个分支:hotfix、dev
  • 修改dev分支下的文件内容并提交(git需先add再commit)
  • 切换到master分支,合并dev分支到master分支

更专业更全面的Git指南(有能力的同学尽量阅读英文版)

https://git-scm.com/book/en/v2 https://git-scm.com/book/zh/v2

考核内容

创建本地仓库、对测试仓库进行2-8点的实际操作并最终还原,host文件(~/.ssh/config)配置方式为:

host git-name
    user git
    hostname 192.168.*.*
    port 22
    identityfile ~/.ssh/id_rsa
  1. 如何创建新仓库
  2. 如何克隆仓库/检出仓库
  3. 什么是工作目录、缓存区、HEAD
  4. 如何添加与提交改动
  5. 如何推送改动到远程仓库
  6. 如何新建、切换、删除分支
  7. 如何更新仓库、合并分支
  8. 如何创建标签、还原本地文件
Copyright © zhengxiangqi 2018 all right reserved,powered by Gitbook该文件修订时间: 2019-09-30 02:14:29

results matching ""

    No results matching ""