文章目录
- 1.获取Git仓库
- 1.1 已存在目录中初始化仓库
- 1.2 克隆一个仓库
- 2. 将变更提交到仓库
- 2.1 查看当前文件状态
- 2.2 跟踪新文件
- 2.3 暂存已修改的文件
- 2.4 忽略文件
- 2.5 查看已暂存和未暂存的修改
- 2.6 提交更新
- 2.7 跳过使用暂存区
- 2.8 移除文件
- 3. 查看提交历史
- 4.远程仓库
- 4.1 查看远程仓库
- 4.2 添加远程仓库
- 4.3 从远程仓库中抓取与拉取
- 4.4 推送到远程仓库
- 4.5 查看某个远程仓库
- 4.6 远程仓库的重命名与移除
- 5. 打标签
- 5.1 列出标签
- 5.2 创建标签
- 5.2.1 附注标签
- 5.2.2 轻量标签
- 5.2.3 给历史推送打标签
- 5.3 共享标签
- 5.4 删除标签
- 6. Git别名
1.获取Git仓库
1.1 已存在目录中初始化仓库
如果想对某个目录下的文件进行版本控制,可以利用git来进行版本控制。
操作步骤1:
进入需要版本控制的目录下
cd /test
操作步骤2:
初始化仓库
git init
在执行完git init后,目录下会产生一个.git的子目录,该目录中记录着git仓库中所有的文件。
1.2 克隆一个仓库
克隆一个仓库就是将一个远程仓库中某个仓库的全部信息(文件信息和版本信息
)拷贝到本地。
HTTPS协议方式
在GitHub远程仓库中获取某个仓库的Https协议的方式。
git clone https://github.com/vuejs/awesome-vue.git
克隆完成后结果:
此时就会在目录下创建,以相应仓库名称命名的文件夹,该文件夹下保存了仓库的所有信息。
如果本地仓库的名称和克隆仓库的名称不同,可以通过git clone url name
方式自定义本地仓库名称。
2. 将变更提交到仓库
Git中文件状态变化周期如下:
未追踪状态:表示没有添加进仓库进行追踪的文件。
未修改状态:表示已经添加至仓库中,且没有进行修改的文件。
修改状态:表示已经添加至仓库中,且已经修改过的文件。
暂存状态:表示已经添加至本地仓库,但是没有提交的文件。
2.1 查看当前文件状态
git status
命令用来查看文件的状态。
这种提示表示,所有已跟踪文件在上次提交后都未被修改,且没有出现任何处于未跟踪状态的新文件。
git status -s
或者git status --short
命令表示以简短的形式查看文件的状态。
2.2 跟踪新文件
git add filename
命令用来跟踪filename这个文件名,其中filename可以*通配符表示多个字符。当filename为文件时,表示追踪该文件,当filename为文件夹时,表示追踪该文件夹下所有文件。
git add *
表示添加所有文件。
2.3 暂存已修改的文件
git add
指令是一个多功能命令:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。将这个命令理解为“精确地将内容添加到下一次提交中”而不是“将一个文件添加到项目中”要更加合适。
2.4 忽略文件
表示忽略追踪哪些文件。通常是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。
创建.gitignore
文件,每一行中填写需要忽略的文件名称的正则表达式。
文件.gitignore的格式规范如下:
- 所有空行或以#开头的行都会被Git忽略
- 可以使用标准的glob模式匹配,它会递归地应用在整个工作区中。
- 匹配模式可以以/开头防止递归
- 匹配模式可以以/结尾指定目录
- 要忽略指定模式以外的文件或目录,可以在模式前加上叹号!取反。
glob模式
是指shell所使用的简化了的正则表达式: - *匹配零个或多个任意字符
- [abc]匹配任何一个列在方括号中的字符
- ?只匹配一个任意字符
- 如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配。
- 使用**表示匹配任意中间目录。
# 忽略所有的.a文件
.a
# 跟踪所有的lib.a,即便你在前面忽略了.a文件
!lib.a
# 只忽略当前目录下的TODO文件,而不忽略subdir/TODO
/TODO
# 忽略任何目录下名为build的文件夹
build/
# 忽略doc/notes.txt, 但不忽略doc/server/arch.txt
doc/*.txt
# 忽略doc/目录及其所有子目录下的.pdf文件
doc/**/*.pdf
2.5 查看已暂存和未暂存的修改
git diff
表示查看尚未暂存的文件更新了哪些部分。比较的是工作目录中当前文件和暂存区域快照之间的差异。也就是修改之后还没有暂存起来的变化内容。
git diff --staged
表示查看已暂存的将要添加到下一次提交里的内容,对比已暂存文件与最后一次提交的文件差异。
2.6 提交更新
git commit
命令用来将已经暂存的文件提交。
在提交更新之前,需要确认还有什么已修改或新建的文件还没有git add过,否则提交的时候不会记录这些尚未暂存的变化。这些已修改但未暂存的文件只会保留在本地磁盘。
git commit -m "commits"
命令用来在提交暂存文件时,提交相应的注释信息。
2.7 跳过使用暂存区
git commit -a -m "comments"
命令用来自动把所有已经跟踪过的文件
暂存起来一并提交。
新建的文件无法被提交!
2.8 移除文件
要从Git中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区移除),然后提交。
git rm filename
命令用来从删除指定的文件,并从git暂存区中移除相应的文件。
如果要删除之前修改过或已经放在暂存区的文件,则必须使用强制删除选项-f。
git rm --cached filename
命令表示将filename从暂存区中移除,但是不删除本地磁盘中文件。
3. 查看提交历史
git log
命令用来查看提交历史信息。
git log -p -n
命令用来查看每次提交所引入的差异,-n表示显示最近n次的差异
4.远程仓库
4.1 查看远程仓库
git remote -v
命令显示需要读写远程仓库使用的git保存的简写与其对应的url。
4.2 添加远程仓库
git remote add <shortname> <url>
命令用来添加一个url的远程仓库,并将其命名为shortname。
4.3 从远程仓库中抓取与拉取
git fetch <remote>
命令会访问远程仓库,并拉取所有你还没有的数据。执行完后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
git fetch命令只会将数据下载到你的本地仓库–它并不会自动合并或修改你当前的工作。当准备好时你必须手动将其合并入你的工作。
git pull
命令会自动抓取后合并该远程分支到当前分支。
4.4 推送到远程仓库
git push <remote> <branch>
命令用来将branch分支的内容推送到remote远程仓库中。
该命令只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。
当和其他人共同合作时,通常需要先抓取他们的工作,并将其合并进你的工作后才能推送。
4.5 查看某个远程仓库
git remote show <remote>
查看某一个远测仓库的更多信息。
4.6 远程仓库的重命名与移除
git remote rename oldname newname
命令用来将oldname的远程仓库别名修改为newname。这个操作,同样会修改该远程仓库分支的名称
.
git remote remove name
命令用来移除别名为name的远程仓库。
5. 打标签
Git可以给仓库历史中的某一个提交打上标签,以示重要。
5.1 列出标签
git tag
命令用来列出已有的标签。
git tag -l <name>
命令用来列出满足name规则名称的标签名称。
5.2 创建标签
5.2.1 附注标签
存储在Git数据库中的一个完整对象,它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间和标签信息,并可以使用GPG签名验证。
git tag -a <tagname> -m <comments>
命令用来添加一个tagname的标签,并指定了一条将会存储在标签中的信息comments。
git show <tagname>
命令用来查看标签信息和与之对应的提交信息。
5.2.2 轻量标签
轻量标签像一个不会改变的分支–它只是某个特定提交的引用。
git tag <tagname>
命令用来添加一个轻量标签。轻量标签本质上是将提交校验和存储到一个文件中,没有保存任何其他信息。
5.2.3 给历史推送打标签
git tag -a <tagname> <commit hash>
其中commit hash表示历史中提交的版本的hash值。
5.3 共享标签
git push <remote name> <tagname>
命令表示将tagname共享到remote name仓库中。
git push <remote name> --tags
命令表示将多个tagname共享到remote name仓库中。
5.4 删除标签
删除本地仓库上的标签。
git tag -d <tagname>
命令用来删除本地仓库中tagname的标签。
git push <remote> :refs/tags/<tagname>
命令用来更新远程仓库的标签。
git push <remote> --delete <tagname>
命令同样用来删除远程仓库的标签。
6. Git别名
就是用自定已的命令名称来代替一些git默认的命令。
git config --global alias.<aliasname> <origin order>
命令用来表示用aliasname命令代替origin order命令。