如何使用Git命令行推送更改?

时间:2015-07-21 04:07:31

标签: git

我正在研究git,起初似乎没问题,但是当我尝试推送主文件中的更改时,我遇到了这些错误:

Counting objects: 3, done.
Writing objects: 100% (3/3), 232 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To C:\wamp\www\MyGit\myfirstgit
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'C:\wamp\www\MyGit\myfirstgit'

好的,这就是我的所作所为:

  1. 我创建了我的主文件夹

    - C:\ wamp \ www \ MyGit \ myfirstgit

  2. 将文件夹签出到\ _www

    - C:\ wamp \ www \ myfirstgit

  3. 我创建了一个自述文件

    - C:\ wamp \ www \ myfirstgit> echo'TEST README'>自述

  4. 检查状态 C:\ wamp \ www \ myfirstgit> git status

    在分支主机上

    初始提交

    未跟踪的文件:   (使用“git add ...”包含将要提交的内容)

        README
    

    没有添加到提交但未跟踪的文件存在(使用“git add”跟踪)

  5. 添加并提交更改

    C:\ wamp \ www \ myfirstgit> git add README

    C:\ wamp \ www \ myfirstgit> git commit -m“我的第一次提交”

    [master(root-commit)43bad4e]我的第一次提交  1个文件已更改,1个插入(+)  创建模式100644 README

  6. 然后我推动更改:

    - C:\ wamp \ www \ myfirstgit> git push origin master

  7. 我也试过指出目录但是错误:

    C:\wamp\www\myfirstgit>git push origin C:\wamp\www\MyGit\myfirstgit
    fatal: remote part of refspec is not a valid name in C:\wamp\www\MyGit\myfirstgit
    

    然后我得到了上面的错误。

    你能帮我解决这个问题吗?我是使用此工具的新手。

    感谢。

3 个答案:

答案 0 :(得分:3)

git中远程存储库的典型用例是远程存储库仅用于与其他开发人员交换代码和备份。这样的中央存储库通常是,这意味着它不包含工作目录;它只包含git历史记录。正如您所发现的,将更改推送到非裸存储库有点问题。

如果要将第一个存储库保持为非裸存(以便它具有工作目录,并且您可以直接使用其中的文件),请转到C:\wamp\www\MyGit\myfirstgit并运行git checkout --detach HEAD。现在,推动应该工作。但请注意,工作目录C:\wamp\www\MyGit\myfirstgit中的文件不会更改,因为存储库不会自动检出推送的更改(错误消息实际上表示您尝试推送到活动分支,这将需要C:\wamp\www\MyGit\myfirstgit中的工作目录进行更改,而git不支持该工作目录。

否则,您可以将您的远程仓库重新创建为裸机(假设唯一的内容是C:\wamp\www\myfirstgit中仍然存在的初始提交):删除C:\wamp\www\MyGit\myfirstgit下的所有内容,包括隐藏的{{1} }目录,并在那里运行.git;然后,再次从git init --bare .推送。

答案 1 :(得分:3)

错误消息说明了一切。您需要使用裸仓(推荐),或者如果您绝对需要非裸露 - 请在此处执行git config receive.denyCurrentBranch warn然后再推送。请注意,它只会更新.git目录中的文件,远程工作副本将保持不变,直到有人在此处执行git reset --hard

在较新的git上,您可以将receive.denyCurrentBranch设置为updateInstead,它会在自动推送时更新。

答案 2 :(得分:-5)

使用

git push origin master

但是我建议你不要使用master作为你的工作分支,所以这样做是为了创建一个新的分支

git checkout -b name_of_branch

确保您也远程添加分支。从这里开始,您可以继续正常的过程。

git add -A
git commit -m "commit message"
git push origin name_of_branch