标签: git

如何正确强制推送Git?

我已经设置了一个远程非裸"主"仓库并将其克隆到我的电脑上.我做了一些本地更改,更新了我的本地存储库,并将更改推送回我的远程仓库.到目前为止,情况还不错.

现在,我不得不改变远程仓库中的东西.然后我在当地的回购中改变了一些东西.我意识到不需要改变远程仓库.所以我尝试git push从我的本地仓库到我的远程仓库,但我收到的错误如下:

为防止您丢失历史记录,拒绝非快进更新在再次推送之前合并远程更改.有关git push --help详细信息,请参阅"关于快进的注意事项"部分.

我以为那可能是一个

git push --force
Run Code Online (Sandbox Code Playgroud)

将强制我的本地副本将更改推送到远程副本并使其相同.它确实强制更新,但当我回到远程仓库并进行提交时,我注意到文件包含过时的更改(主远程仓库以前有过).

正如我在评论中提到的其中一个答案:

[我]尝试强制,但当回到主服务器保存更改时,我得到过时的暂存.因此,当我提交存储库时不一样.当我再次尝试使用git push时,我得到了同样的错误.

我该如何解决这个问题?

git push git-push git-non-bare-repository

1206
推荐指数
11
解决办法
118万
查看次数

如何撤消"git commit --amend"而不是"git commit"

我不小心修改了我以前的提交.提交应该是独立的,以保留我对特定文件所做更改的历史记录.

有没有办法撤消最后一次提交?如果我这样做git reset --hard HEAD^,第一次提交也会撤消.

(我还没有推到任何远程目录)

git commit undo git-amend

1198
推荐指数
10
解决办法
28万
查看次数

如何获得最近提交的Git分支列表?

我想得到一个Git存储库中所有分支的列表,顶部有"最新鲜"的分支,其中"最新鲜"的分支是最近提交的分支(因此,更可能是一个分支)我想要注意).

有没有办法可以使用Git(a)通过最新提交对分支列表进行排序,或者(b)以某种机器可读格式获取分支列表以及每个分支的最后提交日期?

最糟糕的情况是,我总是可以运行git branch以获取所有分支的列表,解析其输出,然后git log -n 1 branchname --format=format:%ci为每个分支获取每个分支的提交日期.但这将在Windows机器上运行,其中启动一个新进程相对昂贵,因此如果有很多分支,每个分支启动Git可执行文件可能会变慢.有没有办法用一个命令完成所有这些?

git version-control branch

1197
推荐指数
22
解决办法
35万
查看次数

macOS Mojave Update后,Git无法正常工作(xcrun:错误:无效的活动开发者路径(/ Library/Developer/CommandLineTools)

昨晚(2018年11月)我更新到macOS Mojave,

今天早上我在MacBook pro的Command line中导航到我的工作代码库,

在repo中键入"git status"并收到错误:

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Run Code Online (Sandbox Code Playgroud)

git macos terminal xcode command-line

1190
推荐指数
27
解决办法
35万
查看次数

Git:如何在项目提交历史中找到已删除的文件?

曾几何时,我的项目中有一个文件,我现在希望能够获得.

问题是:我不知道何时删除它以及它在哪条路径上.

如何存在此文件的提交?

git

1183
推荐指数
9
解决办法
29万
查看次数

如何查看仅一个用户提交的git日志?

使用时git log,如何按用户进行过滤,以便仅查看该用户的提交?

git version-control git-log

1178
推荐指数
11
解决办法
46万
查看次数

如何从Git的暂存区域中删除单个文件,但不将其从索引中删除或撤消对文件本身的更改?

情况:我有一个Git存储库,其中包含已存在于索引中的文件.我对几个文件进行了更改,打开Git并使用"git add"将这些文件添加到我的临时区域.

问题:如何从暂存区域中删除其中一个文件但不将其从索引中删除或撤消对文件本身的更改?

git version-control staging

1177
推荐指数
10
解决办法
59万
查看次数

忽略git项目中的任何"bin"目录

我有这样的目录结构:

.git/
.gitignore
main/
  ...
tools/
  ...
...
Run Code Online (Sandbox Code Playgroud)

在主要工具和工具以及任何其他目录中,可以有一个"bin"目录,我想忽略它(我也想忽略它下面的所有内容).我在.gitignore中尝试了这些模式中的每一种,但它们都不起作用:

/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
Run Code Online (Sandbox Code Playgroud)

谁能帮我吗?如果我这样做,第一个模式(我认为应该工作的模式)工作得很好:

/main/**/bin/**/*
Run Code Online (Sandbox Code Playgroud)

但我不希望每个顶级目录都有一个条目,我不想每次添加新目录时都要修改.gitignore.

这是在Windows上使用最新的msysgit.

编辑:还有一件事,有文件和目录在他们的名字中有子字符串'bin',我不希望那些被忽略:)

git gitignore

1172
推荐指数
12
解决办法
86万
查看次数

如何撤消'git reset'?

什么是最简单的撤消方法

git reset HEAD~
Run Code Online (Sandbox Code Playgroud)

命令?目前,我能想到的唯一方法是从远程仓库进行"git clone http:// ...".

git

1172
推荐指数
5
解决办法
38万
查看次数

如何从Git存储库中删除.DS_Store文件?

如何.DS_Store从Git存储库中删除那些烦人的Mac OS X 文件?

git macos gitignore

1167
推荐指数
21
解决办法
54万
查看次数