LoginSignup
35
32

More than 5 years have passed since last update.

Git覚書き

Posted at

リモートからブランチをとってくる (pullしたいって思った時)

pullじゃなくてfetch使ってからmergeしようね。

% git fetch origin <REMOTE_BRANCH_NAME>
% git checkout -b <LOCAL_BRANCH_NAME>
% git merge FETCH_HEAD

現バージョンをリリースした段階でバージョンのtagを切る

おもむろに、ローカルにあるtag一覧を取得。

$ git tag 

リモートから最新のtagをとってくる。

$ git pull --tags 

現バージョンのtagつけてやる

$ git tag -a <VERSION_NUM> 

メッセージを記入して、リモートにプッシュする。

$ git push --tags

以前のバージョンのtagからブランチを切る

おもむろに、tagを指定してcheckout

$ git checkout <VERSION_NUM> 

ブランチに属さなくなるので、そこから新たにブランチを切る

$ git checkout -b <BRANCH_NAME>

tagを間違えてつけてしまった場合のtagの切り直し方

ローカルのtagを削除

$ git tag -d <WRONG_VERSION_NUM>

リモートのtagを空のtag(存在しないtag)で上書きするように削除。

$ git push origin :refs/tags/<WRONG_VERSION_NUM>

正しいバージョンのtagつけてやる

$ git tag -a <CORRECT_VERSION_NUM> 

メッセージを記入して、リモートにプッシュする。

$ git push --tags

バージョンアップ後のタグの更新で[rejected]

追加したタグを更新しようとしたら

$ git push --tags

怒られた。

error: failed to push some refs to <REMOTE_REPO_NAME>
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and merge the remote changes
hint: (e.g. 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

一旦、リモートからタグをとってきて、

$ git pull --tags

もう一度pushをこころみる

$ git push --tags
Everything up-to-date

うまくいったみたい。

git pull --tags するときに下記のメッセージが出た。

Fetching tags only, you probably meant:
  git fetch --tags

fetchだけでもいいのかも。

mergeを途中でやめる

$ git merge --abort
git status

merge途中のファイルが残っていたら、

git clean -f

submoduleの変更などを破棄する

いじった覚えがないけどローカルで変更させてしまったみたい。

$ git status
# On branch develop
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   app/Submodules/<SUBMODULE_DIR> (modified content)
#
no changes added to commit (use "git add" and/or "git commit -a")

普通に、

$ git checkout app/Submodules/<SUBMODULE_DIR> 

としてもうまく破棄されなかったので、

$ cd app/Submodules/<SUBMODULE_DIR>

一旦ディレクトリまで移動してから
このディレクトリ以下をcheckoutする。

$ git checkout .

これで確認してみると、

$ git status
# Not currently on any branch.
nothing to commit (working directory clean)

すっきり。

35
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
32