Git 学习
Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
一、安装git
1.在Linux上安装git
ubuntu上的命令:
1 | $ sudo apt-get install git |
如果是其他版本的Linux可以通过源码安装。
先从官网下载源码,然后解压,依次输入:./config , make , sudo make install这几个命令。
2.在Mac OS 上安装git
在Mac上安装推荐从APPSTORE安装。
3.在Windows上安装git
从git官网下载程序安装,按默认一直点下一步就可以。
安装完成后,在开始菜单或者右键里可以找到git/git bash here点击运行出现类似命令行窗口的东西,恭喜你git安装成功了!
然后在命令行里配置你的用户名和email地址。
1 | $ git config --global user.name "youname" |
二、创建仓库
仓库就是版本库,英文名repository ,每个文件的修改、删除都在版本库里并且可以被追踪。
命令:
1 | $ mkdir Learn //创建文件夹 |
这时文件夹里会出现一个.git目录,如果没有看到那就打开隐藏文件。
三、把文件添加到版本库
- 首先我们建立一个文本文档命名为README.txt,用命令添加到仓库:
1 | $ git add README.txt //git add <file>可以多次使用,添加多个文件 |
- 用命令git commit告诉git,把文件提交到仓库。-m后面的内容是本次提交的说明,可以是任意的内容:
1 | $ git comnit -m "新建一个README.txt" |
- 可以使用命令git status 查看当前仓库的状态:
1 | $ git status |
- 使用命令git diff可以查看文件做了什么修改:
1 | $ git diff README.txt |
注:如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
- 使用命令git log显示从最近到最远的提交日志:
1 | $ git log //如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数 |
- HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭
1 | $ git reset --hard commit_id //commit_id是版本号 |
- 使用git reflog查看命令历史,以便确定要回到未来的哪个版本
1 | $ git reflog |
- 使用git checkout 命令可以丢弃工作区的修改
1 | $ git checkout -- file |
- 使用git rm命令用于删除一个文件
1 | $ git rm README.txt |
四、把文件添加到远程仓库
- 由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以第一步是创建SSH Key。
1 | $ ssh-keygen -t rsa -C "youremail@example.com" //一路回车,使用默认值即可 |
- 登录GitHub 打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
- 要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
1 | $ git remote add origin git@github.com:zhaozhifu-catshak/Learn.git |
- 关联后,使用命令git push -u origin master第一次推送master分支的所有内容,此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改
- 用命令git clone克隆一个远程库到本地
1 | $ git clone git@github.com:zhaozhifu-catshak/Learn.git |
五、创建分支
- 首先,我们创建read分支,然后切换到read分支:
1 | $ git checkout -b read |
- git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
1 | git branch read //创建read分支 |
- 使用git branch命令查看当前分支:
1 | $ git branch |
- git branch命令会列出所有分支,当前分支前面会标一个*号。
然后,我们就可以在read分支上正常提交。
- 使用git merge命令用于合并指定分支到当前分支。
1 | $ git merge read |
- 合并完成后,就可以放心地删除read分支了
1 | $ git branch -d read |
- 删除后,查看branch,就只剩下master分支了:
1 | $ git branch |
用git log –graph命令可以看到分支合并图.
合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
1 | $ git merge --no-ff -m "merge with no-ff" read |
- 使用git branch -D file 命令强行删除分支
- 推送分支:
1 | $ git push origin read |
六、创建标签
- 首先,切换到需要打标签的分支上,使用命令 git tag打标签。
1 | $ git branch |
- 用命令git tag查看所有标签.
1 | $ git tag |
- 命令git tag -a tagname -m “blablabla…” 可以指定标签信息
1 | $ git tag -a v0.1 -m "version 0.1 released" 1094adb |
- 使用参数-d删除 本地 标签
1 | $ git tag -d v0.1 |
命令git push origin :refs/tags/tagname 可以删除一个远程标签
命令git push origin tagname 可以推送一个本地标签;
命令git push origin –tags可以推送全部未推送过的本地标签;
让git显示颜色
1 | $ git config --global color.ui true |
- 2019年3月31日下午13:20
七、LFS(Large File Storage)
- 1.显示 Git LFS 系统环境 .
1
$ git lfs env:
- Populate working copy with real content from Git LFS files.
- 2.使用来自Git LFS文件的真实内容填充工作副本
1
$ git lfs checkout:
Download Git LFS files from a remote.
- 3.从远程下载Git LFS文件
1
$ git lfs fetch:
- Check Git LFS files for consistency.
- 4.检查Git LFS文件的一致性
1
$ git lfs fsck:
- Install Git LFS configuration.
- 5.安装Git LFS并配置
1
$ git lfs install:
- Set a file as “locked” on the Git LFS server.
- 6.在Git LFS服务器上将文件设置为“锁定”。
1
$ git lfs lock:
- List currently “locked” files from the Git LFS server.
- 7.列出当前从Git LFS服务器“锁定”的文件
1
$ git lfs locks:
- Show errors from the Git LFS command.
- 8.显示来自Git LFS命令的错误。
1
$ git lfs logs:
- Show information about Git LFS files in the index and working tree.
- 9.在索引和工作树中显示关于Git LFS文件的信息
1
$ git lfs ls-files:
- Migrate history to or from Git LFS
- 10.将历史迁移到或从Git LFS
1
$ git lfs migrate:
- Delete old Git LFS files from local storage
- 11.从本地存储中删除旧的Git LFS文件
1
$ git lfs prune:
- Fetch Git LFS changes from the remote & checkout any required working tree files.
- 12.从远程获取Git LFS更改并检出任何所需的工作树文件
1
$ git lfs pull:
- Push queued large files to the Git LFS endpoint.
- 13.将排队的大文件推送到Git LFS端点
1
$ git lfs push:
- Show the status of Git LFS files in the working tree.
- 14.显示工作树中Git LFS文件的状态
1
$ git lfs status:
- View or add Git LFS paths to Git attributes.
- 15.查看或向Git属性添加Git LFS路径
1
$ git lfs track:
- Uninstall Git LFS by removing hooks and smudge/clean filter configuration.
- 16.通过删除挂钩和涂抹/清除过滤器配置卸载Git LFS
1
git lfs uninstall:
- Remove “locked” setting for a file on the Git LFS server.
- 17.删除Git LFS服务器上文件的“锁定”设置。
1
$ git lfs unlock:
- Remove Git LFS paths from Git Attributes.
- 18.从Git属性中删除Git LFS路径
1
$ git lfs untrack:
- 19.更新当前Git存储库的Git hooks.
1
$ git lfs :
- 20.报告版本号.
1
$ git lfs version:
- Git LFS是一个与Git存储库相关联的大型文件管理和版本控制系统。Git LFS不将大型文件存储为blobs,而是在存储库中存储特殊的“指针文件”,同时将实际的文件内容存储在Git LFS服务器上。当需要时,会自动下载大文件的内容,例如签出包含大文件的Git分支时。
- Git LFS使用“smudge”过滤器根据指针文件查找大文件的内容,使用“clean”过滤器在大文件的内容发生更改时创建指针文件的新版本。它还使用预推钩子将包含新大文件版本的提交上传到相应的Git服务器时,将大文件内容上传到Git LFS服务器。
- 本文作者: 无聊才读书
- 版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!