我正在使用git进行版本控制的共享项目.当我的伙伴在Unix上时,我在Windows上.
我的搭档用一些文件命名<file1>.txt.当我试图拉他们不接受为这些文件<和>适用于Windows无效字符.这很好,我不需要触摸文件.但是,它们会被添加到我的提交中作为已删除.所以,如果我推,那么我将删除这些我不想做的文件.
我无法使用,git reset --hard因为它为每个"已删除"文件找到了无效路径.
有没有办法从我的提交中排除这些文件?我已经尝试添加<file1>到我的.git/info/exclude但是没有用.
git pull在本地副本中运行已创建的一些未跟踪文件.文件在远程上移动,但拉不会删除我的工作目录中的文件.我花了不少时间研究这个,但找不到任何类似的案例.这是预期的行为吗,我错过了什么,或两者兼而有之?
我做了一个补丁并将其发送给开源项目的开发人员,但后来我想删除我的本地提交和git pull"官方"补丁,一旦它在遥控器上提交.所以我做了一堆"东西"重置为以前的官方HEAD."东西"的意思之类的东西git checkout -- <file>,git reset HEAD^和我不记得,因为我是新来的git,我想研究最佳做法的其他指令.
无论如何,在我最终"解除"我的提交并做了一次之后git pull,我得到了66次提交,包括我的补丁,一切看起来都很棒.但随后git status显示两个文件未被跟踪.我做了一个gitk <untracked_file1>,我看到大约20次提交,文件被移动到另一个目录.该文件现在存在于新位置,但它不会删除旧文件,而是显示为未跟踪.
我尝试按照这些说明进行硬重置,但文件仍未跟踪.我可以做一个git clean -f清除它们,但我想知道为什么文件不会被自动删除.
我不小心从源目录中删除了一些文件.我需要重新获取整个git存储库(git pull不起作用,因为自上次提交后这些文件没有更改).我的存储库是最新的.我如何获得整个存储库?如果它覆盖那里的东西就没关系
在Ionic branch拥有所有Ionic相关的文件/文件夹.front-end这里创建的是为移动设备和网络设备提供服务.但是,此分支中的Web设备代码不会托管在任何地方.
在Node branch已经server相关的文件/文件夹.此分支将上载以托管应用程序端点,并且需要提供公共前端文件夹.前端文件夹来自Ionic分支.
我已经读过这篇关于将提交拆分为单独提交的帖子,所以我们可以忽略其中一个提交.这并没有解决问题,因为我有很多文件和文件夹不应该合并,并且很难在每次合并中将它们全部分开.我只需front-end/public/www要将文件夹合并到Node分支中.
我也看过关于这个,这个,这个对堆栈和更大量的有关问题,并在互联网上的文章,但没有一个人能解决我的问题.
附录
分支节点示例:
¬ node_modules
¬ routes
¬ www
¬ files/etc
Run Code Online (Sandbox Code Playgroud)
离子节点示例:
¬ node_modules //this should not merge into Node
¬ hooks //this should not merge into Node
¬ resources //this should not merge into Node
¬ www //MERGE THIS
¬ files/etc //some …Run Code Online (Sandbox Code Playgroud) 我想git pull在master分支中做,我看到这个消息带有很长的文件列表
The following untracked working tree files would be overwritten by merge:
Run Code Online (Sandbox Code Playgroud)
我真的不在乎这些文件是否被覆盖,因为我需要获取最新的远程表格.我已经调查过了,我做不到git fetch,git add *而且git reset HARD
当我这样做时git status,它会显示仅有未跟踪文件的列表.我不想提交这些文件
我在本地保存了几个开源项目的存储库以供参考.我不经常更新它们,结果是我最终出现了合并冲突.说到Linux内核,这可能是数百个文件.
我如何告诉git从上游撤出并盲目接受所有变更?
有时当我执行 git pull 时,我开始收到此错误:错误:未跟踪的工作树文件 [某些文件] 将被合并覆盖。
我通常想覆盖本地更改,所以我这样做:
git reset --hard HEAD
git clean -f -d
git pull
Run Code Online (Sandbox Code Playgroud)
这是在此处指示的:如何强制“git pull”覆盖本地文件?
但是,这种方法似乎会擦除所有未跟踪的文件。那么有没有办法强制 git 覆盖本地更改但保留所有未跟踪的文件?
老实说,我是一个 Git 新手,所以如果我让事情变得过于复杂,请原谅我。
1.) 我的工作目录中有文件 A,有 10 行。同样的文件也在远程仓库中,有 8 行
2.) 当我从远程存储库中提取文件 A 时,git 说“您的分支已与 origin/remote-branch 保持同步”。
第 2 步并没有消除我在本地所做的更改,但 Git 也不会抱怨我在本地所做的其他更改。对我来说,看起来我从远程获得了所有更新。假设几天后,我对另一个文件 B(来自同一分支)进行了更改,并尝试使用“ git add ”提交它们。文件 A 中的另外 3 行现在也被无意中推送到了远程。当然 git status 会告诉我有 2 个修改,但是如果我忘记了 2 天前对文件 A 的更改,并且如果我认为文件 B 是我刚才所做的唯一更改并执行了“ git add ”那我就有麻烦了。
我的问题确实是,git checkout -- fileA是确保我将远程 fileA 与我的 fileA 完全匹配的唯一方法吗?我还看到 git pull -f 但这是有风险的。当我的工作目录中有一些额外的更改时,最安全的方法是什么让我知道 git pull 仍然完成其工作?难道 git 不应该阻止我拉扯吗?奇怪的是,有时它确实会说“您的本地更改可能会因拉取而丢失”,但当文件相当干净并且 git pull 不会影响我的任何本地更改时,它不会一直这样做。我只是想看看如何避免这样的错误,即无意中将某些内容推送到我刚刚在分支中试验文件的存储库。我希望 pull 要么清理它,要么总是出错,但事实似乎并非如此。
感谢您的帮助!
我在存储库中进行了一些更改,并注册了一个提交(在本地)。然后我执行了这个:
$ git pull origin master
Run Code Online (Sandbox Code Playgroud)
我的本地提交与被拉的合并。现在我很后悔。我想获取远程分支主服务器上的最新版本,并获取本地提交(已合并)的信息。
我可以通过以下命令更改工作目录:
// the last commit on the remove branch master
$ git checkout 84acc42 .
Run Code Online (Sandbox Code Playgroud)
但是,如果我对其进行一些更改并将其推送,我想以前的更改仍然存在并且也将作为提交推送。因为该提交存在。
注意,$ git reset --hard这不会删除任何内容。我执行了该操作,但仍然看到了不需要的更改。
知道如何获取远程存储库(分支母版)上的最新版本并删除其他所有内容吗?我可以通过删除本地工作目录并从存储库中再次克隆来实现。但是我想知道是否还有另一种方法。
“ Git Pull Force ”、“ git重置分支到原点”或者换句话说,拉出远程分支来覆盖本地分支,似乎是被广泛搜索的功能,尽管本地很少有下降,但人们对它的兴趣却越来越大。
\n对于不断壮大的团队和不断增加的开发人员数量来说,这绝对有意义。
\n\n目前,最短的工作解决方案非常冗长并且需要分支知识
\ngit reset --hard origin/<branch_name>\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n
不幸的是,因为输入以下内容要快得多
\ngit pull\nRun Code Online (Sandbox Code Playgroud)\n然而,这也带来了其自身的挑战。历史分歧、合并冲突等等……
\n我们确实有这样的简写
\ngit push origin HEAD -u --force\nRun Code Online (Sandbox Code Playgroud)\n它将本地分支推<branch_name>送到原点,覆盖同名的远程分支<branch_name>并将其设置为自己的上游分支。
然而,没有这样的--force/ reset\xc2\xa0 替代git pull。
将此功能添加到git 的最佳方式是什么?
\n