$ git push origin :master
# 等同于
$ git push origin --delete master

 git push origin

上面命令表示删除origin主机的master分支。

如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。

$ git push origin

上面命令表示,将当前分支推送到origin主机的对应分支。

git push origin

如果是新建分支第一次push,会提示:
  fatal: The current branch dev1 has no upstream branch.
  To push the current branch and set the remote as upstream, use
  git push --set-upstream origin dev1
  输入这行命令,然后输入用户名和密码,就push成功了。

  以后的push就只需要输入git push origin

原因是:

git push origin
#因为在git的全局配置中,有一个push.default属性,其决定了git push操作的默认行为。在Git 2.0之前,这个属性的默认被设为'matching',2.0之后则被更改为了'simple'。

#我们可以通过git version确定当前的git版本(如果小于2.0,更新是个更好的选择),通过git config --global push.default 'option'改变push.default的默认行为(或者也可直接编辑~/.gitconfig文件)。

push.default 有以下几个可选值:
nothing, current, upstream, simple, matching

其用途分别为:
nothing - push操作无效,除非显式指定远程分支,例如git push origin develop(我觉得。。。可以给那些不愿学git的同事配上此项)。
current - push当前分支到远程同名分支,如果远程同名分支不存在则自动创建同名分支。
upstream - push当前分支到它的upstream分支上(这一项其实用于经常从本地分支push/pull到同一远程仓库的情景,这种模式叫做central workflow)。
simple - simple和upstream是相似的,只有一点不同,simple必须保证本地分支和它的远程
upstream分支同名,否则会拒绝push操作。
matching - push所有本地和远程两端都存在的同名分支。
因此如果我们使用了git2.0之前的版本,push.default = matching,git push后则会推送当前分支代码到远程分支,而2.0之后,push.default = simple,如果没有指定当前分支的upstream分支,就会收到上文的fatal提示。
git push origin

如果当前分支只有一个追踪分支,那么主机名都可以省略。

$ git push

如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push

$ git push -u origin master

上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。

$ git config --global push.default matching
# 或者
$ git config --global push.default simple

还有一种情况,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用--all选项。

$ git push --all origin

上面命令表示,将所有本地分支都推送到origin主机。

如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用--force选项。

$ git push --force origin 

上面命令使用--force选项,结果导致远程主机上更新的版本被覆盖。除非你很确定要这样做,否则应该尽量避免使用--force选项。

最后,git push不会推送标签(tag),除非使用--tags选项。

$ git push origin --tags

5.4、在命令行中同步本地仓库示例

假定我们创建好了一个远程仓库地址为:https://coding.net/u/zhangguo5/p/project7/git,现在我们在本地创建一个项目并同步到远程仓库中。

1)、创建文件添加到暂存区

git push origin

2)、提交到本地仓库

git push origin

3)、提交到远程仓库

添加远程主机地址:

git push origin

推送文件:

git push origin

结果:

git push origin

说明:这里我使用的是SSH方式提交的,所有并没有让我输入用户名与密码,如果你使用https方式提交则要配置用户名与邮箱,还要输入密码。

5.5、IDEA中Git的使用

工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下:

假设小组中有两个人,组长盖茨,组员艾伦

场景一:盖茨创建项目并提交到远程Git仓库

场景二:艾伦从远程Git仓库上获取项目源码

场景三:艾伦修改了部分源码,提交到远程仓库

场景四:盖茨从远程仓库获取艾伦的提交

场景五:艾伦接受了一个新功能的任务,创建了一个分支并在分支上开发

场景六:艾伦把分支提交到远程Git仓库

场景七:盖茨获取艾伦提交的分支

场景八:盖茨把分支合并到主干

下面来看以上各场景在IDEA中对应的操作。

场景一:盖茨创建项目并提交到远程Git仓库

在IDEA中配置Git

git push origin

测试环境是否正常

git push origin

创建好项目,这里创建了一个Maven项目,结构如下,当然可以是任意项目:

git push origin

选择VCS - > Enable Version Control Integration,允许将项目集成到版本控制器中

git push origin

选择版本控制器类型

git push origin

完成后当前项目就变成一个Git项目,是工作空间

git push origin

点击OK后创建完成本地仓库,注意,这里仅仅是本地的。下面把项目源码添加到本地仓库。

下图是Git与提交有关的三个命令对应的操作,Add命令是把文件从IDE的工作目录添加到本地仓库的stage区,Commit命令把stage区的暂存文件提交到当前分支的仓库,并清空stage区。Push命令把本地仓库的提交同步到远程仓库。

