如果git中的文件和目录已被修改,如何恢复它们的权限?

我有一个git结账台。所有文件权限都不同于git所认为的权限,因此它们都显示为已修改 在不涉及文件内容的情况下(只想修改权限),如何将所有文件权限设置为git认为应该设置的权限?git不存储可执行脚本以外的文件权限。考虑使用类似的方法来保存文件所有权和权限。< /P> #!/bin/bash IFS=$'\n' for c in `git diff -p |sed -n '/diff --git/{N;s/diff --git//g;s/\n/ /g;s# a/.* b/##g;s/old mo

将单文件git部署到服务器

我正在使用Capistrano部署rails应用程序;如何在不发布新版本的情况下在服务器上更新一个文件 例如: 假设我只对我的UserController.rb.进行了更改,并将其提交到git服务器, 如何在不进行新部署的情况下将此更新安装到服务器上。您应该通过Capistrano发布新版本 部署工具的目的是为您提供可重复的结果,并帮助您跟踪所部署的内容。为了一个小的修复而绕开这个过程意味着您将失去这两个优势。如果您认为为了一个简单的更改而运行整个部署过程是过分的,那么您可能应该致力于简化这个过

svn、git或其他什么?

我们队正在开发一款游戏 我想尝试单独的原型,它基于我们的代码,但会略有不同。 我们将svn用于代码存储库 现在,对于我自己的原型,我应该如何设置一个repo,这样我就可以保留来自svn的更新,但不会让我意外提交我的更改 我认为分支(或分叉?)是这里的相关概念,但实际上我自己并没有设置它 如果有人能够规划概念性战略,这将很有帮助。 下面是我的想法,尽管我自己还没有完成分支/合并。\r 我在这方面做得对吗 分叉项目 将我的更改应用于分叉项目&不断从主干获取更新 如果需要,将我的更改合并回主(我的团队

查找gitignore文件和导致git忽略文件的行

如何找到导致git忽略文件的gitignore文件和行?从repo根目录中,尝试以下操作: find . ~/.gitignore .git/info/exclude -name '*gitignore' -exec cat {} + | less 还要检查您是否正在使用其他排除文件: git config -l | grep exclude core.excludesfile=~/.gitignore 你 感谢并帮助我在上找到这一点。我知道找到这一行的唯一方法是二进制搜索。(删除一半的排除

每次git重置时Trac都会与repo失去同步

我已经安装了Trac 1.0并与我的git repo同步 在使用提供的语法“closes#1”或“close#1”或“fixes#1”(不起作用)处理git commit并试图解决问题时,我不得不多次重置分支以反转命令commit。每次我添加重置时,trac都会失去同步,我必须重新同步,执行以下操作: trac admin/path/to/project repository重新同步“*” 这狗屎很恶心,需要一些时间才能完成。 有什么我遗漏的吗?有没有办法重置分支而不是松同步 Thanx.Tra

Git问题-Git归档处理名称中带有空格的文件

我在处理文件名时遇到问题,文件名中有空格 我使用下面的脚本获取中包含的文件,并将其按zip格式推到文件夹中,然后再按解压缩文件 tempdir=$(mktemp -d /apps/sample/XXXX) while read oldrev newrev refname do commits=`git rev-list $oldrev..$newrev` for commit in $commits do git diff-tree -z --no-commit-id --name

git在一个git repo中克隆多个p4路径

我知道如果我需要使用命令克隆一个perforce现有的p4存储库 git p4 clone //depot/path/project 但是如果我想将多个p4路径合并到一个git回购中呢? 假设我有以下结构 //depot---/Path1----/APath/... | | | | | --/BPath/... |

Git目录与SVN目录

在SVN中,我可以创建一个名为 myserver/myprojects 然后我可以将一个名为abcproject的新项目推送到上面的存储库中。它变成: myserver/myprojects/abcproject git的情况类似吗?如果我这样做: cd abcproject git init git add . git commit -m 'initial commit' git remote add origin myname@myserver/myprojects git push o

为什么每个ref的git不能正确地对标签排序?

当我有一个包含轻量级和带注释标记的存储库时,git for each ref似乎只对其中一个集合进行排序。我想为每个ref修改我对的调用,以获得对所有标记进行排序并将它们混合在输出中的输出 例如: bash-3.2$ git tag | > xargs -I T git log -n 1 --format='%at T' T | > sort -rn | > awk '{print $2}' lwt3 at3 lwt2 at2 lwt1 at1 bash-3.2$ git for-each-

Git 源代码中不包含特定设置值的开源代码

我正在创建一些小实验/示例,我正在git hub上进行开源 过去人们是如何处理特定于用户的配置/设置变量的 理想情况下,我希望提交与我自己使用的完全相同的代码,但不包括我的URL或应用程序id/机密等 我想也许我可以用以下方法之一来做,但是有没有一个标准的或推荐的方法来做呢 baseURL = include myConfig.txt; 或 就我个人而言,我会对我自己的GIT树使用特殊的承诺,其中包括我自己的专长。因此,它们与历史的其他部分是分离的。 每当我将更改推送到公共树时,该提交就会被忽

如何为连接到的每个git存储库指定单独的私钥?

我需要连接多个git存储库。对于每一个,负责人都通过电子邮件向我发送了一个用于访问存储库的公钥/私钥对。我将它们与我的个人密钥一起存储在我的.ssh目录中: $ ls ~/.ssh id_rsa id_dsa_site1 id_rsa_site2 id_rsa.pub id_dsa_site1.pub id_rsa_site2.pub 然后,我在网上读了一些文章,其中建议我设置一个config文件,我做到了: $ cat ~/.ssh/config Host site

“如何关闭Git警告”;LF将被CRLF“替换?”;?

我在Windows上工作,但也可能在Unix上工作,所以我不需要存储Windows行结尾。我只是不想发出警告 我发现这些堆栈溢出问题是相关的: 我试过: git config core.whitespace cr在下线处为false git config core.whitespace cr在下线处为true eol nowarn处的git config core.whitespace cr 但这些似乎没有任何作用。有人知道如何关闭警告吗 谢谢。我只是在.git/config文件中使用aut

Git 有没有办法比较两个差异或补丁?

有没有办法测试两个diff或补丁是否等效 假设您有以下git提交历史记录,其中功能F和G完全可以重新绑定到E: G / A--B--C--D--E \ F 由于当前部署过程的限制,我们有以下一些相关的图表(不受版本控制) F'和G'最终将应用于头部E',其顺序有待确定,因此结果如下 ------------E'--G'--F' 有没有一种方法可以测试从E'到G'的差异与从B'到G的git提交所生成的补丁相同 我完全意识到,在一个理想的世界里,版本控制可以解决这个问题,

如何使用git推送覆盖,覆盖对git服务器的更改?

我们正在向heroku推送构建,希望在不引入最新更改的情况下推送。我基本上使用github repo作为我的源代码控制存储库,并从几个不同的机器推送到git heroku repo。因为我们有几个构建服务器推送到同一个heroku存储库,所以有时候从构建服务器推送最新的位会抛出一条消息,说我需要在提交和推送之前拉最新的位 然而,由于来自构建服务器的代码保证是最新的,所以我想放弃pull中的更改,只提交和推送文件而不合并 有办法做到这一点吗?关于如何最好地设置它还有其他建议吗?只需执行git pu

什么';Git中的只读组件与ClearCase中的只读组件等效吗?

我的公司正在将我们的版本控制工具从RationalClearCase更改为Git。我们有下面的开发场景,我们很好奇Git是否有合适的模式来实现与ClearCase相同的行为 以下是关于我们情况的一些基本观点: 我们有许多离散的应用程序。让我们称之为AppA、AppB和AppC 我们还有一些文件(构建脚本等),这些文件对所有项目都是通用的。让我们称之为工具 对于任何给定的AppA、AppB或AppC代码片段,我们都需要特定的工具代码片段 我们的大多数开发人员从不修改工具代码 对于ClearCase

git是否使用SHA检查头部是否存在文件?

我需要检查最近的提交(HEAD)中是否存在文件。我一直在做这件事 git cat-file -e HEAD:path/to/file 但我意识到,如果文件被移动或重命名,这可能会有问题。有没有办法根据SHA检查文件?我试过了 git cat-file -e SHA 但它似乎搜索所有提交,而不仅仅是最近的提交 基于这一点看来是可行的 git ls-tree -r HEAD | grep SHA 您可以解析git ls tree-r HEAD的输出

git子树添加后如何重新设置基址?

我正在尝试学习Git1.7.11中添加的新命令。在添加子树后,我似乎失去了重新设置基址的能力。我有一个包含自述文件的主存储库和一个包含自述文件的库存储库。我用子树add将其添加到lib目录: $ git subtree add -P lib/mylib myliborigin master 这很好,但现在的历史是这样的: * 22c1fe6 (HEAD, master) Merge commit 'b6e698d9f4985825efa06dfdd7bba8d2930cd40e' as '

如何使我的提交历史与git rebase一起工作?

我有一段类似这样的经历 H o updated ctools, ds G M─┐ merged module file F │ o find page E o │ work on download restriction D o─┘ Report downloading/emailing WIP C o migration: find and replace URLs throughout notes B o various local things A o initial commit 再

Git克隆自CodeAurora.org,只是一个单一的回购协议,而不是整个项目

所以,我想知道有什么方法可以克隆这个回购协议: 不需要像这样克隆整个项目: git clone git://codeaurora.org/kernel/msm.git 谢谢 可能是我用git clone尝试的副本git://codeaurora.org/kernel/msm.git --分支korg/linux-3.0.y,但它仍然克隆了整个kernel.msm.git repo。您忘记了--单分支。

Git描述构建依赖关系

我正在使用git descripe--tags--dirty--long获取一个字符串,该字符串在我的库中用作const char[]来了解(例如,通过打印)git修订版,而它只有一个二进制版本 我正在生成一个与所有其他文件一起编译的文件(gitref.c)。我最近意识到,当我在克隆中更改git版本,然后重新运行构建过程时,gitref.c不会重新生成。这很正常,没有依赖关系 我发现依赖于.git/HEAD是一个很好的开始,大多数情况下都是有效的。这种依赖够了吗?如果不是,添加(文件)依赖项的正

移动git存储库时会发生什么。安全吗?

移动git存储库安全吗?(假设其他所有人都更新了他们的遥控器和符号链接) 在最初的问题中,我注意到git在.git/objects下创建了似乎是符号链接的东西。但我现在意识到它们不是符号链接 请注意,这个问题与上的问题不同:因为我问的是git创建的符号链接 根据评论中的要求,以下是一个示例: $ ls -ld ./something.git/objects/7a/f87b48b897fde759daaff2b0a781691d5a625a -rwxrwxrwx 1 XXX YYY 188 Jan

Git日志不显示重音

我在显示存储库的git日志时遇到一些问题。如果我从Terminal.app+zsh尝试,它将显示如下内容: commit 0edd34498e630...a70c7f Author: Gustavo Ramos <gustavo.ramos@veadvogados.com.br> Date: Thu Jun 27 21:22:43 2013 -0300 removendo "meta" e "metas", j<C3><A1> que esses for

在Git Bash中显示SSH密钥文件

如何查看Git Bash中使用的SSH密钥文件 我尝试了“git config--get all”,但收到了错误消息 错误:参数数目错误;用法:git config[选项] 使用哪个SSH密钥不是由Git决定的,而是由SSH客户端本身决定的。在~/.ssh/config中配置了相应的密钥,或者ssh只是尝试连接到主机时可以找到的所有密钥。通过使用标准SSH客户端连接到主机,您可以看到哪个密钥最终成功。例如,使用GitHub时: ssh -v git@github.com 这会让你有点像这样:

git远程主分支未与本地分支同步

git推送源主机 以前,此命令没有问题。在执行命令时关机是否会产生这样的问题 断电可能使遥控器处于不一致的状态 您是否尝试过git push-f origin master -f将告诉git推送,即使这可能会覆盖内容。一般来说,这可能很危险,但在这种情况下,这可能是正常的,因为您希望强制服务器处于特定的正确状态。您在谷歌上搜索过“git未能锁定”吗?这些建议都没用?最简单的方法可能是销毁远程服务器,如果可以的话再推一次。不知道怎么做,但是重置服务器并重置为上一次提交可以让它暂时工作 Total

Git 不允许所有父级都来自同一分支的合并提交

我有三个分支,即,develope、feature、xyz。现在我正在xyz分支中工作,并在这里提交。那么我已经遵循了这些步骤 git checkout feature git merge xyz --在这里,它复制了该提交并创建了另一个提交作为“merge:prev\u commit-latest\u commit”。所以在功能中我有两个新的提交意味着非推式提交 git checkout develop git merge xyz --在这里,它也做同样的事情。它复制了该提交并创建了另一个

PhpStorm无法推送到git存储库

我使用的是Windows8、PHPStorm8.0.2和git 我试图将我的项目推送到remove git存储库(它们托管在github和bitbucket上) 我在php storm的版本控制控制台中看到的最后一条消息是: git-c core.quotepath=false push--progress--Cellar origin refs/heads/master:master 它将永远等待它,它不会显示任何错误或此命令的输出 如果我手动推送项目(从命令行,或从PhpStorm中的控制台

如何与客户共享git提交日志而不授予对存储库的访问权?

我想与客户分享项目的进度。我需要让他知道我一直在努力。最好的方法是显示comit日志。但为了证明这一点,我必须让他访问我的回购协议(Bitbucket或Github)。我怎样才能在不允许访问repo的情况下做到这一点呢?好吧,将您的私有存储库克隆到您的计算机上,然后执行git log 然后将此信息复制给您的客户/客户 短端 我会在我的Mac OSX上使用git log | pbcopy复制它 这会将git日志的内容复制到剪贴板中。我看到了另一种选择: 在私有repo(服务器端)上设置post接

如何在git中显示本地和远程分支之间的连接?

我想将远程分支(origin/featureX)的副本添加到本地存储库中 因此,我生成了一个本地分支featureX,并将其设置为跟踪给定的远程分支: git branch featureX git branch -u origin/featureX featureX # Branch featureX set up to track remote branch featureX from origin. 现在有没有办法显示这种联系?我尝试了例如git branch-av,但是featureX

Git合并来自2个不同Git存储库的2个分支,并且存在空冲突

我有两个回购协议,内容几乎相同,但它们是不同的git回购协议,不同的提交 我想将一个分支从repo a合并到repo B,但是当我这样做时,我有很多空冲突。这意味着,没有的冲突文件,两个分支中的两个文件都是相同的,但根据git的规定是冲突的 当然,我可以git checkout——他们的fileX和&git add fileX继续我的生活但是我有1000个冲突,其中50个是真正的冲突,950个是这种冲突。所以,经历所有1000场冲突会让我永生难忘 我如何合并两个分支,而忽略这些不是真正冲突的“空

git:grep文件在所有以前的版本中

考虑具有以下行的Python配置文件: THEME = 'gum' THEME键只出现一次,因此当我想知道THEME是什么时,我会grep文件: grep THEME pelicanconf.py 该文件保存在git中,我想在所有以前的git提交中grepTHEME,以便告诉您这一行是何时更改的 是否有一种优雅的方式来grep一个git文件的整个历史记录?git log-S'THEME'-pelicanconf.py | xargs-n 1 git show显示每个更改的提交的内容THEME

Atom编辑器与Web服务器和GitHub同步

我想做什么(我需要一些安装方面的帮助): 1) 我远程使用Atom编辑器 2) 当我保存文件或进行一些更改时,我希望将它们发送到GitHub存储库(我猜是提交和拉取…)并将其保存到我的web服务器上 我怎样才能从原子做到这一点?可能吗 (我有用于Windows+atom编辑器+GitHub存储库的GitHub客户端…)看看位于 这个包允许您从Atom中执行最重要的Git命令 对于您来说,这可能是添加更改文件、提交它们并将提交推送到在线存储库。对于这个常见的用例,Git Plus还具有“Git a

这超过了GitHub';s文件大小限制

我在github存储库中有一些大文件,我试图添加/commit/push,但是push命令给出了以下错误 远程:错误:文件app_dump.sql为106.67 MB;这超出了GitHub的100.00 MB文件大小限制 因此,我从我的存储库中删除了这个大文件(app_dump.sql),并再次添加/commit/push。但我认为这不是正确的做法,因为无论何时我推它都会尝试推大文件 $ git status On branch master Your branch is ahead of 'o

Git 分别合并到qc和master时合并分支之间的冲突

我们从master分支(我们不使用dev分支,也不询问原因),然后当QA对分支发出合并请求时,我们将其合并到qc分支,然后当他们完成测试时,我们将其合并到master分支。我们从不将qc合并到master或将分支从master重新设置基址到qc,尽管我们可以将分支快进到master(通过git merge--ff only master或git rebase-i),但通常只合并到master就可以了 但是,分支机构(基于经理确定的任务)可以在不同的基础上启动,以不同的顺序合并到qc中,并以不同的

如何使用具有最高压缩级别的gzip对分支进行git归档?

我试图使用gzip以最高级别的压缩(9)对一个分支进行git归档,但它似乎没有在该级别进行压缩。这是我的命令: git-C/home/user/example.com/archive——格式tar-o/home/user/site\u backups/develope-`date+%Y-%m-%dT%H%m`。tar-develope | gzip-9 它创建了tar文件,但与使用以下命令压缩为86MB的zip相比,其大小超过100MB: git-C/home/user/example.com/

Git 更改特定提交的提交消息

注:与问题类似,但有一些重要变化 在给定提交id的情况下,我可以使用以下函数重写提交日期: rewrite-commit-date () { local commit="$1" local newdate="$2" newdate="$(date -R --date "$newdate")" echo ">>>> Rewriting commit $commit date: $newdate" git filter-branch -

git lfs是否有理由将超过文件大小的文件推送到github.com?

我想开始使用gitlfs将800+MB二进制文件推送到github.com进行分发。我看到了 > git push origin installer Git LFS: (0 of 1 files) 65.72 MB / 860.12 Connection to github.com closed by remote host. Git LFS: (0 of 1 files) 1.03 GB / 860.12 MB 之后 是否存在超出文件大小是预期行为/不是错误的任何更

Github页面独立开发子文件夹

我目前正在使用GitHub页面构建和托管个人网站。然而,我似乎缺乏单独开发子项目的能力,但仍然在主分支上看到结果,这让我有点不耐烦 为了澄清,以下是我希望能够做到的: 在存储库根目录中,我有一个登录页(index.html)和几个子目录,包括一些全局文件目录(脚本、样式表等)。现在,假设我想开发一个名为“foo”的项目,这是一个web应用程序,将位于mysite.github.io/foo上。我是否可以在foo子目录/子项目中开发,而不立即提交给master(a la分支) 我做了一些研究并发现

Git重新设置别名,每次提交之间有一秒的延迟

Git提交日期存储为Unix历元时间戳,即秒。重定基址时,多个提交获得相同的时间戳。然后它们经常以错误的顺序出现在GitHub中() 我希望rebase命令有一个别名,在每次提交之间等待一秒钟。理想情况下,它还支持交互式模式。没有内置的方法来实现这一点,尽管如果您使用的是Git版本,其中的Git rebase仍然是一系列shell脚本,您可以修改脚本。既然git-rebase主要使用C语言,那么修改源代码以在提交之间添加延迟就困难多了。但是您仍然可以使用旧的shell脚本(注意有几个),例如,将

如何从VisualStudio代码(拉/推)访问git gist?

我想将代码片段保存在git gist中,以便更快地引用。但我也想从ide Visaul Studio代码中访问它。如何实现这一点?您可以为VS代码安装Gist扩展: VS code->Extensions->search Gist->安装扩展(例如下面的示例安装扩展)->安装成功后->重新加载 然后,您可以直接通过VS代码将代码保存到Gist: 在Gist中打开要保存的文件->按F1->输入Gist:创建新块->输入说明等 要打开/编辑相关的摘要,可以按F1,然后输入Gist:openbloc

撤消git-rm文件名?

我做了一个git rm somefile,我只想撤销它。有办法吗 换句话说,我只想还原一个文件,其他所有文件都应该保持不变。git checkout HEAD path/to/file如果您尚未提交,您可以这样做 git checkout somefile 如果已经提交,则只能从上一次提交中获取文件。这可以通过以下方式实现: git checkout HEAD~ somefile 请注意,如果在没有开关的情况下键入git status,它将显示一条消息,确切地告诉您如何执行此操作

Windows10GitPush表示所有内容都是最新的,但没有进行更改

我正在使用MINGW64将更改推送到远程存储库。当我做出新的改变时,我会添加它并提交。当我推它时,它说它做了更改,然后我转到github,更改没有进行。当我从mac和桌面上推送时,就会发生这种情况。我也试着去网站手动操作,但没有成功。什么都不管用,任何帮助都是好的 当前,您的更改无法成功推送到GitHub GitHub遇到以下问题: 这就是为什么通过GitHub网站进行任何推送或直接修改都不起作用。在您的问题中添加git remote-v的输出。另外,git log-1显示了什么?您缺少了一些

git:自动合并分支(而且是不自觉地)

我在一个分支中完成了一些工作,然后提交并签出到master,并将该分支与master合并 之后,只要我创建了新的分支,它们就会自动合并到master中 我不知道我做错了什么,我也搜索了这个,没有发现相同的问题,任何人都可以告诉我如何才能阻止它 即使我在一个不干净的分支上,并且我想签出到另一个分支,它也不会警告我,因为它已经被合并了!(我真的没做什么奇怪的事,这让我抓伤了头!)问题出在~/.git提示符.sh中,现在问题解决了你有钩子吗?你的剧本是什么executing@CodeWizard我不确

Git 我们如何处理公共存储库中的私有配置文件?

我在github上发布了一些项目,任何人都可以部署。我有如下配置文件: my-project ├── config.yaml ├── dev.yaml 我想从相同的代码库部署,只是我需要添加几个应该是私有的文件。这些文件将如下所示: my-project ├── config.yaml ├── dev.yaml ├── confidential-stuff.yaml ├── more-confidential-stuff.yaml 这意味着公共项目中的文件是严格的子集 我们如何处理这样的私有

如何将现有web应用程序从pythonanywhere克隆到github/local

我想在Pythonywhere上创建现有web应用程序的克隆/副本。我有权访问Pythonywhere帐户。该应用程序是活动的,不是我的-一个朋友允许我复制一份,这样我就可以了解web应用程序是如何工作的。因此,重要的是,我可以在不破坏或更新当前web应用程序中的任何内容的情况下进行复制 我找到的所有教程都是关于通过git将应用程序部署到github到Pythonywhere(我以前做过),但从来没有相反的方法 我创建了一个空的github存储库,并考虑转到pythonbash控制台,将其添加为

在Git中,如何将标记重置为原点? 我所拥有的 如前所述,我已经用git过滤器分支重写了历史记录 我已将所有更改推送到原点 我用git reset--hard origin重新测试了其他存储库 问题

未正确重新测试的标签 例如: 我有一个名为“20.012”的标记,散列:6db19313f732a60a94b949e882bf57cceb44b629。 这个标签在我使用git filter branch和origin的存储库中有这个散列。 但是在我执行了git reset--hard origin的地方,它仍然有一个旧的hash637a98f3b230f37e16dd59b6eb45bab6f40bebda 如何正确更新所有标记?一个简单的 git pull--tags--force 成功

Windows上的gitlab runner未获取.ssh配置设置

我的回购协议依赖于其他回购协议 我正在尝试使用gitlab runner将二级回购克隆到Windows设备上 我的gitlab ci.yml如下所示: # Deploy to a staging server deploy_staging: stage: deploy tags: - my_gitlab_runner script: - echo "Deploy to staging server" - cd C:/ - git

Git 如何防止文件被发送到临时区域?

我正在从事一个与多个文件相关的项目,其中一些文件我想添加到一个git存储库,而有些文件我不想添加。通过运行git add.我会将所有未跟踪更改的文件添加到临时区域,如果我希望以这样的方式运行该命令,所有未跟踪更改的文件(我不想发送到临时区域的文件除外)将从现在起发送到临时区域,该怎么办,这样我就不必逐个键入所有文件 亲切问候。检查 gitignore文件指定Git故意未跟踪的文件 应该忽略。Git已经跟踪的文件不受影响 谢谢你的回复。我应该跟踪要提交的.gitignore文件夹吗?您应该提交.g

如何配置git以显示日志图而不包装长提交消息

我的git图现在看起来像这样 这对我来说是非常糟糕和不愉快的 有没有办法强迫git不要包装长行,而是使用水平滚动?作为扩展水平范围的替代方法,您可以使用特定的%最有可能的是,您正在使用less作为寻呼机。它允许在飞行中更改折线。只需键入-S,即-Shift+S,然后,如果要求您按Return键,请执行此操作。这会在换行和截断行之间切换。“水平滚动”,这不是您正在使用的控制台或shell的功能,而不是git的功能吗?再想一想,它确实提供了上/下滚动,我认为这是less命令也许是这样,我的问题仍然