阅读目录:
- Git 基础概念
- 常用的命令
- 简明指南
3.1 创建新仓库
3.2 检出仓库
3.3 添加和提交
3.4 推送改动
3.5 分支管理
3.6 更新与合并
3.7 查看历史
3.8 版本回退
3.9 删除文件
3.10 远程仓库命令总结
3.11 分支操作命令总结- 参考文献
Git是Linus Benedict Torvalds更好的管理Linux系统而开发的一个“分布式版本控制工具”,对团队协作开发极其友好。高端大气上档次!
Git命令超级的多,所以本文只列举工作中最常用的几条命令:
0. GIt 基础概念
工作区(Working Directory):简单的说,就是本地可以编辑的文件;
版本库(Repository):工作区有一个隐藏目录 .git
,这个不算工作区,而是Git的版本库;
暂存区(stage):git add
后还没有提交到仓库的中间状态;
此外还有Git为我们自动创建的第一个分支 master
,以及指向master
的一个指针叫 HEAD
。
HEAD : 它指向你最后一次提交的结果。
Git 模型图:
1. 常用的命令
一周工作中,最常用的三种命令,总结成三个字:拉、提、推。
即:拉取远程仓库最新代码、提交代码到仓库、推送本地代码到远程
拉取远程仓库最新代码
1. git fetch origin // 先从远程分支抓取最新代码
2. git merge --no-ff -m '' // 将抓下来的远程代码和本地代码合并
提交代码到仓库
将远程分支代码拉取下来以后,和本地代码合并,解决冲突后,提交自己的修改
1. git add // 添加文件到暂存区
2. git commit -m '' // 将暂存区提交到仓库
推送本地代码到远程
1. git push // 将本地代码推送到远程仓库
2. 简明指南
2.1 创建新仓库
创建新文件夹,打开,然后执行
git init
以创建新的 git 仓库。
2.2 检出仓库
克隆远端服务器上的仓库:
git clone
2.3 添加和提交
你可以提出更改(把它们添加到暂存区),使用如下命令:
git add
这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:
git commit -m "代码提交信息"
现在,你的改动已经提交到了 HEAD
,但是还没到你的远端仓库。
2.4 推送改动
你的改动现在已经在本地仓库的 HEAD
中了。执行如下命令以将这些改动提交到远端仓库:
git push origin master
可以把 master 换成你想要推送的任何分支
2.5 分支管理
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。
创建一个叫做“feature_x”的分支,并切换过去:
git checkout -b feature_x
切换回主分支:
git checkout master
再把新建的分支删掉:
git branch -d feature_x
2.6 更新与合并
要更新你的本地仓库至最新改动,执行:
git pull
以在你的工作目录中 获取(fetch) 并 合并(merge) 远端的改动。
要合并其他分支到你的当前分支(例如 master),执行:
git merge
在这两种情况下,git 都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts)。 这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:
git add
在合并改动之前,你可以使用如下命令预览差异:
git diff
2.7 查看历史
如果你想了解本地仓库的历史记录,最简单的命令就是使用:
git log
你可以添加一些参数来修改他的输出,从而得到自己想要的结果。 只看某一个人的提交记录:
git log --author=
一个压缩后的每一条提交记录只占一行的输出:
git log --pretty=oneline --abbrev-commit
或者你想通过 ASCII 艺术的树形结构来展示所有的分支, 每个分支都标示了他的名字和标签:
git log --graph --oneline --decorate --all
看看哪些文件改变了:
git log --name-status
这些只是你可以使用的参数中很小的一部分。更多的信息,参考:
git log --help
最全的一条查看历史命令:
git log --graph --pretty=oneline --abbrev-commit --decorate --all
2.8 版本回退
已经添加到暂存区stage,恢复到工作区:
git reset HEAD
用版本库里的版本替换工作区的版本代码:
git checkout -- fileName
版本回退到上一个版本:
git reset --hard HEAD^
版本回退到某个提交:
git reset --hard
2.9 删除文件
rm fileName //删除本地,可直接git rm
git rm file Name //修改进入缓存区
git commit -m '' //提交到版本库
2.10 远程仓库命令总结
经过以上操作后,代码已经可以提交到本地的Git仓库,下面介绍远程仓库的一些操作
本地Git仓库和GitHub仓库之间的传输密钥:
ssh-keygen -t rsa -C "[email protected]" //使本机可以往github上提交
把本地仓库的内容关联到GitHub仓库:
git remote add origin [email protected]:user-name/respository-name.git
本地库的所有内容推送到远程库(初始化一个远程仓库代码):
git push -u origin master //当前分支master所有代码推送到远程进行初始化
本地修改后提交到远程仓库 (修改推送):
git push origin branch-name
从远程仓库克隆一个仓库到本地 :
git clone [email protected]:zhangyusir/hello.git
本地和远程同时创建分支产生关联:
git checkout -b branch-name origin/branch-name
将本地的分支和远程的分支关联起来:
git branch --set-upstream-to branch-name origin-name
2.11 分支操作命令总结
查看本地分支:
git branch
创建分支并切换:
git checkout -b
切换分支:
git checkout
在当前分支快速合并其他分支:
git merge branch-name
保留分支的提交历史既禁止快速合并:
git merge --no-ff -m "commit message" branch-name
删除分支:
git branch -d branch-name //强制删除-D
将当前分支的修改放到“储藏”:
存储 :git stash 恢复 : git stash pop 列表 : git stash list
3. 参考文献
- 廖雪峰:https://www.liaoxuefeng.com/wiki/896043488029600
- 阮一峰:http://www.ruanyifeng.com/blog/2014/06/git_remote.html
- 简明指南:http://rogerdudler.github.io/git-guide/index.zh.html
- Git奇技淫巧:https://github.com/521xueweihan/git-tips
- Git Book:https://git-scm.com/book/zh/v2