我不想要一个可视化合并工具,我也不希望vi冲突文件并手动选择HEAD(我的)和导入的更改(他们的)之间.大多数时候我要么想要他们所有的改变,要么全都想要改变.通常这是因为我的改变使它成为了上流,并通过拉动回到我身边,但可能会在不同的地方稍作修改.
是否有一个命令行工具可以摆脱冲突标记并根据我的选择选择所有这些?或者是一组git命令,我可以将自己命名为每个命令.
# accept mine
alias am="some_sequence;of;commands"
alias at="some_other_sequence;of;commands"
Run Code Online (Sandbox Code Playgroud)
这样做很烦人.对于'接受我的',我尝试过:
randy@sabotage ~/linus $ git merge test-branch
Auto-merging Makefile
CONFLICT (content): Merge conflict in Makefile
Automatic merge failed; fix conflicts and then commit the result.
randy@sabotage ~/linus $ git checkout Makefile
error: path 'Makefile' is unmerged
andy@sabotage ~/linus $ git reset --hard HEAD Makefile
fatal: Cannot do hard reset with paths.
Run Code Online (Sandbox Code Playgroud)
我怎么能摆脱这些变化标记?
我可以:
git reset HEAD Makefile; rm Makefile; git checkout Makefile
Run Code Online (Sandbox Code Playgroud)
但这似乎相当圆润,必须有更好的方法.在这一点上,我不确定git是否认为合并发生了,所以我认为这甚至不一定有效.
走另一条路,做"接受他们的"同样是凌乱的.我能弄清楚的唯一方法是:
git show test-branch:Makefile > Makefile; git add …
Run Code Online (Sandbox Code Playgroud) 我从中看到了
如何做我想要的大部分:
sed -n '0,/.*\(something\).*/s//\1/p'
Run Code Online (Sandbox Code Playgroud)
这找到了东西的第一个匹配并提取它(当然我的真实例子更复杂).我知道sed有一个'quit'命令会让它提前停止,但我不知道如何将'q'与上面的行组合以获得我想要的行为.
我已经尝试用{p; q;}替换'p',就像我在一些例子中看到的那样,但这显然无效.
我知道你可以使用'caller'来获取bash函数调用的回溯:
#! /bin/bash
Backtrace () {
echo "Backtrace is:"
i=0
while caller $i
do
i=$((i+1))
done
}
myFunc () {
Backtrace
}
myFunc
Run Code Online (Sandbox Code Playgroud)
打印:
Backtrace is:
11 myFunc ./test.sh
13 main ./test.sh
Run Code Online (Sandbox Code Playgroud)
我的问题是,假设我有一个脚本使用'set -e'来终止任何未经检查的失败.是否可以获取脚本失败的行号(及其调用者)
我天真地尝试过:陷阱'Backtrace'EXIT,但这给了我'1 main ./test.sh'而不是失败命令的行号
我的技术职称是技术人员,和大多数人一样,我设计/编写代码以谋生.当有人问我做什么工作时,我永远无法决定回答什么?
软件开发师?软件工程师?[内核]程序员?电脑科学家?
这些都似乎有各种不好的内涵.我想我最喜欢软件工程师,但遗憾的是这个术语已经被那些没有实际编码的人所采用.我错误地参加了"软件工程"课程,并意识到我绝对不希望与主修这门课程的人联系.
可能这太主观了,所以请随意使用社区维基或其他任何东西,但我认为这是一个有效的问题,我想听听别人的决定和他们的推理.