Git无法更新干净的工作目录
我在我的机器上安装了Git,它一直在做一些奇怪的事情 我将从头开始。Git无法更新干净的工作目录,git,github,chmod,git-pull,Git,Github,Chmod,Git Pull,我在我的机器上安装了Git,它一直在做一些奇怪的事情 我将从头开始。 [nighthawk]$ cd ~ [nighthawk]$ rm -rf ./www [nighthawk]$ ls Maildir logs [nighthawk]$ [nighthawk]$ git clone https://key:@github.com/user/repo.git ./www Cloning into ./www... remote: Counting objects: 260, done.
[nighthawk]$ cd ~
[nighthawk]$ rm -rf ./www
[nighthawk]$ ls
Maildir logs
[nighthawk]$
[nighthawk]$ git clone https://key:@github.com/user/repo.git ./www
Cloning into ./www...
remote: Counting objects: 260, done.
remote: Compressing objects: 100% (195/195), done.
remote: Total 260 (delta 82), reused 217 (delta 47)
Receiving objects: 100% (260/260), 7.41 MiB | 4.88 MiB/s, done.
Resolving deltas: 100% (82/82), done.
[nighthawk]$ cd www
[nighthawk]$ git status
# On branch master
nothing to commit (working directory clean)
[nighthawk]$
现在我将克隆存储库。
[nighthawk]$ cd ~
[nighthawk]$ rm -rf ./www
[nighthawk]$ ls
Maildir logs
[nighthawk]$
[nighthawk]$ git clone https://key:@github.com/user/repo.git ./www
Cloning into ./www...
remote: Counting objects: 260, done.
remote: Compressing objects: 100% (195/195), done.
remote: Total 260 (delta 82), reused 217 (delta 47)
Receiving objects: 100% (260/260), 7.41 MiB | 4.88 MiB/s, done.
Resolving deltas: 100% (82/82), done.
[nighthawk]$ cd www
[nighthawk]$ git status
# On branch master
nothing to commit (working directory clean)
[nighthawk]$
现在我可以看到了就在那里。
[nighthawk]$ cd ~
[nighthawk]$ rm -rf ./www
[nighthawk]$ ls
Maildir logs
[nighthawk]$
[nighthawk]$ git clone https://key:@github.com/user/repo.git ./www
Cloning into ./www...
remote: Counting objects: 260, done.
remote: Compressing objects: 100% (195/195), done.
remote: Total 260 (delta 82), reused 217 (delta 47)
Receiving objects: 100% (260/260), 7.41 MiB | 4.88 MiB/s, done.
Resolving deltas: 100% (82/82), done.
[nighthawk]$ cd www
[nighthawk]$ git status
# On branch master
nothing to commit (working directory clean)
[nighthawk]$
我将对自述文件进行更改,然后将这些更改拖到这台机器上
这很奇怪:
牵引:
然后,指向www/public/deploy.php
页面的webhook调用以下命令:
echo shell_exec('git --git-dir=/home/jonn/www/.git pull origin');
输出:
Updating 882a196..e2a4d36
Fast-forward
README.md | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
.git
文件夹似乎已更新,但签出的目录未更新。另外:存储库中不存在文件
public/README.md
文件。它存在于~/www(存储库的根目录)中
考虑到您克隆该回购的位置(在~/www
),您的状态显示public/README.md为“untracked”似乎很正常
保持git repo内容一致性的一个简单方法是在~/www
中编辑(或添加)您的.gitignore
,并添加:
/public/
以完全忽略公用
文件夹
报告补充说:
出于某种原因,我对/README.md所做的更改被拉入子目录/public/README.md
(以前不存在)
我建议使用--work tree
参数,以确保通过git pull更新工作树位置:
echo shell_exec('git --git-dir=/home/jonn/www/.git --work-tree=/home/jonn/www pull origin');
对于,可以指定为:
echo shell_exec('git -C /home/jonn/www pull origin');
当你说“我要修改自述文件,然后把这些修改放到这台机器上”时,你能具体说明你到底做了什么吗。请参阅更新。这有帮助吗?但是
.gitignore
用于阻止跟踪文件/文件夹,对吗?令人困惑的是,在名为git pull
的php脚本之前,没有~/www/public/README.md
。出于某种原因,我对/README.md
所做的更改被拉入子目录/public/README.md
(以前不存在)。奇怪的是,.git
文件夹更新正确,它知道工作目录的状态不同。仅供参考:/README.md
具有旧版本public/README.md
包含我所做的更改和提取的更改。@Jonn“但是.gitignore用于阻止跟踪文件/文件夹,对吗?”。是:如果出于任何原因,在那里创建了公用文件夹,则不希望跟踪它。因此,我的建议是将@Jonn”放入子目录/public/README.md
”:如果您的'git--git dir=/home/Jonn/www/.git pull origin'
在www/public
文件夹中执行,这将解释原因。您可以添加--work tree
来指定pull更新工作树的位置:“git--git dir=/home/jonn/www/.git--git work tree=/home/jonn/www pull origin
”谢谢!太好了。这是我的最后一个命令:echoshell\u exec('git--git dir=/home/jonn/www/.git--work tree=/home/jonn/www pull origin')代码>@Jonn很好。我在答案中加入了你的结论,以便更直观。