我是团队的一员,我目前的任务是重组,即在一堆文件/文件夹中移动。
我想使用' hg mv',然后如何将其与团队合作同步?请记住,团队目前正在处理我需要移动的文件。推动重组后他们能够拉/更新吗?即使我移动了他们的文件,hg是否能够合并他们的本地更改?
另一个问题是' hg up'在重组被推动之前我最终。 hg可以处理我已移动但尚未推送的文件的传入修改吗?
答案 0 :(得分:1)
让我们创建三个名为main
,tom
和mine
的存储库,以了解会发生什么。 main
是一个中央存储库,您和Tom(您的同事之一)推动更改并使用它进行协作。 tom
是Tom的存储库,mine
是您的存储库。 tom
和mine
显然是main
的克隆。
$ hg init main
$ hg clone main tom
$ hg clone main mine
让我们有一个文件可以玩。 Tom创建了一个文件并将其推送到主存储库。
$ cd tom
tom$ echo 'print hello' > a.py
tom$ hg add
tom$ hg ci -m "Added a.py"
tom$ hg push
pushing to /home/main
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
现在你开始拉动变化。
$ cd mine
mine$ hg pull
pulling from /home/main
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
mine$ hg up
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
现在您注意到Tom不擅长命名,因为他将文件命名为a.py
,这是最不具描述性的。您决定将其重命名为hello.py
。
mine$ hg mv a.py hello.py
mine$ hg ci -m "Rename a.py to hello.py"
与此同时,Tom运行a.py
并意识到引号(print hello
必须为print "hello"
)缺失。他解决了这个问题,推了另一个提交在你推动之前,你决定拉那个。
mine$ hg pull
pulling from /home/main
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
mine$ hg merge
merging hello.py and a.py to hello.py
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
mine$ hg ci -m "Merge commit"
现在,当您查看hello.py
时,您会发现Tom的修复程序存在并且您决定推送。
mine$ cat hello.py
print "hello"
mine$ hg push
pushing to /home/main
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 1 files
让我们回过头来看看在汤姆的这一推动之后事情将会如何发生。汤姆在当地做了一个更改,他没有推。更改是关于添加括号到打印功能。
tom$ hg pull
pulling from /home/main
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 1 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
tom$ hg merge
merging a.py and hello.py to hello.py
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
tom$ hg ci -m "Merge heads"
tom$ hg push
pushing to /home/main
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
当您拉这个时间时,您的Tom存储库将具有相同的状态,文件被重命名并且所有更改都保持不变。
mine$ hg pull
pulling from /home/main
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
(run 'hg update' to get a working copy)
$ hg up
$ cat hello.py
print("hello")
您可以看到添加括号的更改也在那里。因此,使用hg mv
在 Mercurial 中非常安全地重命名文件。