我有一个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
我正在使用Capistrano部署rails应用程序;如何在不发布新版本的情况下在服务器上更新一个文件
例如:
假设我只对我的UserController.rb.进行了更改,并将其提交到git服务器,
如何在不进行新部署的情况下将此更新安装到服务器上。您应该通过Capistrano发布新版本
部署工具的目的是为您提供可重复的结果,并帮助您跟踪所部署的内容。为了一个小的修复而绕开这个过程意味着您将失去这两个优势。如果您认为为了一个简单的更改而运行整个部署过程是过分的,那么您可能应该致力于简化这个过
我们队正在开发一款游戏
我想尝试单独的原型,它基于我们的代码,但会略有不同。
我们将svn用于代码存储库
现在,对于我自己的原型,我应该如何设置一个repo,这样我就可以保留来自svn的更新,但不会让我意外提交我的更改
我认为分支(或分叉?)是这里的相关概念,但实际上我自己并没有设置它
如果有人能够规划概念性战略,这将很有帮助。
下面是我的想法,尽管我自己还没有完成分支/合并。\r
我在这方面做得对吗
分叉项目
将我的更改应用于分叉项目&不断从主干获取更新
如果需要,将我的更改合并回主(我的团队
如何找到导致git忽略文件的gitignore文件和行?从repo根目录中,尝试以下操作:
find . ~/.gitignore .git/info/exclude -name '*gitignore' -exec cat {} + | less
还要检查您是否正在使用其他排除文件:
git config -l | grep exclude
core.excludesfile=~/.gitignore
你
感谢并帮助我在上找到这一点。我知道找到这一行的唯一方法是二进制搜索。(删除一半的排除
我已经安装了Trac 1.0并与我的git repo同步
在使用提供的语法“closes#1”或“close#1”或“fixes#1”(不起作用)处理git commit并试图解决问题时,我不得不多次重置分支以反转命令commit。每次我添加重置时,trac都会失去同步,我必须重新同步,执行以下操作:
trac admin/path/to/project repository重新同步“*”
这狗屎很恶心,需要一些时间才能完成。
有什么我遗漏的吗?有没有办法重置分支而不是松同步
Thanx.Tra
我在处理文件名时遇到问题,文件名中有空格
我使用下面的脚本获取中包含的文件,并将其按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
我知道如果我需要使用命令克隆一个perforce现有的p4存储库
git p4 clone //depot/path/project
但是如果我想将多个p4路径合并到一个git回购中呢?
假设我有以下结构
//depot---/Path1----/APath/...
| |
| |
| --/BPath/...
|
在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
当我有一个包含轻量级和带注释标记的存储库时,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 hub上进行开源
过去人们是如何处理特定于用户的配置/设置变量的
理想情况下,我希望提交与我自己使用的完全相同的代码,但不包括我的URL或应用程序id/机密等
我想也许我可以用以下方法之一来做,但是有没有一个标准的或推荐的方法来做呢
baseURL = include myConfig.txt;
或
就我个人而言,我会对我自己的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
我在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
有没有办法测试两个diff或补丁是否等效
假设您有以下git提交历史记录,其中功能F和G完全可以重新绑定到E:
G
/
A--B--C--D--E
\
F
由于当前部署过程的限制,我们有以下一些相关的图表(不受版本控制)
F'和G'最终将应用于头部E',其顺序有待确定,因此结果如下
------------E'--G'--F'
有没有一种方法可以测试从E'到G'的差异与从B'到G的git提交所生成的补丁相同
我完全意识到,在一个理想的世界里,版本控制可以解决这个问题,
我们正在向heroku推送构建,希望在不引入最新更改的情况下推送。我基本上使用github repo作为我的源代码控制存储库,并从几个不同的机器推送到git heroku repo。因为我们有几个构建服务器推送到同一个heroku存储库,所以有时候从构建服务器推送最新的位会抛出一条消息,说我需要在提交和推送之前拉最新的位
然而,由于来自构建服务器的代码保证是最新的,所以我想放弃pull中的更改,只提交和推送文件而不合并
有办法做到这一点吗?关于如何最好地设置它还有其他建议吗?只需执行git pu
我的公司正在将我们的版本控制工具从RationalClearCase更改为Git。我们有下面的开发场景,我们很好奇Git是否有合适的模式来实现与ClearCase相同的行为
以下是关于我们情况的一些基本观点:
我们有许多离散的应用程序。让我们称之为AppA、AppB和AppC
我们还有一些文件(构建脚本等),这些文件对所有项目都是通用的。让我们称之为工具
对于任何给定的AppA、AppB或AppC代码片段,我们都需要特定的工具代码片段
我们的大多数开发人员从不修改工具代码
对于ClearCase
我需要检查最近的提交(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
git-rebasegit-subtree
我正在尝试学习Git1.7.11中添加的新命令。在添加子树后,我似乎失去了重新设置基址的能力。我有一个包含自述文件的主存储库和一个包含自述文件的库存储库。我用子树add将其添加到lib目录:
$ git subtree add -P lib/mylib myliborigin master
这很好,但现在的历史是这样的:
* 22c1fe6 (HEAD, master) Merge commit 'b6e698d9f4985825efa06dfdd7bba8d2930cd40e' as '
我有一段类似这样的经历
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 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 descripe--tags--dirty--long获取一个字符串,该字符串在我的库中用作const char[]来了解(例如,通过打印)git修订版,而它只有一个二进制版本
我正在生成一个与所有其他文件一起编译的文件(gitref.c)。我最近意识到,当我在克隆中更改git版本,然后重新运行构建过程时,gitref.c不会重新生成。这很正常,没有依赖关系
我发现依赖于.git/HEAD是一个很好的开始,大多数情况下都是有效的。这种依赖够了吗?如果不是,添加(文件)依赖项的正
移动git存储库安全吗?(假设其他所有人都更新了他们的遥控器和符号链接)
在最初的问题中,我注意到git在.git/objects下创建了似乎是符号链接的东西。但我现在意识到它们不是符号链接
请注意,这个问题与上的问题不同:因为我问的是git创建的符号链接
根据评论中的要求,以下是一个示例:
$ ls -ld ./something.git/objects/7a/f87b48b897fde759daaff2b0a781691d5a625a
-rwxrwxrwx 1 XXX YYY 188 Jan
我在显示存储库的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 config--get all”,但收到了错误消息
错误:参数数目错误;用法:git config[选项]
使用哪个SSH密钥不是由Git决定的,而是由SSH客户端本身决定的。在~/.ssh/config中配置了相应的密钥,或者ssh只是尝试连接到主机时可以找到的所有密钥。通过使用标准SSH客户端连接到主机,您可以看到哪个密钥最终成功。例如,使用GitHub时:
ssh -v git@github.com
这会让你有点像这样:
git推送源主机
以前,此命令没有问题。在执行命令时关机是否会产生这样的问题 断电可能使遥控器处于不一致的状态
您是否尝试过git push-f origin master
-f将告诉git推送,即使这可能会覆盖内容。一般来说,这可能很危险,但在这种情况下,这可能是正常的,因为您希望强制服务器处于特定的正确状态。您在谷歌上搜索过“git未能锁定”吗?这些建议都没用?最简单的方法可能是销毁远程服务器,如果可以的话再推一次。不知道怎么做,但是重置服务器并重置为上一次提交可以让它暂时工作
Total
我有三个分支,即,develope、feature、xyz。现在我正在xyz分支中工作,并在这里提交。那么我已经遵循了这些步骤
git checkout feature
git merge xyz
--在这里,它复制了该提交并创建了另一个提交作为“merge:prev\u commit-latest\u commit”。所以在功能中我有两个新的提交意味着非推式提交
git checkout develop
git merge xyz
--在这里,它也做同样的事情。它复制了该提交并创建了另一个
我使用的是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中的控制台
我想与客户分享项目的进度。我需要让他知道我一直在努力。最好的方法是显示comit日志。但为了证明这一点,我必须让他访问我的回购协议(Bitbucket或Github)。我怎样才能在不允许访问repo的情况下做到这一点呢?好吧,将您的私有存储库克隆到您的计算机上,然后执行git log
然后将此信息复制给您的客户/客户
短端
我会在我的Mac OSX上使用git log | pbcopy复制它
这会将git日志的内容复制到剪贴板中。我看到了另一种选择:
在私有repo(服务器端)上设置post接
标签: Git
branchgit-branchremote-branch
我想将远程分支(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
我看到了GitHub,但是有没有一个与Bitbucket等效的工具
或者我必须直接联系a吗?否。要求Bitbucket支持,但Zenodo表示Bitbucket目前在API中缺乏正确的功能
我有两个回购协议,内容几乎相同,但它们是不同的git回购协议,不同的提交
我想将一个分支从repo a合并到repo B,但是当我这样做时,我有很多空冲突。这意味着,没有的冲突文件,两个分支中的两个文件都是相同的,但根据git的规定是冲突的
当然,我可以git checkout——他们的fileX和&git add fileX继续我的生活但是我有1000个冲突,其中50个是真正的冲突,950个是这种冲突。所以,经历所有1000场冲突会让我永生难忘
我如何合并两个分支,而忽略这些不是真正冲突的“空
考虑具有以下行的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
我想做什么(我需要一些安装方面的帮助):
1) 我远程使用Atom编辑器
2) 当我保存文件或进行一些更改时,我希望将它们发送到GitHub存储库(我猜是提交和拉取…)并将其保存到我的web服务器上
我怎样才能从原子做到这一点?可能吗
(我有用于Windows+atom编辑器+GitHub存储库的GitHub客户端…)看看位于
这个包允许您从Atom中执行最重要的Git命令
对于您来说,这可能是添加更改文件、提交它们并将提交推送到在线存储库。对于这个常见的用例,Git Plus还具有“Git a
我在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
我们从master分支(我们不使用dev分支,也不询问原因),然后当QA对分支发出合并请求时,我们将其合并到qc分支,然后当他们完成测试时,我们将其合并到master分支。我们从不将qc合并到master或将分支从master重新设置基址到qc,尽管我们可以将分支快进到master(通过git merge--ff only master或git rebase-i),但通常只合并到master就可以了
但是,分支机构(基于经理确定的任务)可以在不同的基础上启动,以不同的顺序合并到qc中,并以不同的
标签: Git
Ssh
zipgzipgit-archive
我试图使用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
git-commitgit-rewrite-historygit-amend
注:与问题类似,但有一些重要变化
在给定提交id的情况下,我可以使用以下函数重写提交日期:
rewrite-commit-date () {
local commit="$1"
local newdate="$2"
newdate="$(date -R --date "$newdate")"
echo ">>>> Rewriting commit $commit date: $newdate"
git filter-branch -
我想开始使用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 web界面生成git更新索引--chmod=+x
我目前正在使用GitHub页面构建和托管个人网站。然而,我似乎缺乏单独开发子项目的能力,但仍然在主分支上看到结果,这让我有点不耐烦
为了澄清,以下是我希望能够做到的:
在存储库根目录中,我有一个登录页(index.html)和几个子目录,包括一些全局文件目录(脚本、样式表等)。现在,假设我想开发一个名为“foo”的项目,这是一个web应用程序,将位于mysite.github.io/foo上。我是否可以在foo子目录/子项目中开发,而不立即提交给master(a la分支)
我做了一些研究并发现
Git提交日期存储为Unix历元时间戳,即秒。重定基址时,多个提交获得相同的时间戳。然后它们经常以错误的顺序出现在GitHub中()
我希望rebase命令有一个别名,在每次提交之间等待一秒钟。理想情况下,它还支持交互式模式。没有内置的方法来实现这一点,尽管如果您使用的是Git版本,其中的Git rebase仍然是一系列shell脚本,您可以修改脚本。既然git-rebase主要使用C语言,那么修改源代码以在提交之间添加延迟就困难多了。但是您仍然可以使用旧的shell脚本(注意有几个),例如,将
我想将代码片段保存在git gist中,以便更快地引用。但我也想从ide Visaul Studio代码中访问它。如何实现这一点?您可以为VS代码安装Gist扩展:
VS code->Extensions->search Gist->安装扩展(例如下面的示例安装扩展)->安装成功后->重新加载
然后,您可以直接通过VS代码将代码保存到Gist:
在Gist中打开要保存的文件->按F1->输入Gist:创建新块->输入说明等
要打开/编辑相关的摘要,可以按F1,然后输入Gist:openbloc
我做了一个git rm somefile,我只想撤销它。有办法吗
换句话说,我只想还原一个文件,其他所有文件都应该保持不变。git checkout HEAD path/to/file如果您尚未提交,您可以这样做
git checkout somefile
如果已经提交,则只能从上一次提交中获取文件。这可以通过以下方式实现:
git checkout HEAD~ somefile
请注意,如果在没有开关的情况下键入git status,它将显示一条消息,确切地告诉您如何执行此操作
我正在使用MINGW64将更改推送到远程存储库。当我做出新的改变时,我会添加它并提交。当我推它时,它说它做了更改,然后我转到github,更改没有进行。当我从mac和桌面上推送时,就会发生这种情况。我也试着去网站手动操作,但没有成功。什么都不管用,任何帮助都是好的 当前,您的更改无法成功推送到GitHub
GitHub遇到以下问题:
这就是为什么通过GitHub网站进行任何推送或直接修改都不起作用。在您的问题中添加git remote-v的输出。另外,git log-1显示了什么?您缺少了一些
我在一个分支中完成了一些工作,然后提交并签出到master,并将该分支与master合并
之后,只要我创建了新的分支,它们就会自动合并到master中
我不知道我做错了什么,我也搜索了这个,没有发现相同的问题,任何人都可以告诉我如何才能阻止它
即使我在一个不干净的分支上,并且我想签出到另一个分支,它也不会警告我,因为它已经被合并了!(我真的没做什么奇怪的事,这让我抓伤了头!)问题出在~/.git提示符.sh中,现在问题解决了你有钩子吗?你的剧本是什么executing@CodeWizard我不确
我在github上发布了一些项目,任何人都可以部署。我有如下配置文件:
my-project
├── config.yaml
├── dev.yaml
我想从相同的代码库部署,只是我需要添加几个应该是私有的文件。这些文件将如下所示:
my-project
├── config.yaml
├── dev.yaml
├── confidential-stuff.yaml
├── more-confidential-stuff.yaml
这意味着公共项目中的文件是严格的子集
我们如何处理这样的私有
我想在Pythonywhere上创建现有web应用程序的克隆/副本。我有权访问Pythonywhere帐户。该应用程序是活动的,不是我的-一个朋友允许我复制一份,这样我就可以了解web应用程序是如何工作的。因此,重要的是,我可以在不破坏或更新当前web应用程序中的任何内容的情况下进行复制
我找到的所有教程都是关于通过git将应用程序部署到github到Pythonywhere(我以前做过),但从来没有相反的方法
我创建了一个空的github存储库,并考虑转到pythonbash控制台,将其添加为
未正确重新测试的标签
例如:
我有一个名为“20.012”的标记,散列:6db19313f732a60a94b949e882bf57cceb44b629。
这个标签在我使用git filter branch和origin的存储库中有这个散列。
但是在我执行了git reset--hard origin的地方,它仍然有一个旧的hash637a98f3b230f37e16dd59b6eb45bab6f40bebda
如何正确更新所有标记?一个简单的
git pull--tags--force
成功
我的回购协议依赖于其他回购协议
我正在尝试使用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 add.我会将所有未跟踪更改的文件添加到临时区域,如果我希望以这样的方式运行该命令,所有未跟踪更改的文件(我不想发送到临时区域的文件除外)将从现在起发送到临时区域,该怎么办,这样我就不必逐个键入所有文件
亲切问候。检查
gitignore文件指定Git故意未跟踪的文件
应该忽略。Git已经跟踪的文件不受影响
谢谢你的回复。我应该跟踪要提交的.gitignore文件夹吗?您应该提交.g
我的git图现在看起来像这样
这对我来说是非常糟糕和不愉快的
有没有办法强迫git不要包装长行,而是使用水平滚动?作为扩展水平范围的替代方法,您可以使用特定的%最有可能的是,您正在使用less作为寻呼机。它允许在飞行中更改折线。只需键入-S,即-Shift+S,然后,如果要求您按Return键,请执行此操作。这会在换行和截断行之间切换。“水平滚动”,这不是您正在使用的控制台或shell的功能,而不是git的功能吗?再想一想,它确实提供了上/下滚动,我认为这是less命令也许是这样,我的问题仍然