git 版本控制常用命令 - 整理

git 版本控制常用命令 - 整理

说明

看了廖老师的 Git 教程,教程非常详细,学习的过程中整理出了,一些常用的 git 命令,这里做一个记录。

1. 集中式 vs 分布式

1. 集中式版本控制系统

集中式版本控制系统的版本库是集中存放在中央服务器的,工作的时候需要先从中央服务器中读取最新的版本,然后开始工作,工作完在推送给中央服务器,集中式的最大缺点就是必须联网才能工作,中央服务器出问题,就很难解决

2. 分布式版本控制系统

分布式版本控制系统没有中央服务器的概念,每个人的电脑上都是一个完整的版本库,但也需要一个充当中央服务器的电脑,方便数据交换,中央服务器换掉没有关系,从其他人的版本库中复制就可以了

2. 版本库

  1. 工作区:创建的能看到的目录,就是一个工作区,文件的创建修改都在这里完成

  2. 版本库:工作区中的隐藏目录 .git 就是当前的版本库,包括 暂存区与分支

  3. 暂存区:stage 需要提交的文件都会放大暂存区,然后,可以一次性的提交暂存区的修改到分支

  4. 分支: git 会自动创建 master 分支

更多内容查看

3. 命令

1. 创建目录,通过 git init 初始化仓库
    mkdir test
    git init
2. 添加文件到版本库,直接在 test 当前文件夹下,编写文件并保存,然后执行命令
    # 把指定文件添加到版本库中的暂存区(stage),可以反复多次使用
    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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值