假设我有5个本地提交。我只想将其中的两个推送到集中回购(使用SVN风格的工作流)。我该怎么做
这不起作用:
git checkout HEAD~3 #set head to three commits ago
git push #attempt push from that head
这最终会推送所有5个本地提交
我想我可以通过git reset来撤销我的提交,然后是git stash,然后是git push——但我已经编写了提交消息并组织了文件,我不想重做它们
我的感觉是,一些标志通过推动
我正在对本地git存储库中的某些文件进行更改,然后希望将更改发送到远程git存储库,通过ssh从中克隆本地git存储库
在本地运行“git commit-a”之后,为了将更改发送到远程,我运行
$ git push
Everything up-to-date
但是,我检查了远程文件,它们没有更改!
有什么想法吗
谢谢和问候 您尝试过以下方法吗
$ git push origin master:master
您可能会被推入一个非裸存储库,即一个附加了工作副本的存储库。如果git push注意
假设我目前正在开发一个新功能,它是我从“dev”分支出来的,我已经工作了几天,但它还没有准备好与“dev”合并并推出
尽管我已经做了几次提交,并且一直在对dev进行更改,然后将dev合并到我的功能分支中以保持更新
这是我的问题。将我的功能分支(与我的本地分支同名)推到origin(比如GitHub)上是一个好主意吗?只是为了备份目的,然后当它合并到“dev”和/或“master”中时,从origin删除它。听起来很合理。
如果没有人从该分支中提取,我会建议这样做,而不是直接在功能中合并dev。
标签: Git
Vim
msysgitvim-fugitive
当我在windows上时,我一直在使用git和Survious.vim来管理代码。然而,我遇到了一个问题。根据:GDiff命令应该是一个diff窗口,并允许我只暂存文件的一部分。但是,当我在带有更改的文件中发出命令时,会收到以下错误消息:
这是windows的问题吗?维姆?逃犯msysgit?文件权限?有人知道吗?这可能与
试着按照我在前面的回答中所描述的那样修补cmd/git.cmd,看看这是否有帮助
尽管如此,仍有两种选择:
要么是锁定问题(文件被进程锁定):类似于或的实用程序可能有助于
标签: Git
gitosisgithooksgitwebpost-update
[更新日期:2010年9月16日]
在昨晚研究了这个问题后,我意识到我最初的问题实际上是在问两个不同的问题:
1) 是否可以为gitosis创建的所有远程存储库设置更新后挂钩(即,在gitosis中创建存储库后,不必手动执行mv hooks/post-update.sample hooks/post-update),这是通过HTTP进行克隆的必要条件(哑HTTP客户端依赖于这样一个事实,即从更新后挂钩中调用git update server info)
2) 一旦可以通过HTTP访问存储库,是否
我创建了一个新的GitHub回购协议-我想将我现有的回购协议放在那里。
我遵照指示:
cd existing_git_repo
git remote add origin git@github.com:acme-org/myprj.git
git push origin master
这只会将主分支推送到GitHub。
如何将现有回购协议中的所有内容(包括所有分支)推送到新的GitHub回购协议 注意:git push——所有这些都不会推你的标签,只推你的分支
git push --all
g
如果我的Git存储库位于NFS/Samba上,有什么需要担心的吗
例如,NFS中的文件锁定不可靠,因此会影响Git?只要只有一个人访问存储库,就可以了。不要以这种方式在用户之间共享存储库。您的数据将是安全的,但同时推送可能会在每个分支的前端发生冲突。将git存储库放置在samba上可能会产生文件权限问题(尤其是+x),因为samba不存储这些权限,而git存储这些权限。只有在服务器或客户端位于Windows上时才是如此。使用Linux内核和Samba中的CIFS支持,您应该获得对文件模式的适当支
我有两个分支,硕士和博士。在featureA分支中,我在CoolFile.m中编写了一系列新代码。此功能尚未完成,因此此代码尚未准备好合并到主程序中。
CoolFile在过去编写得非常糟糕,因此在开发分支中我对其进行了一系列更改(主要是重新排序方法、添加注释和删除空白)
现在我想从master中重新设置基址,这样我就可以从清理后的代码中获益。问题是,由于所有的方法都在移动,所以rebase试图将所有新代码放在错误的位置。解决这个问题的最好方法是什么?我是否应该等到功能完成重构后再进行重构?我可能
git status在一个我从未使用过的目录树中报告了一大组文件为“新建”、“修改”和“删除”。在Subversion中,我会做一个svn还原——递归iPhone(我不在iPhone版本的应用程序上工作)并完成。但是有了Git,事情并不容易。对于Git来说,一切都很复杂
所以我有点恐慌,因为如果我把代码弄乱了,iPhone团队会把我撕成碎片。这将是一场混乱,因为据报道有超过50个文件被更改
有人能帮我吗?等效的Git命令是:
git reset --hard HEAD
请注意,这将丢弃您在整个
我有点像GitN00B,在分支方面有点困难。我不认为有人问过这个问题,但可能只是我没有寻找正确的关键词
情况:
我有一个远程git存储库,我已经签出了机器1上的主分支。
我在机器2上也做了同样的事情,只是我创建了一个新的分支(沙盒)并检查了它
我在机器2上拉、修改、提交和推送东西-没有问题
然后,我在机器1上进行了一些更改,提交并尝试推送,但出现以下错误:
To xxx@xxx.xxx.com:/project.git
! [rejected] sandbox -> sand
我刚刚将一个git存储库从我的服务器克隆到本地机器上。我想看看一切是否正常,所以我做了一个git状态,我感到惊讶的是,比我的git存储库更高级别的文件夹显示为未跟踪,“../joomla/”,这对你有意义吗?(这是一个猜测,因为你没有给出太多细节。但这是一个可能的场景):
你有回购协议,你克隆了它。您从您的目录运行了git clone url/to/repo.git,比如说/home/repos/my
现在,在克隆之后,您可以尝试git status,并显示来自/home/repos的未跟踪文件
我有一个项目a,它是一个库,在项目B中使用
项目A和B在github上都有一个单独的存储库,但在B中我们有一个子模块A
我在库中编辑了一些类,它位于repo A中,我在远程repo上按下,所以库(repo A)被更新
这些更新不反映“引用”(子模块)子模块引用以前的提交。。。。我应该怎么做才能更新git上的子模块?如果您更新子模块并提交给它,则需要转到包含子模块或更高级别的repo并在那里添加更改
git status
将显示如下内容:
modified:
some/path/to/yo
当只使用一个关联的存储库时,我非常习惯于使用changeset关键字和commit的SHA1散列在我的Trac票据中引用变更集,如下所示:
[changeset:af54b6d]
这会给我一个到相应变更集的超链接
现在我正在做一个项目,在这个项目中,同一个Trac环境(版本0.12)有多个与之关联的git存储库,没有人是默认的,也不应该是默认的,因此上面的语法不再有效
有人能帮我弄清楚如何引用特定存储库中的变更集吗
谢谢大家! 我正在使用subversion,但是如果git变更集链接以sam方
标签: Git
gitignoreatlassian-sourcetree
我有一个用Sourcetree管理的Bitbucket Git存储库
我有两个要提交的文件夹,但我需要忽略这些文件夹中的所有文件,因为它们只包含临时文件
我如何才能做到这一点?将此添加到.gitignore:
*
!.gitignore
据我所知,Git不跟踪文件夹,只跟踪文件,因此无法提交空文件夹(或忽略所有文件的文件夹)。例如,如果由于构建过程中的某个步骤而需要显示文件夹,您可以让构建工具来创建它?或者,您可以将一个空的、未被忽略的文件放入文件夹并提交。如其他人所述:git不跟踪文件夹,只
当我在我的项目上运行./bin/vendors install以安装新的捆绑包时,我被symfony更新阻止:
$ ./bin/vendors install
> Installing/Updating symfony
2d4fb8ad502a80af475c7232b5497571ed32a641
remote: Counting objects: 4754, done.
remote: Compressing objects: 100% (1709/1709), done.
^Ccei
我发现下面的脚本按日期列出了分支。我如何过滤它以排除较新的分支,并将结果输入gitdelete命令
for k in $(git branch | sed /\*/d); do
echo "$(git log -1 --pretty=format:"%ct" $k) $k"
done | sort -r | awk '{print $2}'
使用--自和--在之前如何
例如,这将删除一周内未收到任何提交的所有分支:
for k in $(git branch | sed /\*/d);
我想让jenkins测试代码以供审查。jenkins作业是在推送到refs/for/master时启动的,但它尝试构建origin/master分支,而不是refs/changes/XX/X/X分支。有人知道我做错了什么吗
詹金斯的日志:
Triggered by Gerrit: http://localhost/13
Building on master in workspace
/var/lib/jenkins/jobs/CI-JoysteerLogApi/workspace
Checko
标签: Git
git-filter-branch
我是git的初学者,主要依赖于源代码树之类的GUI工具,所以请耐心听我说
在我们的git回购协议中,我们有多个产品依赖于非常相似的核心代码库。我们通过为每种产品设立分支机构来实现这一目标。当我们第一次开始开发时,我们没有将其建立为工作流,因此我们的分支历史有点像这样:
master
|
B | C
\ | /
\|/
|
| A
| /
|/
2
|
|
1
|
|
A、 B和C是特定于产品的分支机构,A是我们为客
从图中可以看出,提交是指向根树的指针,根树是指向其他树和blob的指针。但什么是对指数的正确看法
问题:
它是一个类似的带有文件夹结构的树,还是仅仅是一个blob的平面视图
如果索引是树型的,那么提交和索引之间有很大区别吗
索引看起来更像完整快照还是差异
从概念上讲,索引是一棵树。它存储头部的状态,反映使用git add所做的所有更改。提交时,索引只是成为提交中的树。你是否在问这个索引是如何实际实现的?我猜它确实是一棵树,但我不确定。与这个问题的答案相同:
Git索引文件格式如下所述:索引是临
在git中,我们可以使用*指定文件名,比如*.jpg,*.*,但是目录呢
是否有任何方法指定所有目录
这不起作用:
git rm firstdirectory/*/thirddirectory
*不会产生“所有目录”的效果。您描述的glob表达式扩展不是由git执行的,而是由shell执行的。如果执行类似于echo*的操作,您可以看到这一点。该命令接收文件名参数列表,而不是带星号的单个参数
在您的情况下,find-ipath可能是识别所需路径的最有用的方法。您可能需要添加一个-键入d,以仅获取
我的。我正在尝试使用post-receivehook设置一种部署网站/webapp的方法
基本上,我有一个远程repo,然后将其克隆到一个DocumentRoot中,供apache使用。
我的post-receivehook如下所示:
document_root=/path/to/document/root
echo "deploying to web directory"
sudo GIT_WORK_TREE=$document_root git checkout -f
sudo chown
在Git中撤销更改(分阶段和未分阶段)的最快方法是什么
两个文件都未老化
$ git status -s
M file1.txt # unstaged
?? oops.txt # unstaged
$ git status -s
M file1.txt # staged
?? oops.txt # unstaged
一个文件已暂存,一个文件未暂存
$ git status -s
M file1.txt # unstaged
?? oops.txt # unstaged
$ git s
我想知道,git clone--verbose不是很详细。执行该命令的输出如下所示:
$ git clone --verbose <repo>
remote: Counting objects: 184, done
remote: Finding sources: 100% (184/184)
remote: Total 184 (delta 66), reused 183 (delta 66)
Receiving objects: 100% (184/184), 18.90 KiB
Git新手
我有一个根文件夹,其中包含要添加到本地Git存储库的源代码
这就是我所做的(我错过了什么吗?)
转到根文件夹
cd ~/MySource
创建存储库
git init
添加所有内容
git add .
承诺一切
git commit -m "First commit, hope it works"
没有错误,所以我们可以走了?我的开发工具有Git和内置的,看起来一切正常…是的,您现在已经将代码置于版本控制之下了
如果您是Git新手,我强烈建议您在学习Git时使用这个快速诅咒-
我使用kdiff3作为一个difftool。当我使用gitdifftool命令时,它还会显示完全相同的文件。即使是kdiff3也会弹出一条消息,说明这些文件是“二进制相等”(尽管它们是文本文件)。有没有办法避免显示未更改的文件?也许您在Diff(配置下)中启用了一些预处理器命令,这就是二进制文件可能相同的原因
如果要隐藏它们,则需要在目录->文件比较模式(完全分析)下执行完全分析。它将隐藏处理过的文件
但第一步是在另一个diff应用程序中检查它(像往常一样,确保文件结尾匹配或忽略)。我的diff
我正在我的地方安装一个私有的Git服务器,这样我就可以在局域网上本地管理我的repo。
我在我的服务器上安装了gitcore,它在ubuntu上运行
我对SSH没有太多的了解。所以我想知道应该在哪个系统上创建SSH密钥对,在客户端还是服务器上?
以及使Git在客户机-服务器模型中工作的任何进一步过程 在客户端生成SSH密钥(包括公钥和私钥),然后将公钥上传到服务器(这样它可以验证您的身份;通过知道密钥的公钥部分,服务器可以通过解密用私钥加密的内容来验证您的身份),并保持私有的一半私有的。(通常这
借用一些教程,我能够在git repo中对特定文件夹进行稀疏签出
mkdir git-completion && cd git-completion
git init
git remote add –f origin https://github.com/git/git.git
git config core.sparsecheckout true
echo contrib/completion/ >> .git/info/sparse-checkout
git pu
标签: Git
Github
gerritpull-requestbitbucket-server
拉请求似乎是使用Git进行代码审查的常用方法。但是,当使用内置的git请求pull或其他工具时,这个术语的含义是否相同尚不清楚
pull请求是Git的固有功能,还是GitHub、Gerrit或Atlassian Stash等工具的通用术语
代码评审的讨论和“结果”是存储在Git提交历史记录中还是存储在单独的数据库中?该命令可用于在本机Git中创建“拉请求”。运行时,Git会生成对项目和Git存储库URL的更改摘要,从中可以提取代码。然后可以将其邮寄到邮件列表或项目维护人员,他们可以将更改拉入自己
我是GitHub pull请求的新手,不知道这是否可行
现在我从master分支,定期进行更改和提交,然后在某个时候我将再次签出master并运行git pull,从origin获取最新版本
接下来,我签出我的分支并调用git-rebase-I-master,以应用这些更改,并确保在合并回master时没有任何冲突
我会在工作的时候定期经历这个循环。当我准备好集成到主分支时,我将签出主分支并调用git merge,然后推送到存储库
但是对于拉动请求,我需要采取最后一步吗?相反,我可以在我的分支上
我设置了一个新的Jenkins作业,从本地Git获取源代码。我可以使用cmd上的git clone从服务器获取数据。当我使用Jenkins作业获取源代码时,它与以下消息挂起10分钟,然后抛出超时错误
在工作区中远程构建Windows 2001
D:\ASDF555\Jenkins\workspace\TEST\u从中获取更改的作业
从中获取上游更改的远程Git存储库
git@test.test.texas555:team888/product555.git
我还将path配置为在cmd目录下使用
我们有一个脚本,可以发送包含所有已部署提交列表的电子邮件。它是通过保留上次部署的日期并在给定的时间范围内执行git log(now-last deploy time)来完成的。问题是,它无法生成由于分支而部署的所有更改的列表。我创建了一个极简主义示例来说明这个问题。我很确定这个问题以前有人问过,但显然我无法正确地表述它
* 24d9c49 - (HEAD, master) l-m (Wed Mar 19 15:54:48 2014 +0100) <Andrey>
|\
* \
我找到了一些关于如何使用恢复git分支的解决方案
我无法访问已删除分支的某些提交或该分支的任何删除历史记录
本地分支尚未合并到我的主分支中,并被意外删除。有可能恢复吗?谢谢你的帮助 您可以从以下内容开始:
git reflog | grep 'to branchname'
这将匹配如下所示的reflog行:
219daf7 HEAD@{20}: checkout: moving from master to branchname
您可以使用git checkout 219daf7四处查看
当其他人克隆了git repo时,我在git repo中设置的远程设备是否可以共享。我可以想出两个这样做会有帮助的例子
如果您使用git子树,任何想要更新子树文件夹的人都需要知道您使用的是什么远程服务器
如果你有一个项目。似乎这将有助于任何加入您的项目的人看到您确实是作为一个分支开始您的项目的,他们可以看到它从何而来
我能想到的实现这一点的唯一方法是通过侧频道(project wiki/website/README)或包含某种用户可以在克隆后运行的克隆后设置脚本来说明这一点
我打赌git不支持我
如果使用git_TRACE=2环境变量运行“git push”,则会得到以下结果:
09:25:28.098743 git.c:349 trace: built-in: git 'push' 'origin' 'master'
09:25:28.100261 run-command.c:341 trace: run_command: 'ssh' 'git@bitbucket.org' 'git-receive-pack '\''kevinburke/let
有一个“推”菜单项,但当我点击它时,除了一个微妙的进度条出现而且从未完成之外,什么都没有发生。在Visual Studio Code的文档页面中,我发现了这一行:“凭证管理目前不由VSCode处理”,该页面链接到凭证帮助器上的GitHub页面,该页面对于其他远程服务器(在我的例子中是bitbucket)来说太过具体,对于如何设置VS代码来说不够具体。目前,VSCode通过生成gitgit来实现git集成。如果git push在命令行上工作,而不提示输入用户名/密码,那么它也应该在VSCode上工
我正在尝试使用go-get-github.com/InfluxDB/InfluxDB编译InfluxDB数据库(版本v0.8.8)
但是这会拉主分支,我需要v0.8.8标记
我尝试过这样做:获取github.com/influxdb/influxdb/releases/tag/v0.8.8,但这失败了,无法找到
我还尝试对主分支执行常规的go-get,然后使用GOPATH/src/github…中的git手动签出标记,以设置正确的版本
使用最后一种方法的问题是,当我尝试使用go get-u-f.
我和一个开发团队一起工作,他们都在不同的机器上工作。我碰巧在Mac电脑上工作,克隆了我们的任何回购协议后,我立即发现:
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <fil
标签: Git
git-pullgit-fetch
我对git有些陌生,如有任何建议,将不胜感激。在这里,即使是学习更深入的免费视频/课程实践的链接也可能对我有用 “最简单的说法是,git pull先进行git获取,然后进行git合并。”
在这里查找一些关于它的好信息:git fetch
将代码从远程存储库拉入“远程跟踪分支”。基本上,这意味着已提交到远程回购的任何更改的信息都会下放到本地分支机构,但这些更改不会与分支机构的本地副本合并,因此可以合并这些更改。获取可以安全地完成,而无需更改本地存储库中自己的代码工作副本
git pull
从
我有从A到E的版本。两个分支头,Branch1和Branch2
E <- Branch2
|
D
|
C
|
B
|
A <- Branch1
E我相信你可以直接从Branch2到Branch1选择提交D:
git checkout Branch1
git cherry-pick <SHA-1 for commit D>
git签出分支1
吉特樱桃采摘
这应该起作用的原因是提交D本质上表示提交C和D之间的差异。您希望在不同的提交上应用此更改集,在本例中,在Branc
我有两个存储库A和B。我想将A合并到B中,而不需要整个历史记录,所以我做到了:
git pull --squash A_URL master
这似乎奏效了。B no有一个初始提交和一个合并提交。
我继续在A上工作,然后试图再次将其合并到B中,但这次保留了历史记录
git pull A_URL master
问题是A的所有历史现在都显示在B中,甚至是最初被压扁的提交。有解决办法吗?
基本上,我只想得到最近的提交(从最初的挤压开始)。我认为,您至少有一个误解
让我们将其分解为以下几部分:
显示历
我正在尝试使用TortoiseSVN和SSH从SVN repo克隆。我的URL是正确的,我可以使用Ortoisegit浏览到我的repo,但是当它尝试克隆它时,我得到以下输出:
Initialized empty Git repository in C:/path/of/project/.git/
Can't create session: Unable to connect to a repository at URL
'svn+ssh://path/to/repo': Error in ch
我正在尝试导入intellij IDEA
我面临两个问题-
在这里,Flowless&RichTextFX被添加为git子模块
这是一个eclipse项目
我需要在电脑中克隆和运行此应用程序的帮助。导入build.gradle应该可以(从欢迎屏幕导入)。确保同时签出git子模块。@CrazyCoder您能告诉我步骤吗。如果您能帮助我完成这些步骤,这将非常有帮助。请澄清您遇到问题的具体步骤。
我想在我的目录中创建一个文件,该文件包含该目录(包括该文件)的sha256和,并且在创建该文件之后。这里的困难在于,使用所述sha256更新文件将影响目录的sha256。这可能吗
我可以看出这几乎是在要求计算机预测未来,但我想知道是否有某种递归算法可以做到这一点。例如,如果和对象的校验和之间存在某种一致的关系,并且该对象的校验和更改了一个字节
这个问题引出了一个令人好奇的问题:我试图为一个缺少.git目录的存储库重新创建git descripe--tags的输出(可能将此数据保存在存储库中)。这
我需要使用来自客户端的REST调用克隆github存储库。我似乎只找到了使用POST调用创建新存储库的RESTAPI,但似乎不可能提供源存储库来克隆它
有没有办法通过正常的HTTPS呼叫来实现
添加一些信息:我有一个包含大量内容的远程git存储库,需要使用HTTPS从客户端创建它的远程副本(克隆)。稍后,客户端将仅在克隆的存储库上执行操作,并且在某个时候需要将克隆的git推送到原始git。您可以从一个作为源repo的
然后从那里开始,只需创建从克隆的repo到原始repo的正常提交:npm i
标签: Git
git-commitgit-log
在git repo中,我必须计算每次提交时添加/删除的代码数量,但我已经说过repo有点过时了。在某一点上,其中一个开发人员复制了相同的提交,对其中一个进行了修改,在没有重新基址的情况下进行了拉取,然后合并了它们
历史是(它的一部分):
D
| \
C|
|B
| /
A.
B和C都删除了相同的文件(导致每次提交删除48k行),然后创建了一个空的D提交。C添加了一些B没有添加的文件
我正在运行git log--shortstat--reverse--pretty=oneline>log.tx
很久以前,在一个很远的办公室里,有人复制了一个github存储库并将其上传到VisualStudioTeamServices(VSTS)。我们开发人员愉快地编写代码,在VST中开发特性并修复bug。现在是时候将我们的代码释放回开放源码社区的怀抱了
不幸的是,我们的VSTS存储库没有与github存储库共享的历史记录,因为它是一个副本,而不是克隆。虽然我们可以将github存储库添加为远程存储库,但将代码合并回主分支却是一场令人讨厌的冲突。整个文件夹结构已被移动或重命名,开源开发人员已将更改提交给
我在大学完成了我的项目,但毕业后我再也不能访问我们使用的远程git服务器了
如果我想恢复到早期版本,我仍然可以这样做吗?我的本地文件夹是否保存了所有提交?我该怎么做呢?假设你有一个足够新版本的回购*,是的,这是git的一个重要方面:你的回购拥有一切
如果您在本地repo中搜索分支和提交(主要通过带有不同选项的git branch和git log),您将能够检查和恢复项目历史记录的任何过去点,而无需依赖与中央远程服务器的任何连接
*(您最后一次从远程回迁是什么时候?因为它是在后台回迁的,所以也会进
我正在寻找类似于命令的-group directories first参数ls
git ls-files
通常,输出按字母顺序排序,如下所示:
anotherfile.c
directory/file.c
file.c
directory/file.c
anotherfile.c
file.c
我希望它看起来像这样:
anotherfile.c
directory/file.c
file.c
directory/file.c
anotherfile.c
file.c
这似乎没有得到支持
我在我们称之为原始主项目的分支上做了一些bug修复,这些分支被推送,然后出现了一个不相关的问题,我最终放弃了该项目,并向主项目重新安装了该项目
所以现在这些分支已经被推到了外面,所以我在克隆了一个新项目后做的是创建一个新分支:
git checkout-b ENGA-1651,它与已被推送审查的分支机构同名
然后我在它上面做了一个git cherry pick abc12345,但是如果我做了一个git status它就没有显示要提交的内容
从这一点出发,我如何验证git cherry pick
目前,我的项目有一个简单的pre-commithook(在R中,尽管这是这个问题附带的),它运行单元测试:
#!/bin/sh
a=$(Rscript tests/testthat.R)
exit $a
其中tests/testthat.R是处理所有测试的包装文件
不过,这个钩子有一个问题:如果我进行了部分提交(这样仍然有未提交的更改),测试将在工作树的当前状态下运行,包括未提交的更改
所以,假设我完成了我正在做的事情的“第一步”,但忘记了去做。然后我开始“步骤2”,但后来意识到我忘记提交“步