我已经按照本教程"使用Git管理网站",使用Tower提交并将我的本地存储推送到远程服务器.通过以下消息推送成功:
Pushing to ssh://user@mysite.com/~/git/tprevo.git
stdin: is not a tty
Counting objects: 40, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (37/37), done.
Writing objects: 100% (40/40), 171.95 KiB, done.
Total 40 (delta 3), reused 0 (delta 0)
To ssh://user@mysite.com/~/git/tprevo.git
* [new branch] master -> production
updating local tracking ref 'refs/remotes/production/production'
Successfully created tracking connection.
Run Code Online (Sandbox Code Playgroud)
我已经验证我的post-receive挂钩正在执行,但该checkout命令没有将推送的代码添加到我认为我已设置为我的工作目录的内容中.我一直试图弄清楚这一点.
后得到:
#!/bin/sh
GIT_WORK_TREE=/home/tprevo/public_html/tprevo git checkout -f
Run Code Online (Sandbox Code Playgroud)
我是Git的新手,非常热衷于学习.调试这个的最佳方法是什么?
TL; DR如果分支具有相同的名称,我无法使用git checkout恢复文件.
当发现一个有趣的问题时,我正在我的GIT存储库上工作.我们有一个名为"build-upload"的分支,我们正在创建一个新的"上传"功能.我们还有一个名为"bin/build-upload"的文件,它是一个脚本,而不是构建项目并将其上传到生产环境.
问题是我在"bin /"目录并修改了"build-upload"文件,我想还原它.所以我打字了
git checkout build-upload
Run Code Online (Sandbox Code Playgroud)
结果是
amatiasq:~/repo/bin$ git checkout build-upload
M bin/build-upload
Switched to branch 'build-upload'
Run Code Online (Sandbox Code Playgroud)
我没有注意到结果,并继续工作,没有意识到我在另一个分支.幸运的是,在我提交新的更改之前,我看到"bin/build-upload"被修改了,这导致我发现我切换了分支.
问题是.有没有办法防止这种歧义?如果我要切换分支或还原文件,我怎么能告诉git"checkout"?
我想要一些自动化方法来从我们的远程原始服务器进行获取。因此,也许每次我切换分支时,git 都会在切换之前自动从 origin 的所有分支上进行提取...这样,当我从本地“修复分支”移动到 master 时,它会告诉我我的 master 位于 origin master 后面。
这可能吗?如果您需要知道我为什么想要这个,我的要求的更详细原因如下。
多谢你们!
我在一个开发团队中工作。当我向 origin/master 分支添加更改时,我还会将该更改上传到我们的 FTP 服务器(我们尚未在服务器上设置 git)
如果我创建一个“修复分支”并对文件进行更改...那么我想让这些文件生效并进入主文件。如果我只是将本地文件中的更改合并到本地主文件中而不进行提取,这可能会导致问题。如果我在上传文件之前忘记从原点引入更改,则上传的文件可能缺少原点的修订。(我知道很顽皮)
另外,我希望尽快了解 master 中的任何更新,以便我可以将它们合并到我的“修复分支”中
我一直在一个分支机构工作,有一些代码来改进应用程序.既然我已经完成了,我想将这个分支与master分支合并,但我不能.我首先尝试像这样检查主分支:
$ git checkout master
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
error: The following untracked working tree files would be overwritten by checkout:
vendor/bin/doctrine
vendor/bin/doctrine.php
...
Run Code Online (Sandbox Code Playgroud)
但供应商目录包含在.gitignore文件中.如果我做:
$ git status
Run Code Online (Sandbox Code Playgroud)
我明白了:
# On branch mejoras_contralador
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
在此之后,我会这样做:
$ git merge branch
Run Code Online (Sandbox Code Playgroud)
如何避免这个错误?
我刚刚创建了一个全新的git存储库:
git init
Run Code Online (Sandbox Code Playgroud)
现在我想看看我在哪个分支.所以,我执行:
git branch
Run Code Online (Sandbox Code Playgroud)
这个命令不输出任何东西(我的期望是我只会看到一个分支"master",我会在那里).
所以,我想根本没有分支.所以,我尝试通过以下方式创建一个分支:
git checkout -b aaa
Run Code Online (Sandbox Code Playgroud)
结果我看到:
Switched to a new branch 'aaa'
Run Code Online (Sandbox Code Playgroud)
但是当我执行时
git branch
Run Code Online (Sandbox Code Playgroud)
我再没有输出.那么,我如何验证我在特定的分支?
如何创建新分支git以开始处理新功能?
我希望新分支是本地分支,并且当前分支的副本(即,新分支的HEAD应该与当前HEAD相同).
问题区分: