首先,对于这种令人困惑的讨厌的标题感到抱歉,我真的无法找到一种更好的方式来描述这一点(希望发表任何修改建议)。
我同步了一个github回购。并根据我的需要修改了一些文件和代码。但是,如果我想重新同步并将我的树更新为最新提交。
我的更改会被覆盖吗? 或者repo只是忽略修改过的文件并转移到其他文件? 或者是否会有修补过程(我不认为这可能是因为自动修补问题的可能性很高)?
我的猜测是它会跳过已修改的文件。我可能需要手动从repo获取新的提交。但是,如何确定哪些已修改的文件具有新提交?我只是想确定它,然后可能手动提取并手动修改它们。
考虑名为" abc"的文件。和" def"我修改过。 回购所有者用许多新提交更新了他的回购。 我运行repo sync并将所有文件同步到较新的提交,除了我修改的那些。现在,我如何确定repo所有者更新的文件是否包括" abc"和/或" def"也是(假设我自己修改了很多文件,所以我不能手动检查每个文件是否有新的提交)?
我不想看到我修改过的文件或带有新提交的文件的完整列表,我只是想看看我修改过的文件是否有新的提交。
有没有这样的可行方式?
我知道如何使用`git status,
确定更改的文件但我如何检查这些已更改的文件是否有任何新提交。
答案 0 :(得分:1)
当运行repo sync
时,Repo将重新绑定任何未发布的主题分支(即您未使用repo upload
上传到Gerrit的分支。)
或者是否会有修补过程(我不认为这可能是因为自动修补问题的可能性非常高)?
Git会尝试,但如果存在无法自行解决的冲突,您必须介入并提供帮助。
考虑我修改过的名为“abc”和“def”的文件。回购所有者用许多新提交更新了他的回购。我运行了repo sync,它将所有文件同步到较新的提交,除了我修改过的那些。
没有。 Repo rebase你的分支(以及更新/合并所有文件)或者它没有做任何事情,这取决于您需要从上游进行rebase或merge。 Git永远不会进行部分更新。
我不想看到我修改过的文件或带有新提交的文件的完整列表,我只是想看看我修改过的文件是否有新的提交。
我认为你问的是错误的问题,但是可以肯定,你可以列出修改特定文件集的提交或比较两个提交,只显示特定文件集中的差异。 git diff
和git log
都接受一个或多个要限制输出的文件的路径。要查找文件,您可以使用git ls-files -mo
获取工作区中的脏文件和未跟踪文件,git diff-tree --name-only -r HEAD~..HEAD
以获取最近提交修改的文件,等等。
将所有内容放在一起,以下命令从上游获取最新状态,并显示新提交(git log HEAD..origin/master
),这些提交触及您自上次更新以来在当前分支上修改的文件上游(git diff-tree --name-only -r origin/master..HEAD
):
git fetch
git log HEAD..origin/master -- $(git diff-tree --name-only -r origin/master..HEAD)
假设类似Unix的shell。在Windows上,事情看起来可能不同。
答案 1 :(得分:0)
您可以使用git hook来跟踪文件列表
在post-receive
钩子搜索给定文件并执行您需要做的事情。
另一种选择是使用跟随标志手动跟踪它
git log --follow <path>
,它将打印出每次提交中对给定文件所做更改的列表