相关材料
常用命令
仓库的初始化
本地创建新的仓库
1 | 新建一个git仓库,运行完后会在当前目录下生成一个.git 目录 |
从远程仓库中拉取一个仓库到本地
完成秘钥配置后,可以将gitlab上的项目下载到本地进行部署
1 | git clone remote-repertor(https://github.com/libgit2/libgit2) local—repertory(可以省了默认保持原仓库名称) |
完成项目到本地的传输后,可以进行相应的安装或使用,git clone仅能用于将远程项目初始化到本地(从无到有)不支持后续的更新同步
下载更新
作为多人版本协作,会有不同的人同时对项目进行更新,所以有时候会有需求将他人的更新同步到本地流程中,使用 git pull命令
- 正规流程
1 | git status(查看本地分支文件信息,确保更新时不产生冲突) |
- 快速流程
1 | 上面是比较安全的做法,如果你可以确定什么都没有改过只是更新本地代码 |
版本管理
提交更新
提交更新主要分三个部分,1,更新提交到本地暂存区;2.更新到本地版本库;3.推送更新。
1 | git add file.name #将更新的文件提交到本地的缓存区; |
添加tag
像其他版本控制系统(VCS)一样,Git 可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点( v1.0 、 v2.0 等等)。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 列出标签
git tag
例如符合条件的标签
git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
v1.8.5-rc3
创建标签,其中 -m可选,版本校验值缺省时默认是当前版本
git tag -a v1.4 -m "my version 1.4" ca82a6dff817ec66f44342007202690a93763949
共享标签, 标签在推送时,默认是不会进行推送的,需要进行显式的提交
git push origin v1.5 # 推送指定的tag版本(v1.5)
git push origin --tags # 推送全部tags
查看本地的版本记录
1 | 查看版本更新日志 |
比较两个版本之间的区别
1 | 查看任意两个版本之间的改动: |
对本地版本进行更改
1 | git reset gitversion filename# 撤销提交缓存区的偶作 |
–hard 不保存所有变更
–soft 保留表更且变更内容处于staged
–mixed 保留biang且变更内容处于modified(默认)
对特定文件进行管理 - 恢复修改的文件
只修改了文件,没进行任何git操作
1
2只是修改了文件,没有任何 git 操作,直接一个命令就可回退:
git checkout -- aaa.txt # aaa.txt为文件名修改了文件,并提交到暂存区(即编辑之后,gitadd但没有 git commit -m ….)
1
2
3git log --oneline # 可以省略
git reset HEAD # 回退到当前版本
git checkout -- aaa.txt # aaa.txt为文件名修改了文件,并提交到仓库区(即编辑之后,gitadd和 git commit -m ….)
1
2
3git log --oneline # 可以省略
git reset HEAD^ # 回退到上一个版本
git checkout -- aaa.txt # aaa.txt为文件名
分支管理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 列出分支命令:
git branch
创建分支命令:
git branch (branchname)
切换分支命令:
git checkout (branchname)
创建并切换该分支
git checkout -b <name>
合并分支命令:
git merge newtest # 将newtest分支合并到当前分支
重命名分支
git branch -m/-M <oldname> <newname>
删除分支命令:
git branch -d (branchname)
恢复的删除分支
git branch <name> <删除分支的commitID>
比较两个分支
1 | 显示出branch1和branch2中差异的部分 |
远程仓库操作
1 | 克隆一个已有的远程git仓库 |
Patching
有记录的进行版本回退。
1 | Given one or more existing commits, revert the changes that the related patches introduce, and record some new commits that record them. |
merge
1 | git merge |
git merge