可能重复:
git push错误'[remote rejected] master - > master(分支当前已检出)'
我是Git的新手,并尝试将其用于本地grails项目.
我遵循的步骤:
git init 回购中的git状态给出了以下消息
BXX@BXX-PC /c/Work/Grails/projects/yyy/tables (master)
$ git status
# On branch master
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)尝试将其保留为主分支,通过克隆repo进行更改,然后再将更改推回.为了那个原因
将本地更改推送到master.
15:41:56.249: git push -v origin master
Pushing to c:/Work/Grails/projects/xxx/tables
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.
Run Code Online (Sandbox Code Playgroud)克隆的回购状态是
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
请帮助我理解这一点.是否有更好的工作流程可供遵循.我或许可以通过Intellij初始化repo,并尝试在主分支上工作.仍然不确定上面有什么问题.
谢谢.
mip*_*adi 45
问题是你正试图推动非裸机回购.非裸仓库是具有关联工作树的仓库(即,文件实际上已签出到磁盘).默认情况下,Git不会让你推送到非裸仓库; 推到非裸露的回购仅更新Git的内部数据结构,并不会不改变工作树(磁盘上的文件),这意味着,如果你再回去给你推到了回购,并开始对文件的工作,你我将处理这些文件的旧版本.当然,当您尝试提交更改时,这会导致问题.
执行此操作的最佳方法是推送到裸存储库,这是通过在创建存储库--bare时将标志传递给Git而创建的存储库:
$ mkdir new_repo
$ cd new_repo
$ git --bare init
Run Code Online (Sandbox Code Playgroud)
当然,裸仓库不会检出任何文件,因此您无法实际使用它(您必须首先克隆它).
如果你仅仅使用一个Git回购当地发展(而不是共享或服务Git的回购),你不具备有远程回购推到; 您可以处理本地非裸仓库的单个副本.
Ser*_*sov 34
首先,您不需要克隆本地存储库.您可以使用分支在同一存储库中划分开发.
Git是一个分布式VCS,如果您之前有Subversion或CVS的经验,那么您需要改变主意.
Git非常敏捷,您可以使用不同的工作流程.团队工作更需要克隆存储库,而不是本地开发(IMHO).
分店是您的理想选择.
看到.让我们为您的存储库设置master分支,以获得生产就绪的代码.让我们为开发创建另一个分支:
$ git checkout -b development master
Run Code Online (Sandbox Code Playgroud)
现在您正在开发分支.
您可以为要开发的每个功能使用不同的分支.这非常简单,乐于助人.
让我们假设你想要实现一些新功能,你需要创建一个新的分支:
$ git checkout -b newfeature development
Run Code Online (Sandbox Code Playgroud)
现在您可以使用代码,添加文件,提交等等.
接下来,您需要将新开发的功能合并到开发分支:
$ git add .
$ git commit -m "My last changes for the new feature"
$ git checkout development
$ git merge newfeature
Run Code Online (Sandbox Code Playgroud)
现在,来自newfeature分支的新代码合并到开发分支中.
在将来的某个时候,当您确定开发分支中的代码获得某个里程碑时,您可以将所有更改从开发合并到主分支.
这是一个非常基本的工作流程,它可以为许多分支机构提供帮助.
我现在为您提供建议:阅读更多关于git,分支,存储的信息(非常非常有助于快速修复).过了一段时间,你会从使用git中获得很大的努力.
祝好运.
Jas*_*tts 10
这是成功的git工作流程的最清晰,最全面的描述.它基本上涵盖了谢尔盖建议的内容,增加了一些非常丰富的图形.
作者还建议您在合并时包含--no-ff标记以记录您在历史记录中有特征分支的事实.