当有一个collison期间git merge,我打开一个名为Meld的合并工具.它打开三个文件LOCAL,BASE和REMOTE.正如我读过LOCAL是我的本地分支,BASE是共同的祖先,REMOTE是要合并的分支.
现在问我的问题:最终会使用哪个版本的文件?是REMOTE吗?如果是这样,我可以根据需要编辑它,不管BASE分支中的内容是什么?
默认情况下,Windows Git将全局.gitconfig放入 c:\documents and settings\user\
如何更改该位置以便.gitconfig存储在c:\my_configuration_files\?
它可以完成吗?
具体来说,我维护了我的dotfiles的git存储库.我最近开始研究一台新机器,并在同一台机器上克隆了我的存储库.
现在,我希望对我的dotfiles进行一些更改,这些更改仅适用于此系统.我希望在我的存储库中忽略这些更改.
我应该继续跟踪和提交其他更改.
例如,在我的.gitconfig中,我有一个设置为:
[push]
default = simple
Run Code Online (Sandbox Code Playgroud)
现在,在我的新机器上,git的版本使用得很旧.它仍然不支持simplepush 的设置.所以,我想改变这一点,但仅限于本地.
但是,如果我对.gitconfig进行任何其他更改,我想跟踪这些.无论如何我能做到这一点?
编辑:
我知道git update-index --assume-unchanged.它的问题是git将不再跟踪我的文件,直到我反转它.然后,它将跟踪所有变化.
我希望忽略某些变化并跟踪其余变化.
做的时候:
>git status
Run Code Online (Sandbox Code Playgroud)
它显示了"未跟踪文件"下的.pyc文件的大列表.我不希望它显示这些,因为它增加了噪音.
换句话说,我如何一直为所有项目制作git ignore .pyc文件?
编辑
我不是想要一种方法将我被忽略的文件传播给其他人,我的意思是"对于所有项目",这意味着我不想将每个新项目配置为忽略.pyc文件.
UPDATE
我应该补充说我正在使用Windows,我的git是msysgit
用户希望git在所有情况下忽略的模式(例如,由用户选择的编辑器生成的备份或临时文件)通常会进入用户的〜/ .gitconfig中的core.excludesfile指定的文件中.
.gitconfig是文件还是文件夹?我的主目录中没有这样的东西(C:\users\<myusername>\)
UPDATE2
谢谢大家的回复,
我使用以下方法解决了这些问题
>git config --global core.excludesfile c:\git\ignore_files.txt
Run Code Online (Sandbox Code Playgroud)
并将*.pyc放入 c:\git\ignore_files.txt
我知道可以设置覆盖用户级配置的每个repo配置(即/path/to/my/repo/.gitconfig覆盖~/.gitconfig).是否可以设置git配置覆盖给定文件夹的所有子文件夹的用户级设置?即,我有
|--topLevelFolder1
|--\
| ---.gitconfig_override
|--\
| ---childFolder1
| \---[...]
|--\
| ---childFolder2
| \---[...]
Run Code Online (Sandbox Code Playgroud)
我希望定义的设置.gitconfig_override适用于childFolder1和childFolder2.
我的动机如下:我有一台工作笔记本电脑,我也在业余时间用于个人项目.我的所有工作代码都嵌套在一个文件夹中.当我推动工作git repos时,我需要用我的工作角色 - 工作登录而不是名字,以及工作电子邮件.当我推送到我自己的个人(github)回购时,我想用我的真实姓名和个人电子邮件这样做.
我想到的其他可能的解决方案(和问题):
我检查了这个问题,它似乎只包含单个回购的解决方案,而不是多个.希望有人会看到错过那个问题的这个问题!
是否可以在传输到远程存储库之前通过'git push'自动加密文件?并在'git pull'时自动解码它们.
即,如果我有一些远程服务器与git存储库共享访问,我不希望我们的项目没有权限被盗...也许在推和拉之前有一些特殊的git-hooks?
场景:我正在尝试在git下获取我的unix点文件.我必须在(至少)cygwin环境和一些标准的Linux发行版(ubuntu和opensuse)之间工作,并且我有特定于cygwin的文件/代码行.由于我不想检查无用的文件或者不得不处理我的dotfiles中的大量案例,我正在为我的每个环境创建分支.但是我做的大部分编辑对所有环境都是通用的,所以几乎每次我提交时我都需要将该更改传播到我的所有分支.
所以基本上我有几个几乎相同的分支,除了一些提交,并且我需要在所有分支中进行大多数提交.
问题:如果有的话,推荐的git工作流程是什么?或者,对于我的场景,是否有更好的设置(不使用多个分支?)?
[我尝试过采摘樱桃,但这涉及到相当多的工作,更不用说这里的所有重复提交以及保持我的分支同步的噩梦.]
我想将所有的dotfiles存储在GitHub上,包括.gitconfig,它要求我在.gitconfig中隐藏GitHub令牌.
为此,我有一个".gitconfig-hidden-token"文件,这是我打算编辑的文件并放在git下隐藏令牌:
...
[github]
user = giuliop
token = --hidden--
...
Run Code Online (Sandbox Code Playgroud)
如果我修改".gitconfig-hidden-token"文件来创建".gitconfig"文件,我需要启动一个shell脚本:
cp .gitconfig .gitconfig.backup
sed 's/--hidden--/123456789/' .gitconfig-hidden-token > .gitconfig
Run Code Online (Sandbox Code Playgroud)
缺点是每次修改文件时都需要手动启动脚本.有没有更好的,完全自动化的方法来做到这一点?
如果你在Windows上设置这样的东西:
git config --global core.autocrlf false
Run Code Online (Sandbox Code Playgroud)
这个全局设置写在哪里?
我正在尝试使用include.path此处描述的配置,但我似乎无法在Windows上找到正确的路径语法.
我目前的.gitconfig:
[include]
path = 'D:\Scott\Shared\config\common.gitconfig'
Run Code Online (Sandbox Code Playgroud)
但是git抱怨道: fatal: bad config file line 2 in C:\Users\Scott/.gitconfig
什么是逃避Windows路径的正确方法?注意:我使用的是Powershell的git而不是git bash.
我有一个 .gitignore 文件,如下所示:
.*
!.gitignore
Run Code Online (Sandbox Code Playgroud)
我想对我的.git/config文件进行版本控制,以便在我执行git pull.git/config 文件时自动更新。
我怎样才能做到这一点?
我试过类似的东西:
.*
!.gitignore
!.git/config
Run Code Online (Sandbox Code Playgroud)
但这没有用。我知道如果我创建了一个链接 ( ln -s .git/config configurations/git/config),我可以对其进行版本控制,但我想要一种更好的方法来自动更新原始链接。
我正在考虑创建一个指向它的硬链接 ( ln .git/config configurations/git/config configuration/git),但这似乎不是最好的方法。有没有办法避免这种情况?对硬链接进行版本控制时,Git 会正常工作吗?
编辑:解释为什么要这样做
这样做的主要动机是我想对我的用户的主文件夹进行版本控制。我将使用此版本控制来帮助我进行某种部署。我想保持所有克隆同步。如果我处理不好,就会出现冲突,我会处理好这件事。也许我也会对另一个受保护的 git 文件进行版本控制。
我正在尝试将我的.bashrc .gitconfig和其他有用的配置放到github上(因为我想分享一些有价值的代码片段),但问题是我不想分享某些"关于我的有价值的信息" ,
那么有没有办法告诉git忽略文件的某些模式或行(例如.gitignore?)
注意:我想知道如何进行我的bashrc共享(我将保留bashrc公共事物并将私有移动到我不会分享的bashprofile)但我有点想知道如何共享我的gitconfig(有一些非常好的别名)
谢谢