Git基础篇(五)——Git版本提交
Git基础篇(四)——Git版本提交
前言:
Git操作的单位是版本,一次提交就是一个版本,而所有版本的集合就是版本库(Repository)。Git的操作就是针对版本的操作,想要熟练掌握Git关键就在熟练的对版本的操作。
1 Git提交
1.1 修改提交到暂存区
当对某个文件内容进行修改或新增文件后,我们需要先将这些“变化”提交到 暂存区 。
1.1.1 git add
将工作区当前目录及其子目录内所有变化提交到暂存区,包括修改、新建和删除。
1 | git add . |
将工作区被删除或修改的文件提交到暂存区,不会提交新建的文件。
1 | git add -u |
1 | git add --update |
将整个工作区所有目录内的所有变化提交到暂存区,包括修改、新建和删除。在v2.0以上版本中,与git add .
的区别在只是作用范围不同。
1 | git add -A |
1 | git add --all |
如果写明文件名可以指定要提交到暂存区的文件。
1 | git add a.c a.h |
1.2 修改提交到本地仓库
git commit
指令用于将暂存库的修改提交到本地仓库。
1.2.1 git commit
将暂存区的修改提交到本地仓库中并且添加Log说明可以使用下面这条命令。-m
参数后接一个字符串,作为对本次版本提交的说明。如果加了-m
参数但不输入“message”信息,则会进入Vi模式让你手动编辑说明信息。
1 | git commit -m "message" |
输入的“message”也可以是多行。
1 | git commit -m ` |
如果想要写详细的注释信息,直接在命令框里编辑会比较麻烦,可以使用-F
参数指定文件,将文件内容作为版本提交时的说明信息。比如工程上一级目录中有一个”log.txt”说明文件,可以这样写指令。
1 | git commit -F ../log.txt |
对已经完成的提交再次修改。比如你讲修改提交到仓库后,Leader觉得不行要你继续修改,这时候版本已经提交上去了,要么abandon这次提交,要么对这次提交再次修改。通常再次修改是更好的选择。回车后会进入Vi模式,重写注释内容。
1 | git commit --amend |
如果只想修改提交内容而不像修改注释可以使用--no-edit
命令。
1 | git commit --amend --no-edit |
如果对工作区文件进行了修改或删除(不包括新增),想要同时完成提交到暂存区和本地仓库,那么可以使用-a
或--all
指令。要注意该条指令是对整个工作区有效。
1 | git commit -a -m "message" |
可以写明文件名指定要提交的文件。
1 | git commit a.c a.h -m "message" |
1.3 修改提交到远程仓库
1.3.1 git push
git push
命令用于将本地仓库修改推送到远程仓库。一般形式为:git push <远程主机名> <本地分支名>:<远程分支名>
。
比如下面这条指令就表示将本地名为master的分支推送到远程名为origin的主机上名为master的分支,通常本地分支名和远程分支名是相同的。
1 | git push origin master:master |
若将本地分支名省略,则表示表示将远程上名为master的分支删除。含义就是给远程origin主机上master分支推送一个空分支,就是删除它。
1 | git push origin :master |
如果省略的是远程分支名,则默认将当前分支推送到远程与其存在追踪关系的分支,通常两个分支是同名的。如果远程不存在这个分支则会新建它然后推送。
1 | git push origin master |
如果当前分支与远程分支存在对应关系,甚至可以将远程分支都省略,将当前分支推送到origin主机对应的分支。
1 | git push origin |
如果当前分支只有一个远程主机和分支,连主机名都可省略。
1 | git push |
如果一个分支与多个主机都存在追踪关系,可以指定一个默认主机。比如下面的代码将origin作为该分支的默认主机。
1 | git push -u origin master |
将本地所有分支推送到远程服务器分支,如果分支不存在则新建。
1 | git push --all origin |
通常修改前我们需要先将服务器上最新的版本pull到本地然后在最新版本上修改上传,如果修改的版本是基于比服务器上当前版本更低的,通常提交时会提示你pull,有时候你希望强制提交。