我来自Subversion背景,当我有一个分支时,我知道我正在处理的是"这些工作文件指向这个分支".
但是对于Git,我不确定我何时在NetBeans或Notepad ++中编辑文件,无论它是与主服务器还是其他分支相关联.
git在bash中没有问题,它告诉我我在做什么.
我尝试为此寻找一个特殊的git命令,但找不到一个.任何人都可以提出更短或更快的建议:
git branch | awk '/\*/ { print $2; }'
Run Code Online (Sandbox Code Playgroud) 我试图用Git钩子做一些奇特的东西,但我真的不知道怎么做(或者如果可能的话).
我需要做的是:在每次提交时,我想要获取其哈希值,然后使用此哈希值更新提交中的文件.
有任何想法吗?
我需要一些Bash脚本的帮助,它会自动将git的分支名称添加为提交消息中的哈希.
我正在尝试使过程自动化并发出git branch命令以找出我所在的分支。除了新初始化的存储库git branch什么都不返回以外,其他一切都工作正常。鉴于我对仓库没有做任何事情,甚至没有执行最初的提交,我都可以接受答案。但是,如果我运行git status它,它会告诉我我在master分支上,如下所示:
$ mkdir todelete
$ cd todelete
$ git init
Initialized empty Git repository in /u/u70021a/todelete/.git
$ git status
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
$ git branch
$
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?有没有我没有正确设置的设置?
我对Git也有很多新人,我无法向他们解释为什么显示他们所在的分支的命令什么都没显示,而status命令却显示。
我是shell脚本的新手,无法解决这个问题.如果您不熟悉,命令git branch会返回类似的内容
* develop
master
Run Code Online (Sandbox Code Playgroud)
,星号标记当前签出的分支.当我在终端中运行以下内容时:
git branch | grep "*"
Run Code Online (Sandbox Code Playgroud)
我明白了:
* develop
Run Code Online (Sandbox Code Playgroud)
正如所料.
但是,当我跑
test=$(git branch | grep "*")
Run Code Online (Sandbox Code Playgroud)
要么
test=`git branch | grep "*"`
Run Code Online (Sandbox Code Playgroud)
然后
echo $test
Run Code Online (Sandbox Code Playgroud)
,结果只是目录中的文件列表.我们如何使test ="*develop"的价值?
然后下一步(一旦我们将"*develop"变成一个名为test的变量),就是得到子串.这只是以下几点吗?
currentBranch=${test:2}
Run Code Online (Sandbox Code Playgroud)
我正在玩那个子串函数,我得到了很多"坏替换"错误,不知道为什么.
这是我目前的PS1:
export PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
Run Code Online (Sandbox Code Playgroud)
如何以不同颜色显示当前分支?
在Unix或GNU脚本环境(例如Linux发行版,Cygwin,OSX)中,确定当前结帐是否为Git标记的最佳方法是什么.如果是标签,我该如何确定标签名称?
这种技术的一个用途是自动标记一个版本(就像svnversionSubversion一样).
请参阅我关于以编程方式检测Git分支的相关问题.
这是我的情况:
我使用MAMP(PHP)在我的Mac上本地开发.我的网站受Git版本控制,我将我的开发服务器指向磁盘上版本控制下的站点根目录.
File structure:
--mysitehere/
---.git/ (.git folder is here versioning everything below)
---src/ (<-- web server root)
----index.php (need the codez here for displaying current git branch)
Run Code Online (Sandbox Code Playgroud)
任何人都有我可以使用的示例代码,它在.git文件夹中查看并查看当前分支是什么,并将其输出到index.php页面(以及RoR dev的ruby解决方案)?当我切换分支时,这将非常有用,当我刷新时,在我的浏览器中,我看到我会在页面顶部的'master'或'your-topic-branch-name-here'.
我愿意使用以PHP编程方式访问git的第三方库,或者从.git中的磁盘上的文件中获取正确"当前分支"变量的东西.
有很多相关的问题涉及涂抹/清洁过滤器 - 我花了几个小时阅读它们,并尝试各种选项,但仍然失败.我希望我能以某种方式询问我得到的答案对我有用.
具体来说,我已经阅读了大部分这些答案链接回来的页面:
这是一个详细的问题,但摘要是:
DEBUG = false文件存储在一个分支上,DEBUG = true在另一个分支中,使用涂抹/清除过滤器来管理该文件吗?如何?我在bitbucket有各种远程回购.我在Win8上使用SourceTree,将远程存储库克隆到我的笔记本电脑上.我为开发,功能,发布等创建了不同的分支(遵循一个成功的Git分支模型,无论好坏).
我有一个名为的Android java类Dbug.java,它包含一个布尔值,可以在我的代码中打开/关闭各种调试日志记录,模拟等功能.
public static final boolean DEBUG = false;
Run Code Online (Sandbox Code Playgroud)
我希望这个值false在我的"生产"(主)分支上,并且true在我的功能分支上.
在本地工作,我检查了生产分支.我创建了一个debug_flag.txt使用以下内容调用的测试文件:
// false on production branch
// true on other branches
DEBUG = false;
Run Code Online (Sandbox Code Playgroud)
我在我的本地仓库的根目录中创建了一个文件.gitattributes并添加了过滤器引用:
debug_flag.txt filter=debug_on_off
Run Code Online (Sandbox Code Playgroud)
我.git/config用过滤器定义更新了文件:
[filter "debug_on_off"]
clean = sed -e 's/DEBUG = true/DEBUG = false/'
smudge = sed -s …Run Code Online (Sandbox Code Playgroud)