• 疑难排解
  • 用SSH连接远程数据库时会显示"Permission denied (publickey)."
  • 在HTTPS不能clone
  • HTTPS执行push/pull时每次都需要密码
    • Windows
    • Mac
    • 主控台
  • push之后,无法反映到远端数据库

    疑难排解

    用SSH连接远程数据库时会显示"Permission denied (publickey)."

    • URL正确吗?
    • 本地端机器的秘密锁的设定正确吗?
    • 远端的公开锁的设定正确吗? 若要确认贝格乐数据库的密码锁/公开锁的设定是否正确,请执行以下命令。
    1. $ ssh <space>@<space>.git.backlogtool.com

    用合适的空间替换<space> ,例如:用"demo@demo.git.backlogtool.com" 替换 "demo.backlogtool.com"。

    设定正确的话,会显示如下。如果显示错误的信息,请再次查看以上的设定是否正确。

    1. Hi yourname! You've successfully authenticated, but Backlog does not provide shell access.
    2. Connection to git.backlog.jp closed.

    在HTTPS不能clone

    如果使用旧版本的Git,push或pull有时不能正常运作,请使用1.7.10以后的版本。使用SourceTree或TortoiseGit的用户,请确认一下您正在使用的版本。

    HTTPS执行push/pull时每次都需要密码

    如果使用1.7.10以后版本的Git,可以藉着Git自带的认证API及其使用的认证助手,以避免每次输入密码。

    Windows

    如果使用 git-credential-winstore,您只需在第一次执行push/pull时输入密码。

    Mac

    在入门篇和高级篇都使用Mac的Git用户, 请留意:SourceTree具备了与Mac的钥匙链连接的功能。使用这个功能,在Pull或Push时就不需要输入密码了。

    主控台

    在Mac可以使用与钥匙链连接的认证助手。使用Homebrew的用户在安装Git时会自动安装认证助手。除此之外,您需要手动安装。

    如果要确认是否有安装认证助手,可以使用以下命令确认。

    1. $ git credential-osxkeychain
    2. Usage: git credential-osxkeychain <get|store|erase>

    没有安装认证助手的话,会显示以下的内容。

    1. $ git credential-osxkeychain
    2. git: 'credential-osxkeychain' is not a git command. See 'git --help'.

    这时,把认证助手下载到恰当的路径,就可以使用了。

    1. curl -s -O http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain
    2. chmod u+x git-credential-osxkeychain
    3. mv git-credential-osxkeychain /usr/local/bin

    安装后,设定开启认证助手。

    1. git config --global credential.helper osxkeychain

    push之后,无法反映到远端数据库

    如果clone新建的数据库后创建本地数据库,在本地数据库push后会显示以下记录。

    1. $ git push
    2. No refs in common and none specified; doing nothing.
    3. Perhaps you should specify a branch such as 'master'.
    4. Everything up-to-date

    这是因为在远程数据库上还未建立master分支。如果在push时省略参数,那么在远程数据库和本地数据库里相同名字的分支会默认被列为目标。因此,如果要push远程数据库里不存在的分支,需要明确地指定数据库和分支。

    1. $ git push -u origin master

    一旦执行push就会创建master分支,之后的push就可以不指定数据库和分支了。