我在主题分支做了一些有趣的工作。现在我想在提交到主分支之前清除这些更改。因此,我想将所有这些更改拉入工作树中:让工作树包含主题的分支版本,并git diff显示主分支的所有更改。
那可能吗?我怎么做?
编辑:git merge --no-ff topic && git reset --mixed HEAD^似乎可以解决问题。如果有人有更优雅的答案,我洗耳恭听!
我有一个存储库,有多个用户提交给它。
我想制作存储库的副本,并删除所有用户信息。也就是说,应该存在单独的提交/评论历史记录,但有关who应删除的内容的信息(或者说,由一个特定的新用户替换)。
如何实现这一目标?理想情况下,我还想同步两个存储库。我知道如何使用 执行此操作--mirror,但不知道如何设置删除镜像存储库中的所有“用户信息”(或由单个新用户替换)。
我有多个开发人员正在开发的项目.我们都在使用相同的git存储库.
目前,我没有将生产服务器配置存储在存储库中,因为配置文件包含数据库凭据.
我想开始将这些配置存储在存储库中,所以我在考虑加密配置文件,然后再将它们保存在DVCS中.
在想到我终于想出了git之后,我现在发现自己对我所看到的git行为非常困惑 - 每当我推动所做的更改并将其提交到我的本地机器到我的原始git存储库时,这些更改立即得到暂停在原始服务器上撤消.咦??!?
我有一台机器(机器A),上面有一个项目的git存储库; 该机器正在运行SSH服务器,我配置了一个帐户,以便我可以远程连接它并克隆git repo.然后我在机器B上使用git克隆了repo:
git clone ssh://username@remote.host/path/to/repo
没有问题.我在机器B上对项目进行了更改,并将这些更改提交到B上的git存储库.然后,我将更改推送回机器A上的源存储库:
git push master origin
这很好; 在机器B上,输出git remote show origin显示原点是最新的:
$ git remote show origin
* remote origin
Fetch URL: ssh://username@remote.host/path/to/repo
Push URL: ssh://username@remote.host/path/to/repo
HEAD branch: master
Remote branch:
master tracked
Local ref configured for 'git push':
master pushes to master (up to date)
Run Code Online (Sandbox Code Playgroud)
但是,当我去机器A做一个时git status,我看到我刚刚推动的所有变化现在都被淘汰了!
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
# …Run Code Online (Sandbox Code Playgroud) 我是Mercurial的新手.我想知道是否有办法将.hg文件夹移动到工作目录以外的其他位置并仍然监视更改?
例如,
I have the .hg in /foo/.hg/*
Can I move it to /bar/.hg/* and still monitor the contents of foo?
Run Code Online (Sandbox Code Playgroud)
编辑:我对工作目录很偏执.我有Dropbox备份我的Mercurial存储库.但是.hg文件夹对我的Dropbox来说太大了
我刚刚第一次为个人项目安装了git - 现在我不知道如何在没有版本控制的情况下长时间生活.我想看看GUI是否有用,但我有一个问题......
到目前为止,我尝试过的GUI git客户端都假设我在我安装它们的机器上运行git.如果我尝试使用widnows安装的git对linux托管的repo进行操作,那么它(并非出乎意料地)就像糖蜜一样慢,并且似乎存在兼容性问题.
有没有办法让这个工作为smartgit?还是其他任何体面的客户?
我确实安装了gitweb,它看起来很好看,可以查看项目历史记录,但实际上我无法用它做任何事情.
编辑:如果我可以扩大这个问题,只是要求就如何进行提出建议,即:吸收它并使用Putty与其他东西进行可视化,克隆回购和推/拉,或做一些不同的事情,如svick's X服务器建议.
我的团队在断开模式下工作.即他们开发应用程序并在公司网络内部使用SVN来管理代码的版本控制.
我坐在客户办公室,无法从客户机器直接访问我公司的网络.我维护自己的SVN,每天检查从我的团队收到的代码丢弃,并对代码进行更改.
我在这种操作模式中面临两个问题.
因此,我开始觉得两个断开连接的SVN存储库不适合我的情况.
免费替代品是首选.
我已将3个文件从 bazaar下的顶级文件夹工作副本移动到新目录中.
Bazaar给我看了这个屏幕.Project

现在,我想将每个文件标记为已移动.可以通过一个文件执行此文件 - 通过选择缺少的文件,新文件,然后单击标记移动.

但是不可能对所有文件大规模地执行此操作.
屏幕截图只是一个例子,在我的真实项目中,我有~40个文件.
有没有想过为所有文件做这个?
使用接受的答案编辑:
在TBZR>运行命令并使用:bzr mv --auto

有没有办法将单个提交(例如我的本地存储库中的tip更改集)转换为工作目录中未提交的更改?
我知道hg strip删除指定的变更集并将其备份,但它是否将这些变更集转换为工作目录中的未更改变更?
编辑:
关于使用 hg rollback.
如果我想要做之前有未提交的更改怎么办hg rollback?我必须先付款吗?最后几次提交怎么样?顺序hg rollback堆栈是否会从这些提交更改为现有的未提交更改?
我试图搜索git commit包含的内容以及commit的sha hash中的哪些部分.但是我可能会问错误的单词而我什么也没找到.
我想知道什么是承诺.我读了一下社区书,有以下图片:

但是我认为提交的字段多于图像中显示的字段.
现在主要的问题是:什么字段参与提交sha hash?我问这是因为我在不同的存储库中有两个提交具有相同的sha哈希,但具有不同的父提交.在此之前我认为两个提交可能具有相同的sha哈希,如果它们是相同的并且具有相同的父提交.所以我有点困惑.
我有两个本地存储库(git1,git2),一个是其他的克隆.
GIT1
commit 4f438f9579939312689eb67e5fb7957d87cfa036 <-- this commit
Author: Michael Nesterenko <misha@gmail.com>
Date: Mon Jun 25 00:00:31 2012 +0300
stuff after change
commit e91e833158bb44f54f418cc5c3e1832452051428
Merge: dc69dc2 0b5912b
Author: Michael Nesterenko <misha@gmail.com>
Date: Mon May 7 02:09:18 2012 +0300
Merge branch 'master' of e:/temp/git2
Conflicts:
file.file
commit 0b5912bd1a1cb9b78410fe5c0dc67845ca1deec5
Author: Michael Nesterenko <misha@gmail.com>
Date: Mon May 7 02:06:46 2012 +0300
c8
commit dc69dc25a1e0c9067cbca19fe6a1d078a19138a0
Author: Michael Nesterenko <misha@gmail.com>
Date: Mon May 7 02:06:29 2012 +0300
c7
commit …Run Code Online (Sandbox Code Playgroud) 我知道commit vs push(本地vs远程repo)之间的区别
我来自SubVersion背景:为什么甚至可以选择提交"本地"?那是什么意思?只是总是提交到远程存储库是不是有意义?
我不明白为什么我们有这个中间本地存储库?
当我使用Mercurial时,我曾经将标记作为提交 - 至少在TortoiseHG中,它在添加标记时创建了一个提交.当我尝试使用Git时,我很失望 - 它没有为标记创建提交,而且 - 当我从Intellij IDEA提交时,我必须选中一个复选框来将标记提交到存储库.是否可以在Git中添加标签,并将其作为提交,与Mercurial完全相同?非常感谢你的每一个答案.
dvcs ×13
git ×10
mercurial ×4
bazaar ×1
distributed ×1
encryption ×1
git-tag ×1
mirror ×1
repository ×1
smartgit ×1
svn ×1
tortoisebzr ×1
undo ×1