0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCodeの「同期」ボタンの裏側で何が起きているのか確認してみた

Last updated at Posted at 2025-04-15

はじめに

いつまで経っても「Git初心者」から抜け出せない…そんな焦りを抱える若手(と信じたい)エンジニアです。
プロジェクトでは主にCodeCommitでIaCコードを管理していますが、実のところGitを“Subversion的”に使っています。

そこで、脱・初心者を目指し、普段VSCodeのGUIで何気なく実行する操作が、Gitコマンドでは実際に何をしているのかを確認してみました。

VSCodeで「同期」を実行すると何が起きているのか?

Gitログの確認方法

VSCodeのターミナルから「出力」タブを開き、「Git」でフィルターをかけます。
image.png

すると、ボタンを押しただけでも大量のログが Info レベルで出力されることが分かります。
ここでは、関連する Pull / Push のログのみを抜粋します。

Gitログ
2025-04-15 18:52:47.796 [info] > git pull --tags origin master [5312ms]
2025-03-28 18:52:47.796 [info] From https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/test-repo
 * branch            master     -> FETCH_HEAD
~中略~
2025-03-28 18:52:54.083 [info] > git push origin master:master [6276ms]
2025-03-28 18:52:54.084 [info] remote: Validating objects: 0%        
remote: Validating objects: 100%        
To https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/test-repo
   2e8677d..8a08c6a  master -> master

実行されているGitコマンドの内容

git pull --tags origin master

 ⇒ リモートoriginのmasterブランチをローカルに取得し、マージ

git push origin master:master

 ⇒ ローカルのmasterブランチをリモートに反映

まとめ

VSCode の「同期」ボタンは、内部的に git pull → git push を順に実行しています。
この挙動はリモートの変更を取り込みつつ、自分の変更も反映したい場面では便利ですが、競合があるとマージコミットが生成され、履歴が見づらくなる可能性があります。

より良い運用をするために:

履歴をきれいに保ちたい場合

「プル(リベース)」ボタンを使う(Gitコマンド:git pull --rebase)
リモートの変更を先に、自分の変更を後に。マージコミットを避けられる

まずは自分の変更を安全にPushしたい場合

GUIで「コミット」→「プッシュ」の順に操作
その後、リモートの変更を必要に応じてPullすることで、競合の発生タイミングを制御できる

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?