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
实现将暂存区的内容提交到本地仓库并更改最新提交点,rebase
和merge
都是实现合并操作,后者会生成一个新节点与旧内容分开,而前者不会,只是将两个分支融合成一个线性的分支,revert
和reset
都是变更当前指向位置,前者是用一个新提交来消除一个旧提交,而后者是直接删除指定提交。
上传本地仓库到GitHub
如何将自己的本地代码上传到GitHub仓库呢?
在本地创建一个目录,执行
git init
命令,之后会在此目录下创建一个.git
文件夹;将所要上传的所有文件放入此文件夹中,并执行
git add .
命令将所有文件添加到待上传的列表中,.
表示当前目录中所有文件,也可以选部分文件;- 将待上传的列表文件执行
git commit -m "comment"
进行确认操作,其中comment
是注释语句,可以说明此次上传的意义; - 在GitHub的Repository中找到当前仓库的SSH地址
git@github.com:username/repo_name.git
,执行git remote add origin SSH_address
命令将本地的仓库关联到GitHub的仓库上; - 执行
git push -u origin master
命令将代码上传到GitHub上。
若之前在此目录中已经关联过GitHub,则不需要执行第1、4步。