git 版本控制常用命令 - 整理
2017-06-13 14:17
721 查看
git 版本控制常用命令 - 整理
说明
看了廖老师的 Git 教程,教程非常详细,学习的过程中整理出了,一些常用的 git 命令,这里做一个记录。1. 集中式 vs 分布式
1. 集中式版本控制系统
集中式版本控制系统的版本库是集中存放在中央服务器的,工作的时候需要先从中央服务器中读取最新的版本,然后开始工作,工作完在推送给中央服务器,集中式的最大缺点就是必须联网才能工作,中央服务器出问题,就很难解决2. 分布式版本控制系统
分布式版本控制系统没有中央服务器的概念,每个人的电脑上都是一个完整的版本库,但也需要一个充当中央服务器的电脑,方便数据交换,中央服务器换掉没有关系,从其他人的版本库中复制就可以了2. 版本库
工作区:创建的能看到的目录,就是一个工作区,文件的创建修改都在这里完成版本库:工作区中的隐藏目录 .git 就是当前的版本库,包括 暂存区与分支
暂存区:stage 需要提交的文件都会放大暂存区,然后,可以一次性的提交暂存区的修改到分支
分支: git 会自动创建 master 分支
更多内容查看
3. 命令
1. 创建目录,通过 git init
初始化仓库
mkdir test git init
2. 添加文件到版本库,直接在 test
当前文件夹下,编写文件并保存,然后执行命令
# 把指定文件添加到版本库中的暂存区(stage),可以反复 4000 多次使用 git add index.html # 全部文件添加到版本库 git add .
3. 文件从暂存区提交到版本库中的分支,添加版本的提交说明
# -m 后是提交说明,可以是任意内容,文件从暂存区提交到版本库中的分支 git commit -m 'xxx'
4. 显示仓库的当前状态,(修改情况)
git status
5. 查看修改的内容
git diff
6. 查看历史修改记录
# 一般输出,内容多 git log # 输出简化单行版 git log --pretty=oneline
7. 退回到上一个版本
# HEAD 表示当前版本 HEAD^ 表示上一个版本 HEAD^^ 上两个版本 git reset --hard HEAD^ # 94f41241d 表示要回退的 commit id 前几位 git reset --hard 94f41241d
8. 显示git 记录的每一次的命令
git reflog
9. 丢弃掉工作区的修改
# file 需要取消更改的文件名 git checkout -- file
10. 将提交到暂存区的修改回退到工作区
# file 需要取消更改的文件名 git reset HEAD file
11. 关联一个远程仓库
git remote add origin git@github.com:mjzhang1993/gitcontroltest.git
12. 将版本库master 分支中的内容推送给远程仓库
# -u 用作初次推送的时候,将本地分支与远程分支关联起来 git push -u origin master
13. 从远程仓库克隆
# -u 用作初次推送的时候,将本地分支与远程分支关联起来 git clone git@github.com:mjzhang1993/gitcontroltest.git
14. 创建分支
# 创建分支 dev git branch dev # 列出所有分支,查看当前分支 git branch # 查看远程分支 git branch -a # 重命名本地分支 git branch -m dev devs
15. 切换分支
# 切换分支 git checkout dev # 创建并且切换分支 git checkout -b test
16. 合并指定分支到当前分支
# 切换到 master 主分支 git checkout master # 合并 dev 分支到 master 主分支 git merge dev
17. 删除分支
# 删除本地分支 git branch -d dev # 删除远程分支 git push origin --delete dev
18. 分支合并冲突
当要合并的两个分支都有不一样的修改, 通过git mergegit 无法快速合并
# dev 分支修改文件 git checkout dev # 查看修改的文件 git status # dev分支修改提交 git add . git commit -m 'dev change' # 切换到 master 分支修改文件 git checkout master # 查看修改的文件 git status # master 分支修改提交 git add . git commit -m 'master change' # 在 master 分支中合并 dev 分支,产生冲突 git merge dev # 查看冲突文件位置 git status # 文件冲突位置 手动修改文件,确定最终输出版本,再提交一次 git add . git commit -m 'master and dev change' # 查看分支合并情况 git log --graph --pretty=oneline --abbrev-commit
19. BUG 分支,以及储藏工作现场
# 在dev分支工作,并修改文件,修改后不添加到版本库 git checkout dev # 存储工作现场 git stash # 查看现在的工作区,干净的 git status # 创建分支修复BUG git checkout master git checkout -b issue-001 # 在BUG 分支修改后提交 git add . git commit -m 'xxx' # 切换到 master 分支 并合并 git checkout master git merge --no-ff -m "merged" issue-001 # 删除 临时处理BUG 的分支 git branch -d issue-001 # 返回 dev 分支继续工作 git checkout dev # 查看存储的工作现场 git stash list # 恢复上一个工作现场,并删除记录 git stash pop # 恢复到指定的工作现场 stash@{0} 通过 git satsh list 查看 git stash apply --stash@{0} # 删除 stash 记录 git stash drop --stash@{1}
20. 查看远程仓库的信息
# 查看远程分支 git remote # 查看详细信息 git remote -v
21. 推送分支
# dev 是要推送的分支名 git push origin dev
22. 多人协作
# 一个成员加入,从远程克隆项目 git clone git@github.com:mjzhang1993/gitcontroltest.git # 查看克隆后的分支,只能看到 master 的 git branch # 使用远程的dev 分支开发,创建远程的dev分支到本地 git checkout -b dev origin/dev # 修改 dev 分支 提交到版本库 git add . git commit -m 'xxx' # 提交到远程 git push origin dev # 另一个成员同样更改了 dev 并提交,且两次提交内容有冲突 git add. git commit -m 'other' git push origin dev # 报错 # 把最新的提交从远程仓库抓下来 git pull # 如果失败 no tracking information,原因是,本地dev 分支与远程origin/dev 分支没有连接,需要设置链接 git branch --set-upstream dev origin/dev # 显示 --set-upstream 将被弃用 git branch --set-upstream-to=origin/dev # git version 2.3.8 (Apple Git-58) # 再次执行抓取 git pull # 合并冲突后,再次提交 git add . git commit -m 'xxx' git push origin dev
23. 标签
tag 标签是版本库的一个快照,与 commit 比,他是一个有意义的名字# 切换大需要打标签的分支 git checkout master # 在最新的提交上打上标签 git tag v0.0.1 # 查看标签 git tag # 找到历史提交的commit id git log --pretty=oneline --abbrev-commit # 给历史的commit 打标签 git tag v0.0.0 6d66b5d # 查看标签信息 git show v0.0.0 # 创建带有说明的标签 -a 指定标签名 -m 指定说明文字 git tag -a v0.0.2 -m 'version 0.0.2' a200582 # 删除标签 git tag -d v0.0.0 # 推送某个标签到远程 git push origin v0.0.1 # 推送全部未推送到远程的本地标签 git push origin --tags # 删除已推送到远程的标签 # 先删除本地的标签 git tag -d v0.0.1 # 再删除远程的标签 git push origin :refs/tags/v0.0.1
24. 忽略文件
在git 的工作区根目录创建.gitignore文件,把要忽略的文件名添加进去,git 就会自动忽略这些文件
.idea/ /node_modules/
强制添加或略类型的文件
git add -f App.class
相关文章推荐
- 版本控制工具git的安装和常用命令
- git版本控制常用的命令
- 版本控制:git常用命令
- [版本控制之道] Git 常用的命令总结(欢迎收藏备用)
- GIT 版本控制常用命令汇总
- Git 版本控制常用命令 简明指南教程
- 版本控制-Git常用命令
- Git 版本控制库常用命令
- 版本控制 Git 常用操作命令
- liunx、android等常用命令。还有就是git版本控制
- 版本控制工具Git详细介绍和常用命令
- 版本控制工具Git 常用操作命令
- [版本控制之道] Git 常用的命令总结(欢迎收藏备用)
- git 版本常用控制命令
- 分布式版本控制 git 概念 及常用命令总结
- 版本控制:git常用命令(2)
- 项目开发版本控制工具之常用git命令总结
- 版本控制-Git服务器搭建和常用命令使用
- git版本控制常用的命令
- GIT 版本控制常用命令汇总