Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git无法更新干净的工作目录_Git_Github_Chmod_Git Pull - Fatal编程技术网

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.

我在我的机器上安装了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.
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很好。我在答案中加入了你的结论,以便更直观。