Git 使用远程';原产地';存储库

Git 使用远程';原产地';存储库,git,optimization,workflow,Git,Optimization,Workflow,在经历了多年的svn和cvs之后,我正在学习git。我已经掌握了大部分的窍门,但我觉得我的常用顺序不是最佳的 我的设置: 我在工作站上使用一个本地克隆存储库进行开发,该存储库来自origin服务器,在我的项目中,它被视为“主”存储库。我会定期git fetch,检查新的更新,然后git merge合并相关的更新 然而,当我在处理和签入一个代码分支时,我的疑问就在这里 我使用的一个常见顺序是: git branch somenewbranch git checkout somenewbranch

在经历了多年的
svn
cvs
之后,我正在学习
git
。我已经掌握了大部分的窍门,但我觉得我的常用顺序不是最佳的

我的设置: 我在工作站上使用一个本地克隆存储库进行开发,该存储库来自
origin
服务器,在我的项目中,它被视为“主”存储库。我会定期
git fetch
,检查新的更新,然后
git merge
合并相关的更新

然而,当我在处理和签入一个代码分支时,我的疑问就在这里

我使用的一个常见顺序是:

git branch somenewbranch
git checkout somenewbranch
... work work work ...
git add [changed files]
git commit
git checkout master
git merge somenewbranch
git branch -d somenewbranch
以下是我认为可以优化的内容:

git push origin master:blahblah         # This won't let me push to master branch
ssh origin
cd repodir
git merge blahblah
git branch -d blahblah
logout
git status                              # this shows me I'm still ahead
git pull origin                         # to bring them back in sync
git remote show origin                  # shows I have a stale blahblah branch
git remote prune origin                 # cleans that up
现在我把它们同步了。这似乎需要很多额外的步骤来同步我的本地存储库和“主”存储库

有人能帮我优化我的使用吗

多谢各位

编辑:如果我不执行单独的分支,我会收到一个错误,其中说明:

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.

如果您在做了更改后只使用了
gitpush
,并且领先于
origin/master
,那么一切都会顺利进行。为什么要显式指定另一个远程分支来将本地主分支推送到该分支

您是否因为原始存储库抱怨签出分支而无法将其推送到原始存储库?如果是这样,你就犯了一个常见的错误。您需要使用裸repo作为源,以便Git可以接受更改,而不会导致服务器上的工作副本出现问题


我建议在推到原点之前先获取和合并。如果您这样做,您应该能够直接推到您的主分支

我用错误信息编辑了我的帖子。我认为你所描述的导致了我的困惑。问题是,我有时也会在源服务器上进行开发,但现在我认为我应该将所有这些都放在一个裸repo中,并将其克隆到我的本地主机以及源服务器上的工作目录。如果需要这样做,只需运行一个快速的
git clone repodir working
,完成后,
git push&&cd..&&rm-rf正在工作(可能是为了安全起见),是的,我刚刚创建了一个简单的回购克隆,并对其进行了排序。愚蠢的新手错误。谢谢你的帮助;现在使用起来容易多了:-)