防止本地更改被推送到Git

15 浏览
0 Comments

防止本地更改被推送到Git

我克隆了一个仓库,我的仓库中的master分支正在追踪origin/master。我创建了一个work分支,并更改了一些特定于我的开发机器的配置文件,以使应用程序工作。

我的正常工作流程是切换到master分支,合并work分支中所做的更改,并将这些更改push到上游。问题是,我不希望我的特定更改被推送。当我将work分支合并到master时,这些更改也会被合并。

到目前为止,我找到的唯一解决办法是不在work中提交这些更改,但这并不是一个令人满意的解决办法。

0
0 Comments

问题原因:

在使用Git进行版本控制时,有时候我们希望某些本地更改不被推送到远程仓库,但是如果直接使用"git push"命令,所有的本地更改都会被推送到远程仓库,无法实现我们的需求。

解决方法:

一种解决方法是在将本地更改推送到远程仓库之前,将每个更改从工作分支(cherry-pick)到主分支。可以使用以下方法实现:

1. 在每个本地更改的提交消息中包含一个特殊词,比如"NOCOMMIT",用于标记本地更改。

2. 创建一个shell脚本,内容如下:

#!/bin/sh
BRANCH=`git branch | grep ^\\* | cut -d' ' -f2`
if [ $BRANCH != "master" ]; then
  echo "$0: Current branch is not master"
  exit 1
fi
git log --pretty=oneline work...master | grep -v -E '(NOCOMMIT|DEBUG):' | cut -d' ' -f1 | tac | xargs -l git cherry-pick

3. 这个脚本会将每个未标记为"NOCOMMIT"(或"DEBUG")的更改从工作分支(cherry-pick)到主分支。

通过使用这种方法,我们可以避免将本地更改直接推送到远程仓库,只将需要的更改选择性地推送到主分支。这样,我们就可以控制本地更改的推送行为,实现了防止本地更改被推送的目的。

0
0 Comments

问题:如何防止本地更改被推送到Git上?

原因:如果文件尚未被跟踪,可以将它们添加到本地仓库的.gitignore文件中,否则需要使用"git update-index --assume-unchanged"命令。

解决方法:可以使用以下步骤来解决这个问题:

1. 创建或编辑.gitignore文件,将不想被跟踪的文件或文件夹添加到该文件中。

2. 如果文件已经被跟踪,需要使用命令"git update-index --assume-unchanged"来标记这些文件为不可更改。

3. 执行以上步骤后,本地的更改将不会被推送到Git上。

更多关于.gitignore文件的信息可以参考:http://git-scm.com/docs/gitignore

0
0 Comments

在Git中,有时候我们希望阻止将本地的配置文件提交(从而也阻止推送到远程仓库),可以使用`git update-index --assume-unchanged`命令。标记了这个标志的文件将被认为永远不会更改(直到你使用`--no-assume-unchanged`重置标志)。

但是,当你切换到另一个分支时,这些配置文件会发生什么变化呢?据我所知,它们将被Git保持不变。

然而,这种方法只适用于单个仓库策略,并且不可推送。你仍然无法通过提交将这个更改传播到远程仓库。你需要使用直接访问远程仓库的控制台来提高标志的权限。

0