【问题标题】:Simple GIT workflow for small website development by one用于小型网站开发的简单 GIT 工作流程
【发布时间】:2018-12-14 20:37:48
【问题描述】:

我是 git 的新手,想了解一下它。

因此,我正在本地开发一个简单的网站并使用 git 对其进行跟踪,并希望将面向公众的服务器上的远程存储库作为实时站点,只要我准备好,我就可以将主分支推送到该站点。

我认为以下方法会起作用,但事实并非如此。

公共服务器我这样做了:

/home/mysite/git init --bare

本地(开发机器)我是这样做的:

git init
git add index.html (contains hello world)
git commit -am "initial commit"
git remote add website ssh://mysiteuser@mysite:myport 
git remote (outputs: website)

现在我想将它发布到“网站”

git push website

我得到:

fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream website master

所以我试试:

git push --set-upstream 网站管理员

我得到:

fatal: No path specified. See 'man git-pull' for valid url syntax

我查看了 man git pull ,但它对我没有任何启示。

我这样做是对的,但在 push 命令中遗漏了一些东西吗?还是我误解了更基本的东西。

TIA!

【问题讨论】:

  • git push website -u master:refs/heads/master.
  • 你能分享一下.git/config文件的o/p吗?希望你坐在主分支上。 $ git push origin master 一般使用。
  • 这是本地 git 配置文件内容(为保护隐私而编辑) [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "website"] url = ssh://website@myserver:myport/home/website/website.git fetch = +refs/heads/*:refs/remotes/website/* [branch "master"] remote = website merge = refs/heads/master

标签: git repository workflow git-push git-remote


【解决方案1】:

这很简单,按照小步骤继续:

  • 在远程服务器上安装 git 说一些 ec2 实例
  • 现在创建一个项目文件夹 $mkdir 项目.git

    $cd 项目并执行 $git init --bare 假设这个 project.git 文件夹存在于您的 ip 中,地址在 home_folder/workspace/project.git,forex- ec2 - /home/ubuntu/workspace/project.git

现在在您的本地机器中,$cd 进入您要推送到 git 的项目文件夹,执行以下命令:

 git init .
 git remote add origin username@189.14.666.666:/home/ubuntu/workspace/project.git
 git add .
 git commit -m "Initial commit"

以下是一个可选命令,但在我正在设置相同的东西时发现它已被建议

 git config --global remote.origin.receivepack "git receive-pack"

 git pull origin master
 git push origin master

这应该可以正常工作,并将本地代码推送到远程 git 存储库。

要检查远程获取 url,cd project_folder/.git 和 cat 配置,这将提供用于拉取和推送操作的远程 url。

你也可以使用另一种方式,在 git 上创建 project.git 文件夹后,克隆项目并将整个内容复制到该文件夹​​中。提交更改,它应该是相同的方式。克隆时请确保您具有访问权限或密钥是用于部署的远程服务器的密钥。

【讨论】:

  • 尽管最终 git push origin master 的输出/结果是“最新的” - 本地 repo 中的任何文件都没有被推送到服务器。服务器上没有任何变化。我添加了另一个文件 - 暂存并提交,然后运行 ​​git push origin master 并得到:计数对象:4,完成。使用多达 8 个线程的 Delta 压缩。压缩对象:100% (2/2),完成。写入对象:100% (4/4),327 字节 | 327.00 KiB/s,完成。总共 4 个(delta 0),重复使用 0 个(delta 0)到 ssh://mysite.co.uk:myport/home/mysite cf9c485..f40a475 master -> master
  • 附加。我使用相对路径而不是 ssh 在具有全新空文件夹结构的本地计算机上运行了此答案中概述的过程。当我执行“git pull origin master”命令(我在本地机器上运行)时,我得到: 致命:找不到远程参考主机 NEWLINE 致命:远程端意外挂断。下一个命令似乎工作正常,以 * [new branch] master -> master 结尾,但在检查“远程”时,没有任何文件已添加的迹象。在“远程”上,git 状态给出:致命:此操作必须在工作树中运行。
  • 你能把 .git 的配置文件的 o/p 贴出来吗,我之前问过这个以便更好地理解它
【解决方案2】:

我怀疑我最初的问题被那些试图帮助我的好人误解了。重新迭代 - 我希望在本地拥有开发存储库,当我“推送”时让它自动更新我的网络服务器上的文件,以便网站项目在我的心血来潮时被推送。

这就是我的做法......

远程(网络服务器)

mkdir website
cd website
git init
// here's the clever bit!
git config receive.denyCurrentBranch updateInstead

(最后一行做了两件事。它阻止远程存储库抱怨对已签出分支的更新 - 它还立即将其签出。其他常用的方法添加一个“挂钩”来完成后一部分过程。)

关于本地开发(我的笔记本电脑)

cd ~/website-dev-folder
git init
git remote add website ssh://my_user_name@mysever.com:my_port/home/website
git add some_file.html
git commit -m "initial commit"
git push -u website master

在任何本地更改完成并合并到 master 之后,要实时发布 master 分支很简单:

git push

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-23
    • 2014-05-04
    • 2011-05-19
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    相关资源
    最近更新 更多