2020-12-25
gitでまだpushしていないファイルを検出する
重要なやつ 👇
project/scripts/get-root-branch.sh
#!/bin/bash
# もし現在のgitブランチ(ここでfooとします。)がpushされていれば、{remote_name}/fooを返します。
# そうでなければこのブランチのルートとなるブランチ(分岐元)を取得し、それを返します。
#
# このプログラムはまず、リモート名を取得します。
# remoteが複数登録されている場合の適切な処理は未定義です。
# 現在は1番目のリモートを使用するようになっています。
# Returns tags and branches names of the root revision of current.
function root_names () {
local remote=$1 rev char_not_delim names
# Parser items
rev='\w+'
char_not_delim='[^\)]'
names="($char_not_delim+)" # 'names' means tags and branches names
git log --decorate --all --oneline | grep "$remote" | head -1 | sed -r "s/$rev \(($names)\) .*/\1/"
}
# NOTE: Please use nameref feature `local -n result=$1` instead of this global variable if you can use that feature.
names_array=()
# Put given names of glob $2 into $names_array1.
function make_array_of_names() {
local names=$1 ifs xs i
# Convert names what are split by ',' to an array.
ifs=$IFS
IFS=,
# shellcheck disable=SC2206
xs=($names)
IFS=$ifs
# Trim heading and trailing spaces
for (( i=0; i < ${#xs[@]}; i++ )) ; do
x=$(echo "${xs[$i]}" | sed 's/^ *\| *$//')
names_array+=("$x")
done
}
if [[ $(git remote | wc -l) -gt 1 ]] ; then
echo "Specifying for a remote is not implemented yet. A head remote name will be used instead." > /dev/stderr
fi
remote=$(git remote | head -1)
names=$(root_names "$remote")
make_array_of_names "$names"
for (( i=0; i < ${#names_array[@]}; i++ )) ; do
name=${names_array[$i]}
if echo "$name" | grep "^$remote/" > /dev/null ; then
echo "$name"
exit 0
fi
done
exit 1
…
2018-07-31
gitの「Could not execute editor」が出たときは$GIT_EDITORを設定する
結
$ GIT_EDITOR=nvim git rebase --interact
起承結
$ git rebase --interact
/usr/local/Cellar/git/2.16.1/libexec/git-core/git-rebase--interactive: line 267: /Users/aiya000/poi/.git/rebase-merge/git-rebase-todo: Permission denied
Could not execute editor
って言われてrebase -i
できない。
なんかちょっと前もこれで困ってrm -rf git-repo && git clone https://foo.bar/git-repo.git
とかした気がする。
皆さんけっこうgit config core.editor /path/to/your_editor
のようにyour_editor…
2016-12-09
gitでcommitを1つに統合すべき場合 及び 1つのcommitを分解すべき場合 - プロ生アドベントカレンダー2016 - 9日目
なんか勢いでブログ記事を書いたところ、丁度今日のプロ生アドベントカレンダーが空いてたので登録する。
…
2016-07-19
今日のgit-tips (簡単で便利なrebaseによるcommit編集)
今日のgit-tips (簡単で便利なrebaseによるcommit編集)
今日は未pushのいくつかのcommitの内容をgit rebase
で編集する方法を紹介します。
…