git push origin

IDEA中对操作做了一定的简化,Commit和Push可以在一步中完成。

具体操作,在项目上点击右键,选择Git菜单,如果使用Add则将文件从工作空间提交到暂存库,Commit Directory则是同时完成提交到暂存与本地仓库。

git push origin

 选择要提交的文件,填写消息

git push origin

将本地仓库的内容提交到远程仓库

git push origin

 定义远程地址的别名

 git push origin

 输入名称与URL

git push origin

 点击push将本地仓库的内容推送到远程服务器

 git push origin

 提示Push Successful就成功了

git push origin

 提交后的远程库

 git push origin

场景二:艾伦从远程Git仓库上获取项目源码

即克隆项目,操作如下:

git push origin

输入盖茨Push时填写的远程仓库地址

git push origin

填写仓库地址、要克隆到的父目录与项目目录

接下来按向导操作,即可把项目从远程仓艾伦隆到本地仓库和IDE工作区。

当提示签出成功点击打开就可以看到项目了

git push origin

下载到本地的文件

git push origin

其它方法

git push origin

场景三:艾伦修改了部分源码,提交到远程仓库

这个操作和首次提交的流程基本一致,分别是 Add -> Commit -> Push。请参考场景一

 添加一个类,并提交

git push origin

 

提交到本地仓库

git push origin

提交到远程仓库

git push origin

场景四:盖茨从远程仓库获取艾伦的提交

获取更新有两个命令:Fetch和Pull,Fetch是从远程仓库下载文件到本地的origin/master,然后可以手动对比修改决定是否合并到本地的master库。Pull则是直接下载并合并。如果各成员在工作中都执行修改前先更新的规范,则可以直接使用Pull方式以简化操作。

git push origin

选择分支

git push origin

场景五:艾伦接受了一个新功能的任务,创建了一个分支并在分支上开发

建分支也是一个常用的操作,例如临时修改bug、开发不确定是否加入的功能等,都可以创建一个分支,再等待合适的时机合并到主干。

创建流程如下:

git push origin

选择New Branch并输入一个分支的名称

git push origin

创建完成后注意IDEA的右下角,如下图,Git: dev表示已经自动切换到dev分支,当前工作在这个分支上。

点击后弹出一个小窗口,在Local Branches中有其他可用的本地分支选项,点击后选择Checkout即可切换当前工作的分支(见场景7操作切换其他分支)。

如下图,点击Checkout

git push origin

注意,这里创建的分支仅仅在本地仓库,如果想让组长盖茨获取到这个分支,还需要提交到远程仓库。

场景六:艾伦把分支提交到远程Git仓库

切换到新建的分支,使用Push功能

git push origin

提交到远程

git push origin

艾伦将新开发的功能提交到远程

git push origin

提交到远程

git push origin

场景七:盖茨获取艾伦提交的分支

使用Pull功能打开更新窗口,点击Remote栏后面的刷新按钮,会在Branches to merge栏中刷新出新的分支。这里并不想做合并,所以不要选中任何分支,直接点击Pull按钮完成操作。

 git push origin

更新后,再点击右下角,可以看到在Remote Branches区已经有了新的分支,点击后在弹出的子菜单中选择Checkout as new local branch,在本地仓库中创建该分支。完成后在Local Branches区也会出现该分支的选项,可以按上面的方法,点击后选择Checkout切换。

切换远程分支:

git push origin

切换本地分支:

git push origin

场景八:盖茨把分支合并到主干

新功能开发完成,体验很好,项目组决定把该功能合并到主干上。

切换到master分支,选择Merge Changes

git push origin

选择要合并的分支,点击Merge完成

git push origin

工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下:

假设小组中有两个人,组长盖茨,组员艾伦

场景一:盖茨创建项目并提交到远程Git仓库

场景二:艾伦从远程Git仓库上获取项目源码

场景三:艾伦修改了部分源码,提交到远程仓库

场景四:盖茨从远程仓库获取艾伦的提交

场景五:艾伦接受了一个新功能的任务,创建了一个分支并在分支上开发

场景六:艾伦把分支提交到远程Git仓库

场景七:盖茨获取艾伦提交的分支

场景八:盖茨把分支合并到主干

下面来看以上各场景在IDEA中对应的操作。

场景一:盖茨创建项目并提交到远程Git仓库

