Git工作流程

Git有4个重要名词:

  • Workspace 工作区
  • Index / Stage 暂存区
  • Repository 本地仓库
  • Remote 远程仓库

工作区

拷贝远程仓库的一个分支,并在此分支上进行开发,是最新的。开发工作就是对工作区进行的操作。

暂存区

通过git add命令添加文件的相关信息,如文件名、大小等,并不保存文件实体,只是通过序号指向每个文件,保存在.git目录下的index文件里,任何的开发只有进入此文件内才开始被版本控制。可以使用git status查看暂存区的状态。

本地仓库

保存每个分支提交过的各个版本,包含旧版本。可以使用git commit命令同步index里所保存的文件信息到本地仓库。

远程仓库

可以使用git push命令将本地仓库与远程仓库进行同步操作,远程仓库可以被多个处于协同关系的本地仓库修改。

Git命令

git clone <url> 克隆远程仓库

git init 初始化本地仓库

git status 查看暂存区状态

git diff 查看变更内容

git add . 将所有改动过的文件进行跟踪(受版本控制)

git add <file> 将制定文件进行跟踪

git mv <old> <new> 将文件进行更名

git rm <file> 删除文件

git rm --cached <file> 将文件停止跟踪但不删除

git commit -m "commit" 提交所有更新后的文件,含备注

git commit --amend 修改最后一次提交

git log 查看提交历史

git log -p <file> 查看指定文件的提交历史

git blame <file> 以列表形式查看指定文件的提交历史

git reset --hard HEAD 撤销工作目录中所有未提交文件的修改内容

git checkout HEAD <file> 撤销指定的未提交文件的修改内容

git revert <commit> 撤销指定的提交

git branch 显示所有本地分支

git checkout <branch / tag> 切换到指定分支或标签

git branch <new branch> 创建新分支

git branch -d <branch> 删除本地分支

git tag 列出所有本地标签

git tag <tag name> 基于最新提交创建标签

git tag -d <tag name> 删除指定标签

git remote -v 查看远程仓库信息

git remote show <remote> 查看指定远程仓库信息

git remote add <remote> <url> 添加远程仓库

git fetch <remote> 从远程仓库获取代码

git pull <remote> <branch> 下载代码并快速合并

git push <remote> <branch> 上传代码并快速合并

git push <remote> :<branch / tag name> 删除远程分支或标签

git push --tags 上传所有标签

其中:HEAD指向当前分支的最新提交点,add实现将工作区修改的内容提交的暂存区,commit实现将暂存区的内容提交到本地仓库并更改最新提交点,rebasemerge都是实现合并操作,后者会生成一个新节点与旧内容分开,而前者不会,只是将两个分支融合成一个线性的分支,revertreset都是变更当前指向位置,前者是用一个新提交来消除一个旧提交,而后者是直接删除指定提交。

上传本地仓库到GitHub

如何将自己的本地代码上传到GitHub仓库呢?

  1. 在本地创建一个目录,执行git init命令,之后会在此目录下创建一个.git文件夹;

  2. 将所要上传的所有文件放入此文件夹中,并执行git add .命令将所有文件添加到待上传的列表中,.表示当前目录中所有文件,也可以选部分文件;

  3. 将待上传的列表文件执行git commit -m "comment"进行确认操作,其中comment是注释语句,可以说明此次上传的意义;
  4. 在GitHub的Repository中找到当前仓库的SSH地址git@github.com:username/repo_name.git,执行git remote add origin SSH_address命令将本地的仓库关联到GitHub的仓库上;
  5. 执行git push -u origin master命令将代码上传到GitHub上。

若之前在此目录中已经关联过GitHub,则不需要执行第1、4步。