我是Git的全新手,不确定发生了什么.我的伙伴和我正在一起开展一个项目.
我从远程服务器获取所有文件git fetch,所以我现在有一大堆文件.
我编辑其中一些,他编辑了其中一些,等等.
我每天都在做取件,他开始告诉我他已经修改了一些文件并更新了它们,但这些改变并没有出现在我的最后.
我在Windows中打开Git GUI,在左侧有两个面板.
一个人说Unstaged Changes- 我这意味着这些是我改变的东西,除非我add这些,否则不会更新到本地存储库.
另一个人说Staged Changes (Will Commit).在这个窗口里面,当我点击一些文件时,我确实看到了我的朋友所做的更新,这些更新没有显示在我正在编辑的文件中,我想我也看到了我所做的更改.
我git add .在我的目录中添加了所有文件
我按下commitGit GUI中的按钮,现在两个侧面板中没有任何文件,no Unstaged Changes和no Staged Changes (Will Commit).
我检查了所有文件,看起来我和我朋友的结尾的变化都已合并到一个文件中.
我仍然不能100%确定发生了什么.
问题1:我做对了吗?
问题2:究竟做了merge什么?
因为我不断合并git merge origin/master并且合并似乎并不是一件可恶的事情.我认为commit只是将当前版本的记录写入一些哈希码,但似乎commit实际上正在按照我的想法merge做 - 它正在合并变化.
抱歉这个冗长的问题,只是很困惑.
我经常使用heroku,在项目结束时,我有几个小的提交来修复一些意想不到的错误.这导致了10个小的diff提交,我希望将它们重新组合成一个.问题是,历史已被推动.我如何协调这些事情?
在分支机构工作时,我会有一些我正在改变的文件.我的一位同事告诉我,他推动了一项改变,我应该立即解决这个问题.如果我不做出改变,git就不会让我拉.即使我修改过的所有文件都没有更新.
我想知道为什么会这样,如果可能的话,有办法避免这种情况吗?
我有一个由超过1个人共享的存储库所以我经常看到提交历史记录中有很多合并提交.我想摆脱它们,使我的提交历史看起来更清洁.
为避免这些合并提交,我们应该遵循什么做法?它可行吗?
我读到了使用--ff-onlyswitch进行合并.这个开关可以帮助我吗?
我知道git会在repo变大时变慢。
但为什么?
由于git将文件存储为单独的目录和.git下的文件,所以我无法找出操作变慢的原因。让我们看一下提交操作。最近,我克隆了Webkit存储库,并从master分支,然后将2k文件提交到该分支。但是我觉得它比我的小仓库要慢。
因为我还没有阅读git源代码,所以我猜想提交操作会损害将文件存储到磁盘,插入提交日志,更新索引以及将HEAD更新为文件的sha值。
写入速度很快。
插入速度很快。(我想,如果插入操作是将日志追加到文件中)
,更新索引很快。
HEAD更新快。
为何慢呢?谁能向我说明?
谢谢。
一些答案很有帮助,但不是很令人信服,提供一些代码片段来支持您将非常有用。
我正在使用SourceTree,发生的事情是我点击了"Commit",然后添加了所有已更改的文件,但在提交之前我想删除其中一个文件以便稍后提交.
我右键单击了我的文件,并提供了以下选项:

我真的对这些选择感到困惑,我点击了"丢弃",现在这个文件中完成的所有工作都丢失了!
恐慌模式!如何恢复此文件中的更改?
谢谢!
据我所知git checkout,在我们提交所有先前的更改之前,我们不允许结帐分支,但我的更改已被丢弃.
我执行了git status命令,它向我显示了修改过的文件列表.然后我执行了git checkout .(点)命令,但它没有提示我先提交我以前的更改并丢弃所有更改并检查我本地计算机上的master分支.
任何人都可以指导我为什么git checkout .这样做?以及如何在本地计算机上移回我之前的代码(使用修改和未提交的更改)?为什么要放弃我的更改?
我正在尝试使用git bash将文件添加到我的github帐户.我有"提交",我已输入所需的消息.但是现在,我被困了(MINGW64).如果我尝试:q,:退出,:退出!,没有任何反应.如果我尝试CTRL + C,我可以输入:退出!但在这种情况下,我的提交被中止.
你有什么主意吗?
这是我输入的git命令
$ git add -u -n
add 'proj1/Foo.scala'
$ git add .
$ git add .
$ git commit -m "message"
On branch feature/branch
Your branch is up-to-date with 'origin/feature/branch'.
Changes not staged for commit:
modified: ../proj1/Foo.scala
Run Code Online (Sandbox Code Playgroud)
那为什么我得到了Changes not staged for commit?你可以看到我做了git add .两次
如果我领先并做到了
git add ../proj1/Foo.scala
Run Code Online (Sandbox Code Playgroud)
然后确实提交它的工作原理.为什么我应该专门做每个文件,而不是只做git add .
我已经上传了两个文件file1.js,file2.js但我只想提交file2.js.我怎样才能做到这一点?
git ×10
git-commit ×10
git-bash ×1
git-checkout ×1
git-gc ×1
git-merge ×1
git-pull ×1
git-rebase ×1
git-revert ×1
heroku ×1
merge ×1
mingw-w64 ×1