
git
他の人とコラボレーションするときによく使用します。共有リポジトリで一緒に作業するときは、HEAD
最後のコミットと現在のマスターブランチ(または現在)の間で他の人が変更を確認できるようにしたいです。
これまで、私は次のワークフローを使用しています。
git fetch # download everything
git merge # since I'm a trusting person ;)
git logadog # my git-alias for `git log --all --decorate --oneline --graph`
# manually look into how many commits were performed since my last commit
git diff HEAD~3 # if 3 commits were performed since then
git diff c0ffee
または(最後のコミット)を使用することもできますc0ffee
。
これが機能している間、私はもっと簡単なことを好みますgit diff COMPARE_HEAD_WITH_THE_LAST_COMMIT_FROM_MY_USER
が、どのように機能するのかわかりません。
私も良いvim
プラグインを使用しています。fugitive
作成:Tim Pope :Gdiffsplit HEAD~THE_STUFF_FROM_ABOVE
- 構文を使用してこれを行うことができれば良いでしょう。
答え1
これは問題を解決する「gitのような」方法ではありません。通常、最後のコミットを指す分岐を維持します。
ただし、この質問に答えるには、次のヘルパー機能を試してください。これは非常に効率的ではなく、いくつかの低レベルのコマンドを使用する必要があるかもしれません。
my_last_commit(){
local ME="$(git config user.name)"
git log --format='%h%n' --author="$ME" -1
}
その後、これを実行できますgit diff $(my_last_commit)..HEAD
(デフォルトであるため、必要に応じてHEADを省略できます)。git logadog $(my_last_commit)^..
答え2
あまりにも簡単に信じる人にならないでください。 ;-)
本当に申し訳ありません。もっと真剣に言えば、合併の直前はあなたの仕事と同僚の仕事の間に何が変わったのかを確認するのに最適な時間です。マージする前に実行すると、マージ時に変更される内容が表示されます。
git fetch
git diff ...@{upstream}
実際、私のワークフローには「whatsnew」エイリアスがありますgit log ..@{upstream}
。
最初にマージしてから問題を発生させるには、一時ブランチをランドマークにすることができます。
git fetch
git branch -c my_last_commit # or use -C to overwrite if it already exists
git merge
git diff my_last_commit...