在IDEA中配置Git

git push origin

测试环境是否正常

git push origin

创建好项目,这里创建了一个Maven项目,结构如下,当然可以是任意项目:

git push origin

选择VCS - > Enable Version Control Integration,允许将项目集成到版本控制器中

git push origin

选择版本控制器类型

git push origin

完成后当前项目就变成一个Git项目,是工作空间

git push origin

点击OK后创建完成本地仓库,注意,这里仅仅是本地的。下面把项目源码添加到本地仓库。

下图是Git与提交有关的三个命令对应的操作,Add命令是把文件从IDE的工作目录添加到本地仓库的stage区,Commit命令把stage区的暂存文件提交到当前分支的仓库,并清空stage区。Push命令把本地仓库的提交同步到远程仓库。

git push origin

IDEA中对操作做了一定的简化,Commit和Push可以在一步中完成。

具体操作,在项目上点击右键,选择Git菜单,如果使用Add则将文件从工作空间提交到暂存库,Commit Directory则是同时完成提交到暂存与本地仓库。

git push origin

 选择要提交的文件,填写消息

git push origin

将本地仓库的内容提交到远程仓库

git push origin

 定义远程地址的别名

 git push origin

 输入名称与URL

git push origin

 点击push将本地仓库的内容推送到远程服务器

 git push origin

 提示Push Successful就成功了

git push origin

 提交后的远程库

 git push origin

场景二:艾伦从远程Git仓库上获取项目源码

即克隆项目,操作如下:

git push origin

输入盖茨Push时填写的远程仓库地址

git push origin

填写仓库地址、要克隆到的父目录与项目目录

接下来按向导操作,即可把项目从远程仓艾伦隆到本地仓库和IDE工作区。

当提示签出成功点击打开就可以看到项目了

git push origin

下载到本地的文件

git push origin

其它方法

git push origin

场景三:艾伦修改了部分源码,提交到远程仓库

这个操作和首次提交的流程基本一致,分别是 Add -> Commit -> Push。请参考场景一

 添加一个类,并提交

git push origin

 

提交到本地仓库

git push origin

提交到远程仓库

git push origin

场景四:盖茨从远程仓库获取艾伦的提交

获取更新有两个命令:Fetch和Pull,Fetch是从远程仓库下载文件到本地的origin/master,然后可以手动对比修改决定是否合并到本地的master库。Pull则是直接下载并合并。如果各成员在工作中都执行修改前先更新的规范,则可以直接使用Pull方式以简化操作。

git push origin

选择分支

git push origin

场景五:艾伦接受了一个新功能的任务,创建了一个分支并在分支上开发

建分支也是一个常用的操作,例如临时修改bug、开发不确定是否加入的功能等,都可以创建一个分支,再等待合适的时机合并到主干。

创建流程如下:

git push origin

选择New Branch并输入一个分支的名称

git push origin

创建完成后注意IDEA的右下角,如下图,Git: dev表示已经自动切换到dev分支,当前工作在这个分支上。

点击后弹出一个小窗口,在Local Branches中有其他可用的本地分支选项,点击后选择Checkout即可切换当前工作的分支(见场景7操作切换其他分支)。

如下图,点击Checkout

git push origin

注意,这里创建的分支仅仅在本地仓库,如果想让组长盖茨获取到这个分支,还需要提交到远程仓库。

场景六:艾伦把分支提交到远程Git仓库

切换到新建的分支,使用Push功能

git push origin

提交到远程

git push origin

艾伦将新开发的功能提交到远程

git push origin

提交到远程

git push origin

场景七:盖茨获取艾伦提交的分支

使用Pull功能打开更新窗口,点击Remote栏后面的刷新按钮,会在Branches to merge栏中刷新出新的分支。这里并不想做合并,所以不要选中任何分支,直接点击Pull按钮完成操作。

 git push origin

更新后,再点击右下角,可以看到在Remote Branches区已经有了新的分支,点击后在弹出的子菜单中选择Checkout as new local branch,在本地仓库中创建该分支。完成后在Local Branches区也会出现该分支的选项,可以按上面的方法,点击后选择Checkout切换。

切换远程分支:

git push origin

切换本地分支:

git push origin

场景八:盖茨把分支合并到主干

新功能开发完成,体验很好,项目组决定把该功能合并到主干上。

切换到master分支,选择Merge Changes

git push origin

选择要合并的分支,点击Merge完成

git push origin

相关文章: