之前做项目代码管理的时候,基本都是使用svn,很少用git,本是就算接触github也是使用git的可视化工具,比如ToitorseGit等,总之就是很少使用git命令来进行代码管理就是了,现在有这方的需求,所以在此总结下git的命令行使用。当然这篇文章也就是纯粹的总结使用,如果要看git通俗一点的原理介绍并借此理解git命令行的使用,请参考这篇文章Git版本控制软件结合GitHub从入门到精通常用命令学习手册,的确写的很漂亮,也很通俗易懂,如果没有基础的童鞋,也建议先看这篇文章。
1、基本配置
配置用户名
git config --global user.name yourname
配置用户邮箱
git config --global user.email youremai@163.com
查看配置的用户名
git config user.name
查看配置的邮箱
git config user.email
2、常用git命令
这里的常用命令,但然是指我在具体开发中可能会常用到的命令了。但然了,之后也可能有其它命令会在这里补充,有童鞋觉得还有些常用命令的也可以留言,我确认后一并补充也可以哈。
2.1、初始化本地git仓库
可通过git init初始化目录为一个本地的git仓库,这时候会创建一个默认的master分支(没有git commit快照前,git branch看不到这个分支),
git init会在本地创建一个.git文件目录,所有的本地快照数据就是放在这个目录的
可通过git clone来克隆一个远程仓库,使用的命令为
git clone [url]
2.2、回撤操作
当本地修改了代码,但是后面觉得没有修改的必要,想同步git服务器代码时,使用回撤操作
git checkout + 需要恢复的文件名
当通过git add已经将文件添加到了缓存队列,git checkout就没用了,想要撤销操作就得先将文件取消缓存
git reset HEAD + 要取消缓存的文件名
然后再执行
git checkout + 文件名
如果想回撤的文件已经commit了,则可以通过一下命令来取消文件的快照,将其归入缓存的状态
git revert HEAD //撤销前一次 commit
2.3、添加文件到缓存存的操作
在git中,在需要提交修改或新加的文件都需要将它们先添加到缓存
git add + 文件名
添加指定文件到缓存(不会递归目录添加文件)
git add .
添加当前目录以及递归目录新增和修改的文件到缓存队列
git add *
2.4、实际存储快照
git add将想要快照的内容写入暂存,git commit命令就是将缓存存快照
通过以下命令来实际快照提交的内容,快照实际上就表示git已经记录了内容修改的版本了
git commit -m 'description'
这时再执行git status会发现没有了改变,说明内容和git本地服务器已经相同
git status
2.5、将数据推送到远端git服务器
本地快照,最终还是得推送到远端的服务器,通过执行以下命令,就会将你的 [branch] 分支推送成为 [alias] 远端上的 [branch] 分支
git push [alias] [branch]
如果当前分支只有一个远程分支就可以直接使用git push
这里本地分支和远程分支是一一对应的比如本地的master分支对应远程origin/master分支
2.6、远端仓库操作
列出远端仓库别名
git remote
看远端仓库的实际地址
git remote -v
为项目添加一个远端仓库,这里的alias为自定义远端仓库别名,url为远端仓库地址
git remote add [alias] [url]
删除远端仓库,这个操作会让下一下拉取数据的时候本地数据跟着一起丢失
git remote rm [alias]
2.7、暂存状态查询
git status命令可以查看缓存状态,但是已经git commit快照的变更git status命令是无法查看到的
简短的列出缓存状态
git status -s
2.8、文件修改查看
显示已写入缓存文件与已修改但尚未写入缓存的改动的区别
git diff
会列举出哪些内容已经写入缓存
git diff --cached
显示改动的摘要而非整个diff
git diff -stat
2.9、分支
列出你在本地的分支
git branch
创建新的分支
git branch [branchname]
切换到要修改的分支
git checkout [branchname]
创建新分支,并立即切换到它
git checkout -b [branchname]
删除分支
git branch -d [branchname]
2.10、从远端仓库同步数据
git fetch [alias]可以从远端仓库同步数据,但是没有将数据合并到本地仓库分支去,还需要执行git merge [alias]/[branch]命令,这里的alias是远端仓库名称
git fetch [alias]
git merge [alias]/[branch]
将远端仓库上的更新合并到本地对应分支,这里的alias是指远端仓库的名称
git pull 就相当于git fetch后git merge远端对应分支到当前所在的分支。
git pull [alias] [branch]
2.11、提交日志
输出所有的提交日志
git log
查看指定作者的提交
git log --author=[authorname]
3、实际项目开发命令总结
实际上,我个人觉得有些命令,不仅常用而且真的是很实用,这里单独拿出来说说
查看本地分支和远程分支的对应关系
git branch -vv
新建本地分支并且和远程分支建立映射关系
git checkout -b localbranch origin/remote_branch
这个命令会自动切到对应的localbranch分支,但是应该还没有和远程分支同步,所以还需要执行
git pull origin remote_branch
这个命令来同步对应的本地和远程分支
4、参考文献
感谢下面的文献,让我从git纯小白,变成了一个能写几句git命令行的小白。
Git版本控制软件结合GitHub从入门到精通常用命令学习手册