前言
自动帮助记录每次文件的改动, 同时协作永工作
学习 Git 命令是充分必要的
集中式和分布式
分布式每个人电脑都是一个完整的版本库, 也有类似中央服务器的电脑, 但是这个服务器只是用来交互打架的修改没有它大家也一样干活, 只是交互修改不方便而已
安装只要安装了 xcode 就可以了
仓库: 里面文件修改, 删除, 添加都能被 Git 追踪, 认识时刻都能追踪历史或者将来某哥时刻还原只能追踪文本文件的改动
创建目录和查看路径
mkdir 创建目录
cd 进入到目录里面
pwd 用于显示当前的目录
cat 查看文件内容
Git 命令使用说明
初始化一个目录成 Git 的仓库 (版本库) 包括暂存区和 master 分支
Git init 查看当前目录的文件包括隐藏文件
ls -ah 获取 Git 命令的手册页
Git help 使用 Git 前需要进行一些全局的配置
> 1, 用户目录下的配置, 当前登陆用户所有的仓库调用这个配置 ~/.gitconfig
> 2, 项目目录的配置, 优先级高, 覆盖全局配置配置用户名和邮箱
- Git config --global user.name "wirelessqa"
- Git config --global user.email wirelessqa.me@gmail.com
Git config --global color.ui true 让 Git 显示颜色, 会让命令输出看起来更醒目
.gitignore 配置 不纳入 Git 管理 主要是系统文件, 编译文件, 自定义的文件 , 这个文件也用推送到远程库
https://github.com/github/gitignore , 创建 touch 命令
配置编辑器 Git 在需要输入一些消息
Git config --global core.editor Emacs
配置比较工具
Git config --global merge.tool vimdiff
读取配置(同一个配置选项会出现多次, 以最后一次为准)
Git config --list
提交文件之前
先查看当前的状态 , 能提示你接下来怎么做的命令, 比如修改工作区文件内容, 提示你添加到暂存区或者丢弃工作区修改的命令
Git status
查看文件到底修改了什么
Git diff
提交修改
纳入 Git 仓库管理, 把修改添加到暂存区(使用. 代表将所有的修改进行添加)
Git add .
把暂存区里面的所有修改提交到当前分支同时创建一个快照
Git commit -m ""
如果确认当前所有变更都是同一个 commit, 可以直接加 - a, 就不必一个一个 add 了
Git commit -a -m ""
工作区和版本库里最新版本的区别
Git diff HEAD -- readme.txt
查看提交历史
Git log --pretty=oneline
撤销修改
Git checkout -- readme.txt
> 1, 修改后还没添加到暂存区 , 撤销修改回到最近一次 commit 的状态, 也就是和版本库里面的状态一样
> 2, 修改后被添加到暂存区了, 又做了修改 , 撤销修改就回到添加到暂存区后的状态, 也就是跟暂存区里面的状态保持一致
> 3, 用版本库里的版本替换工作去的版本, 无论工作区是修改还是删除
可以把暂存区的修改撤销掉
Git reset HEAD file
提交文件删除修改到暂存区
Git rm test.txt
版本回退
Git 的版本回退知识改了 head 指针, 顺便把工作区的文件更新掉了
Git reset --hard HEAD^
或
Git reset --hard 3628164
查看命令历史
可以看到 reset 和 commit 等命令历史, 可以利用这个命令查看最近一次
commitidgit reflog
工作区和暂存区
工作区: 电脑上能看到的目录 , 里面有个. Git 隐藏目录这个不算工作区, 是 Git 的版本库版本库里面包含了暂存区 stage 和 Git 为我们自动创建第一个分支
远程库管理
查看远程库信息
Git remote -v
修改远程仓库地址(在已经 add 了远程仓库地址, 使用它进行修改地址)
Git remote set-url origin https://github.com/USERNAME/OTHERREPOSITORY.git
关联远程库(添加远程仓库地址)
Git remote add origin Git@GitHub.com:linhbcode/first-test.Git
本地的 master 分支推送到远程的 master 分支上, 原则就是 master 分支要与远程同步 ,dev 分支开发分支, 也需要远程同步
Git push origin master
master 分支推送到远程的 master 分支, 本地 master 分支和远程 master 分支建立关联
Git push -u origin master
Git 自动把本地的 master 分支和远程的 master 分支对应起来了, 并且, 远程仓库的默认名称是
origingit clone Git@GitHub.com:linhbcode/first-test.Git
Git pull 如果提示冲突解决冲突 抓去信息碰到没有链接的 有两种方式解决
> 1,Git branch --set-upstream branch-name origin/branch-name 建立本地分支和远程分支的关联
> 2,Git pull origin branchname
分支管理
1, 不完整的代码在其它分支上提交
2, 每个提交都在一个时间线上的节点上, 分支相当于指向一个节点的指针
head 本质上是指向分支的指针
创建并切换分支
Git checkout -b dev
本地分支创建和远程分支相同的分支, 主要是仓库从远程 clone 过来的(一般要先 Git fetch, 再 Git checkout -b branch-name origin/branch-name)
Git checkout -b branch-name origin/branch-name
创建分支
Git branch dev
切换分支 , 如果当前的工作只完成一半, 还没发提交的话
Git checkout dev
可以用 Git stash 保存工作现场 , 在用它之前可以 Git stash list 查看有几个暂存的列表
查看有几个暂存的列表
Git stash list
保存工作现场
Git stash
恢复 工作现场
Git stash apply
来删除 工作现场
Git stash drop
查看当前分支
Git branch
查看远程分支
Git branch -r
合并分支
Git merge dev
删除分支
Git branch -d dev
强行删除分支
Git branch -D dev
(删除远程分支)冒号前面的空格不能少, 原理是把一个空分支 push 到 server 上, 相当于删除该分支.
Git push origin :branch-name
提交本地 test 分支作为远程的 master 分支
Git push origin test:master
提交本地 test 分支作为远程的 test 分支
Git push origin test:test
刚提交到远程的 test 将被删除, 但是本地还会保存的, 不用担心
Git push origin :test
查看分支合并图
Git log --graph
查看提交历史
Git log --pretty=oneline --abbrev-commit
合并分支
Git merge branchname
合并分支的时候不采用 ff 模式(分支删除了还能看的到分支历史信息)
Git merge --no-ff -m "merged bug fix 101" issue-101
标签管理
描述开发历程, 在发布一个版本的时候打一个标签
查看所有的标签
Git tag
对莫一个提交历史打一个标签
Git tag v1.0 [commit id]
查看标签信息
Git show [tagname]
正式开发下最好用这条语句标注下这个标签的描述
Git tag -a v0.1 -m "version 0.1 released" 3628164
删除标签
Git tag -d v0.1
推送标签
Git push origin v1.0
推送全部标签
Git push origin --tags
远程删除标签(先从本地删除标签)
Git push origin :refs/tags/v0.9
结语
来源: https://www.jb51.net/article/156953.htm