虽然我已经使用git一段时间了,但我仍然认为自己是n00b,所以请不要对我太苛刻.
我将"公司"主机系统维护为两个不相同的副本.我们称之为测试和生产.大型机没有任何我(或许可能是你们中的任何一个)会认为是版本控制系统的东西,所以我在桌面上使用git来为我提供版本控制.以下是我当前工作流程的主要功能:
桌面和大型机与FTP"同步".最后,无论是在大型机还是PC上编写的所有开发工作都会在git分支机构的PC上完成.
我无法访问任何类型的"现代"部署技术,如Hudson
我有两个主要的分支,称为Test和Prod.由于产品的(继承)结构,Test和Prod实例之间的代码存在许多差异.例如,所有显示面板都需要清楚地识别这是Test还是Prod,但是没有办法在单点配置它.
我通常为特定的开发子项目创建其他分支.
一般开发在Test分支上完成,具有多个提交.准备好后,将这些樱桃挑选到Prod上,标记有更改编号,并在批准后上传.
幸运的是,紧急工作是在Prod分支上完成的,并且是挑选出来的.
偶尔采摘樱桃需要手动合并.
我想改进这个工作流程.目前,我的存储库在两个分支上充满了并行相同的更改.
我想我更喜欢这样做(对于Test - > Prod):
一旦开发准备就绪,在Prod的HEAD创建一个新的分支
将这组开发更改折叠为新分支上的单个更改
将这个新分支合并到Prod.请记住,他们的共同祖先是在使测试与Prod不同的变化之前
它似乎git rebase -i可以完成这项工作,但我必须承认这git rebase是我的脑桥asinorum,不知怎的,我已经设法弄乱了我的树多次.
所以我的问题是:
请在产品的限制范围内建议更好的方法.
如果我的首选方法可行,有人可以建议正确的参数git rebase -i吗?
在某些条件下,我希望我的 post-receive hook 负责更新 repo 本身中的版本文件。因此,假设我的存储库中有一个文件 version.txt,我希望 post 接收挂钩更新 version.txt 中的版本字符串。
这将意味着再次推动回购。这可能吗?
谢谢!
情况
我们有一个git工作流程,其中所有发行版本都存储在master分支上,并且当准备好提交可以部署时,我们向其添加标签,然后用于git archive构建要部署的捆绑包。
我们使用带有选项version.txt标记的文件来跟踪用于构建给定存档的提交。.gitattributesexport-subst
题
如果我写$Format:%d$的version.txt,和导出标签的提交,我会像(HEAD, tag, master)写生成的文件英寸
我怎么能tag独自一人?
[edit]有一个git命令已经产生了:
git describe --tags HEAD
Run Code Online (Sandbox Code Playgroud)
这将输出:
latest_tag #if HEAD is tagged
latest_tag-5-g03cc91b #if HEAD is not tagged,
#and the latest tag is 5 commits ago on commit g03cc91b
Run Code Online (Sandbox Code Playgroud)
有什么方法可以用此输出替换段塞version.txt吗?
我可以实现它,以便在从 github 拉取存储库后,钩子已经存在于.git/hooks目录中吗?
我想取消暂存当前工作副本中的所有内容,但会自动暂存我将来编辑的所有文件和大块。
例如,我使用的 CocoaPods 版本与我正在从事的项目中的大多数其他人不同。我想升级配置文件的配置以与我的 CocoaPods 兼容,而不会破坏他们的。最简单的方法是不在拉取请求中包含新配置,但这意味着我无法构建。隐藏和弹出将不起作用,因为如果我在编辑配置后隐藏然后应用我的更改,弹出将修复配置但撤消我的更改。
我应该如何解决这个问题?
我项目的当前目录结构是<ProjectRooot>/wiki,目录中有三个Markdown文件wiki.
其中一个链接到另外两个,我尝试了两种编写链接的方法.
[Kernel API & Core Negotiation Protocol](wiki/KernelAPI.md)
[Priorities & Starvation](wiki/Priorities.md)
Run Code Online (Sandbox Code Playgroud)
[Kernel API & Core Negotiation Protocol](KernelAPI.md)
[Priorities & Starvation](Priorities.md)
Run Code Online (Sandbox Code Playgroud)
在第一种方式下,链接在生成的Doxygen中正常工作,并在访问时被破坏github.com.在第二种方式,链接正常工作github.com,但Doxygen甚至没有尝试链接.
有没有办法编写满足两者的链接?
这是场景
主分公司
- 文件名:xxx-master.txt
- 文件内容:
code
code
ID=01
code
code
code
开发分支
- 文件名:xxx-dev.txt
- 文件内容:
code
code
ID=02
code
code
code
将master合并到dev中时,我想保留xxx-dev.txt作为文件名,ID = 02,但是其他一切都来自master.当将dev合并为master时,反之亦然.这是我能让GIT理解的吗?
我不确定摘要是否明确说明了这一点。我想要做的是创建一个 jenkins 构建状态徽章 url,它将以某种方式能够找出它所在的 Git 分支,并动态地向 url 添加正确的分支后缀。
我想这样做,这样我就可以创建一个自述文件,它始终显示master,develop和<branch-i'm-looking-at>詹金斯建立是回购,而无需手动更新,每个分支的徽章。
我知道如何创建特定于分支的构建状态徽章。Jenkins 会自动为你构建 markdown URL。例如,我的一个develop分支看起来像:
[]
(https://jenkins.mycompany.com/path/to/build/develop/)
Run Code Online (Sandbox Code Playgroud)
我可以想象它会是使用${BRANCH_NAME}jenkins env var 的东西,但我想不出如何创建它。我对 git hooks 或其他脚本的经验不足,甚至无法开始想出一种方法来做到这一点。
有没有人做过这个?
我做到了git checkout master.如果我这样做,git status它会在我的工作目录中显示两个已更改的文件,即使我没有触及它们.它似乎是某种行结束问题.
git reset --hard HEAD 也没有帮助.
我已经设定core.ignorecase=true,没有帮助.
这有什么不对?Windows上的Git仍然像地狱一样困扰着我......
不知道标题是否描述了我想说的内容,但这里是:
我想知道使用git子模块设置Jenkins时的"最佳实践".main和submodule repo都可以通过ssh访问,因为我们有几个用户,所有这些用户都有自己的用户名.对于拥有自己用户的Jenkins也是如此.但是,我们(我)偶然发现了一个问题.如果我创建一个子模块: git submodule添加ssh:// my-user-name @ address-to-module-repo并推送它,Jenkins会在尝试获取子模块时将我称为用户,这显然会失败.如果其他一些用户执行了拉取,我的用户名仍然在路径中(在.gitmodule,.git/config等等).
我在"普通"用户之间发现了另一个帖子Git子模块和ssh访问处理共享,但是当Jenkins尝试构建时,它并没有真正解决问题,因为我只允许在Jenkins取出所有我无法执行的操作后执行shell cmd如链接中提到的那样,还是可以(Jenkins新手)?
所以,总结一下.如何解决这个问题,以便在通过ssh获取子模块时Jenkins将使用自己的用户?
Br,Pistol先生