您的位置:首页 > 其它

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 merge
git 无法快速合并

# 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: