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
2
3
4
5
git commit -m `
message1
message2
message3
`

  如果想要写详细的注释信息,直接在命令框里编辑会比较麻烦,可以使用-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,有时候你希望强制提交。