2017-07-19 66 views
1

我以非标准的方式使用git,我在各自来自不同分支的目录中有一个文件混合体。我用命令的这个组合来修改文件:使用git来管理同一目录中的分支组合

git fetch -f --all      # Synch revision info with repository. 
git checkout -f remotes/$REPO/$BRANCH -- $FILE   # Update file contents. 
vim $FILE            # Make changes. 
git add $FILE           # Record the changes. 
git commit -o -- $FILE         # Commit the changes. 
git push -f $REPO heads/$BRANCH   # Push to branch in repository. 

几乎我想要做什么,从不同的系统,我可以打倒任何给定文件的最新变化,而不会影响任何其他人。但是,我错过的是,没有对文件所做的更改进行编辑追踪。它看起来像是每次将分支重新根植到最新的提交,而不是链接该分支的提交。

谁能告诉我如何解决这个问题?我一直在浏览git文档,但是所有内容都是根据与我在此尝试做的事情无关的工作流程来描述的。

+0

我认识到RCS对于这种工作流来说是一个更合适的工具,其中每个文件都有自己的存储库文件。我使用的是git,因为在互联网上有可见的服务器,并且考虑到git工具的丰富性,我相信我可以完成这项工作。 我希望能够使用分支来做到这一点,而不是为每个文件创建一个git存储库。 BitBucket给出了与存储库看起来不那么漂亮的所有分支的好看法。 –

回答

0

,如果你有

... 
git merge --no-ff --no-commit remotes/$REPO/$BRANCH 
git reset -- * #unstage all changes 
git add $FILE 
git checkout . #cancel changes to all files but $FILE 
... 

更换git checkout -f remotes/$REPO/$BRANCH -- $FILE那么,什么你保持在修改来自于一些历史。

+0

(这里的虚拟评论 - 我似乎无法删除将要写入的内容) –

1

到目前为止,它看起来像改变

git checkout -f remotes/$REPO/$BRANCH -- $FILE 

git checkout -m remotes/$REPO/$BRANCH -- $FILE 

使得它的工作,我希望它的方式。你看到这个问题吗?我看到了一些不一致的地方,但它们与我在这里没有描述的操作有关。