【Git】当省略参数时的git push行为

首先

我总是在执行git push时感到紧张。原因是git push的行为取决于设置不同。为了延长我的寿命,我总结了git push选项的行为。

不要省略参数(正式格式)

$ git push origin main

第一个参数(比如 origin)代表仓库名称。
第二个参数(比如 main)代表分支名称。

将本地分支推送到远程仓库的主分支(origin的main分支)。每次都要打origin master太麻烦了呢~


※这里完全是离题。

origin指的是远程仓库的URL。

$ git remote -v // リモートリポジトリのURLを表示

origin  https://github.com/westhouseK/git_demo.git (fetch)
origin  https://github.com/westhouseK/git_demo.git (push)

如果没有显示任何内容,则可以在以下位置注册远程存储库的URL。

【SSH登録している人】
$ git remote add origin git@github.com:westhouseK/git_demo.git

【SSH登録していない人】
$ git remote add origin https://github.com/westhouseK/git_demo.git

【本题】忽略参数

$ git push

分类

push.default詳細nothing何もプッシュしないcurrent現在のブランチを同名リモートブランチとしてプッシュするupstream現在のブランチの上流ブランチにプッシュするsimple現在のブランチを同名の上流ブランチにプッシュするmatchingすべてのローカルブランチを同名のブランチにプッシュする

跟踪远程历史的分支 – … de

在Git 1.x版本中,匹配(matching)是默认设置,而在Git 2.x版本中,简单(simple)成为默认选项。

要查看当前的设置,请执行以下操作…

$ git config --global push.default

为了进行设置…

$ git config --global push.default simple

★ 什么都没有

$ git push
fatal: You didn't specify any refspecs to push, and push.default is "nothing".

因为没有参数,所以无法进行推送,对吧。从某种意义上说,这是最安全的,但也很麻烦。

★ 当前的

$ git push
To github.com:westhouseK/git_demo.git
 * [new branch] current_demo -> current_demo

$ git branch -vv
* current_demo 368c172 first commit
  main         368c172 first commit

看起来现在要推送与当前同名的分支。
顺便提一下,如果远程已存在同名分支,会发出警告。

error: failed to push some refs to 'git@github.com:westhouseK/git_demo.git'

★ 上游

$ git push
fatal: The current branch upstream_demo has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin upstream_demo


$ git push --set-upstream origin upstream_demo
To github.com:westhouseK/git_demo.git
 * [new branch]      upstream_demo -> upstream_demo
Branch 'upstream_demo' set up to track remote branch 'upstream_demo' from 'origin'.

$ git branch -vv
  main          368c172 first commit
* upstream_demo 368c172 [origin/upstream_demo] first commit
                         ↑上流ブランチ

如果没有设置上游分支,就无法进行推送。就像上面所述,在推送时需要设置上游分支,或者单独设置上游分支。这个行为看起来是不会出现异常的。

★ 简单

【上流ブランチが設定されていない場合】
$ git push
fatal: The current branch simple_demo has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin simple_demo


【設定されている上流ブランチ名と現在のブランチ名が異なる場合】
$ git push
fatal: The upstream branch of your current branch does not match
the name of your current branch.  To push to the upstream branch
on the remote, use

    git push origin HEAD:dev

To push to the branch of the same name on the remote, use

    git push origin HEAD

如果上游分支没有设置,或者上游分支与本地分支不同,就无法进行推送。这完全是因为Git 2.x系列的默认设置,可以说是可以放心使用。但是,这并不简单啊,哈哈。

★ 匹配

$ git push
To github.com:westhouseK/git_demo.git
   368c172..3cf3d12  test1 -> test1
   368c172..2b3f77e  test2 -> test2

将本地的所有分支都推送到远程。本来只想推送test1,但是test2也被推送了。太可怕啦。
只是当远程没有该分支时,似乎不会进行推送。

$ git push
Everything up-to-date

概括起来

    • Gitのバージョンによって、挙動が違うので注意

 

    • Git 1.x系ではmatching、2.x系ではsimpleがデフォルト

 

    • ローカルブランチをリモートと同じ名前で作っていれば、事故らなそう

 

    • matchingには、しない方が無難!

 

    ちなみに、私はcurrent

我觉得这样我也能活得更久了。如果有写错的地方,请告诉我。因为我不想减少别人的寿命?

参考网站

方程式

请提供更详细的句子或信息以便可以完成您的请求。

以下是对给出链接的网页进行中文翻译的选项:
1. https://gotohayato.com/content/116/
2. https://www-creators.com/archives/4931
3. https://www.yunabe.jp/docs/relearning_git_push_default.html
4. https://qiita.com/tamata78/items/09cc89ed87f022668d80

广告
将在 10 秒后关闭
bannerAds