1.Git 的安装
- 根据自己的操作系统进行git的安装,具体过程参考: 廖雪峰---安装git
- 配置自己的用户名称与邮箱地址。
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
2.Git 仓库的获取
- 在本地现有目录中初始化仓库
$ git init
# 添加文件到Git仓库,分两步:
$ git add <file> #注意,可反复多次使用,添加多个文件;
$ git commit -m <message> #完成。
- 克隆现有的远程仓库
git clone git@github.com:michaelliao/gitskills.git
这样这个目录里面的所有文件都可以被Git管理起来。
3.记录每次更新到仓库
- 工作区和暂存区
工作区:就是电脑中能看到的目录。
版本库:工作区中有一个隐藏目录.git,这是Git的版本库。Git版本库里存了很多东西,其中最重要的称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD
。
- 已跟踪或未跟踪文件
已跟踪文件:指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。
未跟踪文件:它们既不存在于上次快照的记录中,也没有放入暂存区。初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。
编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。 我们逐步将这些修改过的文件放入暂存区,然后提交所有暂存了的修改,如此反复。所以使用 Git 时文件的生命周期如下:
- 检查当前文件状态
# 查看哪些文件处于什么状态
$ git status
# 该命令还显示了当前所在的分支,并告诉你这个分支同远程服务器上对应的分支没有偏离。
- 跟踪新文件
# 开始跟踪一个文件
$ git add
# 显示 Changes to be committed这行下面的,就说明是已暂存状态的。
- 暂存已修改文件
当已跟踪文件的内容发生了变化,但还没有放到暂存区。通过 git status 命令,该文件出现在 Changes not staged for commit这行下面。要暂存这次更新,需要运行git add命令。
$ git add
这是个多功能命令:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。因此,该命令应该理解为“添加内容到下一次提交中”。
- 状态简览&修改
# 状态简览
$ git status
# 查看已暂存和未暂存的修改
$ git diff
- 忽略文件
对于无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。
文件 .gitigore 的格式规范如下:
1) 所有空行或者以 #
开头的行都会被 Git 忽略。
2) 可以使用标准的 glob 模式匹配。
3) 匹配模式可以以(/
)开头防止递归。
4) 匹配模式可以以(/
)结尾指定目录。
5) 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!
)取反。
- 提交更新
每次准备提交前,先用 git status 看下,是不是都已暂存,然后再运行提交命令 git commit:
# -m 选项,将提交信息与命令放在同一行
$ git commit -m ""
# -a选项, git会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤
$ git commit -a -m ""
提交后会现在是当前是在哪个分支(master)提交,本次提交的完整 SHA-1校验和是什么,以及在本次提交中,有多少文件修订过,多少行添加和修改过。
- 移除&移动文件
# 移除文件:必须要从已跟踪文件清单中移除,然后提交
$ git rm <filename>
# 如果删除之前修改过并且已经放到暂存区域的话,则必须要强制删除选项 -f
$ git rm -f <filename>
# 如果删除还希望保留在当前工作目录中,1)添加到 .gitignore 2)使用选择 --cached
$ git rm --cached <filename>
# 如果在 Git 中重命名了某个文件
$ git mv <file_from> <file_to>
Eg:
$ git mv README.md README
# 相当于运行了下面三条命令
$ mv README.md README
$ git rm README.md
$ git add README
4.查看提交历史
提交若干更新,又或者克隆了某个项目之后,要想回顾下提交历史, 通过最简单而又有效的工具是 git log
命令。
# 显示从最近到最远的提交日志,以便确定要回退到哪个版本
$ git log
# 显示最近两次提交的内容差异
$ git log -p -2
# 指定使用不用于默认格式的方式展示提交历史
$ git log --pretty = oneline
5.撤销操作
在任何阶段,都有可能想要撤销某些操作。
# 提交完才发现漏掉几个文件没有添加,或者提交信息写错了
$ git commit --amend
# 最终只会有一个提交---第二次提交将代替第一次提交的结果。
# 取消暂存的文件
$ git reset HEAD <filename>
# 撤销对文件的修改,其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”
$ git checkout --<filename>
记住,在Git中任何已提交的东西几乎总是可以恢复的。
6.远程仓库的使用
远程仓库是指托管在因特网或其他网络中的你的项目的版本库。
- 查看远程仓库
# 查看远程仓库
$ git remote
# 也可以指定选项-v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的URL
$ git remote -v
- 添加远程仓库
# 添加远程仓库
$ git remote add <shortname> <url>
- 从远程仓库中抓取与拉取
# 从远程仓库中获取所有你还没有的数据,它并不会自动合并或修改你当前的工作。
$ git fetch [remote-name]
# 如果使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。
$ git clone [remote-name]
# 通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。
$ git pull [remote-name]
- 推送到远程仓库
# 推送到远程仓库
$ git push [remote-name] [branch-name]
注:克隆时通常会自动帮你设置好那两个名字。 当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。 你必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。
- 查看某个远程仓库
# 查看某个远程仓库
$ git remote show [remote-name]
- 远程仓库的移除与重命名
# 远程仓库的重命名
$ git remote rename [remote-name] [new-remote-name]
# 远程仓库的移除
$ git remote rm [remote-name]
7.Git别名
Git 并不会在你输入部分命令时自动推断出你想要的命令。 如果不想每次都输入完整的 Git 命令,可以通过 git config
文件来轻松地为每一个命令设置一个别名。
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
本篇文章整理自: