在工作中,我使用Git作为SVN的客户端,使用git svn
。我也将我的Git存储库推送到远程。
SVN存储库由我办公室的一个团队使用,而Git远程存储库目前仅供我使用。这是从SVN迁移到Git的过程的全部内容。
我的工作流程包括将我的更改提交到我的本地Git仓库,然后由其他人从SVN更改更新我的工作副本,提交到SVN,最后推送到Git远程。像这样:
$ git commit
$ git svn rebase
$ git svn dcommit
$ git push origin
这没有问题。
但今天,由于错误,我交换了最后两步,所以我推到了原点,然后我做了git svn dcommit
。
这导致origin/master
偏离master
,但更重要的是偏离git-svn
遥控器。现在git log
看起来像这样:
$ git log --oneline --decorate --graph --all -5
* 613ffa60 (HEAD -> master, git-svn) Fix typo on message displayed to user
| * db2e67ef (origin/master) Fix typo on message displayed to user
|/
* 24d8fab9 Commit C
* c0c1b598 Commit B
* e31c07c0 Commit A
为简单起见,我修改了上面的提交消息,但请注意master
和origin/master
中最后两个不同的提交实际上包含相同的更改。
我该如何解决这个问题?
我尝试了git rebase origin/master
或git reset --hard origin/master
之类的各种内容,但我得到的只有master
和origin/master
指向相同的提交。像这样:
$ git log --oneline --decorate --graph --all -5
* 613ffa60 (git-svn) Fix typo on message displayed to user
| * db2e67ef (HEAD -> master, origin/master) Fix typo on message displayed to user
|/
* 24d8fab9 Commit C
* c0c1b598 Commit B
* e31c07c0 Commit A
如果您不使用git-svn
,那么这些将是解决方案,但如何让git-svn
也指向相同的提交?我需要额外提交所有内容合并吗?
正如我之前所说,目前我是Git遥控器的唯一用户,所以如果有必要,我不介意在遥控器上重写历史记录。
答案 0 :(得分:2)
作为背景:您遇到这种情况的原因是* 613ffa60 (HEAD -> master, git-svn) Fix typo on message displayed to user
| * db2e67ef (origin/master) Fix typo on message displayed to user
|/
* 24d8fab9 Commit C
* c0c1b598 Commit B
* e31c07c0 Commit A
更改了本地git提交,以将相应的SVN修订号添加到git commit消息中。
解决问题的方法非常简单。您需要确保您的git master与SVN处于同一提交状态,然后将其强制推送到您的git repo(origin)。
如果你在这里:
git push --force
您只需要执行origin/master
,它将使用您当前的本地分支覆盖* 613ffa60 (git-svn) Fix typo on message displayed to user
| * db2e67ef (HEAD -> master, origin/master) Fix typo on message displayed to user
|/
* 24d8fab9 Commit C
* c0c1b598 Commit B
* e31c07c0 Commit A
分支,它将再次同步。
如果你在这里
master
执行以下操作,将本地$ git checkout master && git reset --hard git-svn && git push --force
带回SVN提交,然后将其强行推送到远程Git仓库:
git push --force
请注意master
只是因为您是远程Git仓库的唯一用户而没有问题。如果其他人也使用它,那么它们将与各自的import pandas as pd
# create an example DataFrame to work with
df = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
# define equation
eq = 'A + 3 / B'
# actual computation
df.eval(eq)
# more complicated equation
eq = "A + B + sqrt(B + 4)"
df.eval(eq)
不同步,这将是更多的工作。