【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
分类
跟踪远程历史的分支 – … 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