Git拉动主站中被还原的提交?
我们称之为亚伦的同事被分配来翻新网站的一部分,作为一个长期项目.他创建了一个名为aaron的新git分支.他所有的更改都是在这个分支上进行的.当他工作时,我继续整体维护该网站,将我的更改更改为master. 最终,亚伦将他的分支合并为master.这以某种方式恢复了我在合并的时间到首次创建aaron分支的时间之间对master的所有投入.如果我键入git show ,我可以看到Aaron在他的分支上工作时更改的每个文件的差异.这些差异显示了我所做的每一个更改的回归.如果亚伦手动将其分支上每个文件的内容手动复制到master中并进行更改的方式,它看起来就是这样. (他没有这样做.我只是想说明日志显示的内容.) 根据亚伦的说法,他没有做任何奇怪的事情.他说他只是跑了git pull origin/aaron. 是什么造成的? git pull origin aaron是否有可能将我所有的更改都恢复为master? 另外,是否
18 2024-04-03
编程技术问答社区
在git中合并时总是忽略某个提交内容
我正在使用git从事我的第一个项目,并遇到了问题. 存储库包含一个客户端/服务器应用.我有一个"主"和"测试"分支,意图是主总是与部署的分支相同. 我的问题在代码库中有3-4个存储服务器URL的位置.我想在"测试"分支中更改它,而不是在"主"分支中更改.当然,问题是,每当我想合并回"主人"时,Git都希望将此更改放入"主人"中. 我可以选择一个选择性合并并合并所有提交的人,但这似乎是为了每次合并而乏味.最好的方法是什么? 我从来没有在任何 scm中遇到过这个问题,所以也许我"我只是犯错了. 解决方案 您想合并这一变化,因为实际上并没有合并,而是在历史上标记.这样,您就可以从哪里获得后续更改. 有几种方法可以做到这一点.一个是 git checkout master git merge -s ours --no-ff testing git checkout testing git merge -s ours --no-ff master 或
16 2024-04-03
编程技术问答社区
对某些用户来说,git锁定了主分支?
我想强迫其他团队成员不从事大支,而是在开发部门上工作.我们有一个中央的吉特(Git)依据,我们将工作推进.我想知道是否有可能阻止用户将更改推向主分支,但仅允许某些用户这样做. 我想拥有以下"工作流" 开发始终仅对开发分支进行 发行版经理负责主部门,只有他才可以将其从开发分支合并到主人分支,并将其推向中央存储库的主支. 这是可能的,我该如何实现? 解决方案 请参阅 man githooks :在共享库中,您可以创建$(git rev-parse --git-dir)/hooks/pre-receive或$(git rev-parse --git-dir)/hooks/update脚本验证用户试图推向ref的内容. git随附a 其他解决方案 我的低级方法仅仅是让RM成为唯一一个带有SSH键的人,将其他所有人都用作主基线的存储库.这样,除了RM以外,没有人可以努力掌握 - 但是每个人都可以工作,因为他们都有自己的本地发展分支机构,而开发人员可以在自己喜欢的分支机
8 2024-04-03
编程技术问答社区
覆盖git合并时的作者
是否有一个选项,例如git-merge的git-commit? 我们维护一个阶段环境,必须进行一些更改.一些限制使我们只使用一个Linux用户访问登台环境. 无论如何,我们是一支具有合作计划的小团队,我们告诉我们何时进行提交,哪个是作者使用-author git-commit选项.但是,有时我们需要从导致非FFF合并的其他分支中合并.这意味着进行此合并时会执行提交. 在这种情况下,哪个是手动指定合并提交的作者的最佳方法? 解决方案 首先,防止合并创建提交: git merge --no-commit … 然后,手动进行提交: git commit --author="A. U. Thor " 其他解决方案 如果您已经进行了合并,则可以--amend作者之后.这样: git checkout master git merge my_branch git commit --amend --aut
18 2024-04-03
编程技术问答社区
如何撤销git flow功能的完成?
我正在学习git-flow,我只是做了git flow feature finish ,它合并了我的功能分支来开发和删除它. 我想将功能分支推向GitHub,因此我可以在同行评审后将其合并. 所以问题是,我如何"撤消"此命令.或换句话说,我该如何将我的最后两个提交从开发转移到我的功能分支? 解决方案 这些步骤应该可以解决: 获得SHA的需要: git log 是合并之前的提交 是您开始从事该功能之前的最后一个发展 git checkout develop git checkout -b feature/ git reset --hard git checkout develop git reset --hard 按下您的功能分支. 其他解决方案 我发现最容易更新主(我们称其为默认值)返回原点,使用 git checkou
12 2024-04-03
编程技术问答社区
从一个分支复制修改到另一个分支
我有一个来自master的分支.我对BranchA有一些更改(我不会合并从BranchA到master). 现在,我创建了另一个分支,master命名BranchB. 如何将更改从BranchA复制为BranchB? 解决方案 git checkout BranchB git merge BranchA 如果您打算不将更改合并回主,那么这就是全部.通常,将所有更改合并回主是一个好习惯,并从中创建新的分支. 另外,在合并命令之后,您将遇到一些冲突,您必须手动编辑并修复. 确保您在要将所有更改复制到的分支中. git merge将取您指定的分支,并将其与您当前所在的分支合并. 其他解决方案 而不是正如其他人建议的那样,您可以将一个分支重新置于另一个分支: : git checkout YourBranch git rebase AnotherBranch 这将YourBranch重新放在AnotherBranch上. 这看起来好像
6 2024-04-03
编程技术问答社区
有3个分支的git工作流程建议
我正在从事一个项目,我们正在尝试以最有效的方式(对我们)使用GIT进行掌握主分支. 有时,如果应该进入两个分支,然后我们希望在其他两个分支中的这些更改. 这应该是合并或重新列入其他两个分支吗? 这是沿着路线的疯狂工作流程吗?如果是这样,请提出建议! 解决方案 我看不到为两个团队创建两个分支机构的意义.工作应取决于其的自然,而不是谁将从事它. 这就是我建议的: 使用功能分支:您的大部分工作都应该在这些主题分支上,除了小小的提交(例如错别字等). 当您有一个应处理的功能,错误修复或应处理的机票时:创建一个分支 feat-something ,然后在那里工作. 使用A dev 或 Release-x (其中 x 是版本的编号)分支:当a 功能的分支机构工作已完成,测试和工作,将其反射到 dev 中. 永远不要对主人> ,该分支只能由首席开发人员CTO重新归还. dev 的作品在觉得需要时主人. 这是(基本上)我们如何在一个非常大的项目上工作.如
12 2024-04-03
编程技术问答社区
Git: 发送提交到另一个分支,这样我就可以工作并合并回来,而不需要(非常慢)签出?
我有2个分支,一个main一个,一个我正在从事parallel版本的分支. A --> B --> C (master) \ -> E --> F (parallel) parallel分支将始终从master合并.总是.并修改它. A --> B --> C --> D --> H (master) \ \ *merge* -> E --> F --> G --> J (parallel) 如果我切换分支,这很容易做到. 但是,如果我正在研究parallel,我可以在不切换分支的情况下执行此操作吗? switching 的问题在于,来回走动(特别是在Unity 3D 上)! 所以说我在F上,而主人仍在A上.然后,我想对Master B和C进行几次提交,然后将它们合并到G中.在不切换分支的情况下,我该怎么做? 解决方案 使用(如今)使用git worktree的解决方案要容易得多:您将获得共享相同存储库数
2 2024-04-03
编程技术问答社区
Git : 将一个分支中的多个提交合并到另一个分支中
我有以下用例. 我有一个主线分支. 从 mainline创建新的分支(dev). 在 dev 分支中进行了多个提交(大约20个),并将其推入 dev (远程)分支. 现在,我想将这20个承诺合并为单一提交,然后将其移至 Mainline .我到底怎么能做到? 事先感谢, shantanu 解决方案 听起来像 git merge --squash git checkout mainline git merge --squash dev git commit 请注意,如在这里评论,最好先在dev中合并mainline冲突,然后在mainline中合并dev之前.
22 2024-04-03
编程技术问答社区
防止用Git从主站合并一个文件
在另一个问题建议使用.gitattributes以保持跟踪文件的跟踪,而不是在不同的分支中合并,但是下面我的用例似乎不起作用. mkdir git cd git git init echo "B" > b.txt git add b.txt git commit -m 'Initial commit' echo "b.txt merge=keepMine" > .gitattributes git add .gitattributes git config merge.keepMine.name "always keep mine during merge" git config merge.keepMine.driver "keepMine.sh %O %A %B" git commit -m 'Ignore b.txt' git checkout -b test # Create a branch git checkout master # Back to master
14 2024-04-03
编程技术问答社区
将设置保留在分支中
我开始使用git进行软件开发. 我在Github上有一个项目.该项目还涉及一些存储在专用设置文件中的用户安装. 在github上,设置应为空(像这样) ### Settings: ## Your name $name = ""; ## Your email adress $email = ""; ## and so on 但是,我还在计算机(或服务器)上运行该项目.我的个人版本应该填写所有设置. 我想为此提供两个分支.个人分支应包含我所有的设置.主分支应该是我开发软件并将其上传到github的分支. 我想不时将主分支合并到个人分支机构中,以使我的系统保持最新状态.但是,每当我尝试合并分支机构时,我的个人设置就会丢失. 有没有办法做到这一点,还是我只是做错了什么(什么)? 解决方案 在您的个人分支机构中,您可以保留: github配置文件不变(没有值),但是有不同的名称(例如config.template) 带有个人价值的"价值文件
22 2024-04-03
编程技术问答社区
我们真的需要在Git中进行分支吗?
我参加了我的第一个软件工程课程. 这是我们任何人第一次在团队中工作,并使用git和github. 在课堂上,我们的老师告诉我们,您通常应该分支大师,完成新功能后,将其合并回师父. 这就是我一直在做的. 但是,我小组的其他成员不是分支. 他们从Github上的主人拉到本地机器,进行编辑,在本地主人上完成功能,然后推向Github上的主人. 我正在试图说服他们分支,但是现在我考虑了,我发现它更令人困惑. 有人告诉我,该分支机构的目的是制作代码的副本,而不必担心不小心的代码来破坏主人. 但是他们的本地主人真的不像分支机构本身吗?当他们进行编辑时,他们没有在Github上更改主,因此其他人可以自由从Github获取工作代码.然后它们合并,类似于分支. 我很困惑,如果他们在做什么似乎正在工作,我们为什么要分支? 谢谢! 解决方案 但是他们的本地主人真的不像分支本身吗? 是! 我很困惑,如果他们在做什么似乎正在工作,我们为什么要分支? 这取决于您
6 2024-04-03
编程技术问答社区
将分支移至另一分支
我已经开始在一个我在学期意识到的分支上做一些工作是错误的分支.有没有办法将分支移至其他分支. 例如: A -- B -- C -- D -- HEAD \-- E -- F -- G -- H -- I -- J \-- K -- L 我想要这个: A -- B -- C -- D -- HEAD \ \-- K -- L \ \-- E -- F -- G -- H -- I -- J 解决方案 假设您已经像这样命名了自己的分支: A -- B -- C -- D (master) \-- E -- G -- H -- I -- J (current-parent) \-- K -- L (my-branch) 您想做的是将my-branch重新命名为B命令: git rebase current-parent my-branch --onto B 其他解决方案
4 2024-04-03
编程技术问答社区
合并并删除一个步骤/命令中的分支
有可能,merge一个分支并使用一个命令自动delete它?仅在合并成功时才能执行删除步骤. 解决方案 不,git不同时支持这一点. 但是,您可以有条件地在外壳中运行命令: git merge source-branch && git branch -d source-branch 编辑: -d只会删除合并的分支,而-D也将删除未合并的分支,因此-d将确保分支合并,并且您不会偶然删除分支. 其他解决方案 这是一个古老的问题,但是对于那些偶然发现此功能的人,您现在可以添加一个git别名来完成此功能.例如,在.gitconfig中: # ... [alias] mgd = "!git merge $1 && git branch -d $1; #" 然后,您可以运行git mgd branch-name合并并删除一个分支.请注意,小写-d标志可确保只有在已经完全合并的情况下才能删除分支;因此,您不必担心第一个命令无法正常工作,然后失去分支
12 2024-04-03
编程技术问答社区
在Git中把一个改动合并到多个分支
我习惯于拥有一个主分支(主人)并在主题分支中工作.但是我现在正在从事一个带有两个主要分支机构(主和实验)的项目,但我不确定如何最好地将我的主题分支合并为两者? 这是正确的方法吗?如果没有,有人可以让我知道正确的方式. (master)$ git checkout -b bugfix # do bug fix here (bugfix)$ git commit -a -m 'Fixed bug.' (bugfix)$ git checkout master (master)$ git merge bugfix (master)$ git checkout bugfix (bugfix)$ git rebase experimental (bugfix)$ git checkout experimental (experimental)$ git merge bugfix 谢谢. 解决方案 不要做重击,就可以了.只需将您的bugfix分支合并到每个分支中,您需要它
12 2024-04-03
编程技术问答社区
如何安全地将一个Git分支合并到主分支?
创建了一个新的分支,我们称其为test. 有几个开发人员要么承诺master或创建其他分支,然后合并到master. 中 假设在test上工作需要几天,您想连续保持test在master内进行更新.master. 我会从test中做git pull origin master. 问题1:这是正确的方法吗?其他开发人员本来可以轻松地处理与我工作的同一文件. 我在test上的工作已经完成,我准备将其合并回master.这是我能想到的两种方式: a: git checkout test git pull origin master git push origin test git checkout master git pull origin test b: git checkout test git pull origin master git checkout master git merge test 我不使用--rebase,因为
32 2024-04-03
编程技术问答社区
如何将一个文件的版本从一个Git分支复制到另一个?
我有两个完全合并在一起的分支. 但是,在合并完成后,我意识到一个文件已被合并弄乱(其他人做了自动格式,gah),并且更容易更改为另一个新版本分支,然后将我的一条线重新插入后,将其带入我的分支. 那么,Git最简单的方法是什么? 解决方案 从您希望文件结束的分支中运行此操作: git checkout otherbranch myfile.txt 一般公式: git checkout git checkout / 一些注释(来自评论): 使用提交哈希,您可以从任何提交中摘取文件 这适用于文件和目录 覆盖文件myfile.txt和mydir 通配符不起作用,但是相对路径 可以指定多个路径 替代方案: git show commit_id:path/to/fil
12 2024-04-03
编程技术问答社区
用Git把最近的提交移到一个新的分支上
我如何将最近的master上的承诺移至新的分支,然后将主人重置为在进行这些提交之前?例如由此: master A - B - C - D - E : newbranch C - D - E / master A - B 解决方案 警告:您需要在使用git stash之前将未投入的编辑存储到藏匿处.完成后,您可以使用git stash pop检索藏匿的未投入的编辑. 移至现有分支 如果您想将承诺移至现有分支,则看起来像这样: git checkout existingbranch git merge branchToMoveCommitFrom git checkout branchToMoveCommitFrom git reset --hard HEAD~3 # Go back 3 commits. You *will* lose uncommitted work. git checkout existingbran
14 2024-04-03
编程技术问答社区
如何将最近(但不是最新)的提交移到一个新的分支上?
即.我如何从 出发 master : A-B-C-D-E-F-G to master: A-B-E-F-G \ feature: C-D 显然很明显CD应该位于功能分支中,因为该更改现在已延迟. 这与我见过的其他问题是一个微妙的问题">这里和在这里 解决方案 此答案假设您还没有推动 Master ,或者您是唯一从事该项目的人(在这种情况下,这并不重要).如果您已经推了 Master ,并且其他人进行了更改,则需要与他们进行交流以确保他们适当地更新其存储库. # Assuming you're on master git branch # Create a branch named at commit git rebase --onto master # Tran
8 2024-04-03
编程技术问答社区
如何从我的本地git中只删除远程分支?
我知道命令git push -d 我只想从删除我的本地git env .上面的命令从我的本地和远程github中删除了远程分支. 但是,如果我在github中删除了远程分支直接 在遥控器中没有名为feature/search的分支,命令失败. 那么,如何在我的本地远程分支中删除远程分支,而不交互远程github? 解决方案 先前回答了在这里. 您可以使用git branch -D或git branch -d在本地删除分支. 来自官方doc doc -d --delete Delete a branch. The branch must be fully merged in its upstream branch, or in HEAD if no upstream was set with --track or --set-upstream-to. -D Short
26 2024-04-03
编程技术问答社区