有关Git的笔记

Git备忘录

Git的基本命令

git init
Git Repositoryを作成してバージョン管理するためのローカル環境(Worktree)を作成する。実際のディレクトリまで移動してから行う。
.gitという隠しファイルが作成され、そのディレクトリ以下にgitの機能が適用されるようになる。

git add ファイル名
git add .
指定したファイルの変更内容を worktree から Staged に移動させてチェックポイントを作る。「stage環境に乗せる」という。
. を指定することでカレントディレクトリ指定の全ての変更されたファイルをステージングエリアに追加する。

git status
各ファイルの状態を確認することができる

git commit -m “コメント”
変更した内容をチェックポイントとしてGitに登録する。
オプション「-m」でコメントをつけてコミットすることができる。
stage環境に上がっている複数のaddを一つのパッケージにまとめてcommitされる。

git log
commitした過去の履歴が確認できる
ハッシュ値で一意のチェックポイントを参照することができる
誰が、いつ コミットしたか、コメント付きで確認できる


・分支操作

将每个工作任务的整个文件夹像环境A和环境B一样进行分隔。

git branch
現在のブランチ一覧を表示

git branch ブランチ名
指定した名前で、main(master)とは別の環境を作る。
「ブランチを切る」という。

git branch -c ブランチ名
“-c”は新しくブランチを作りながら移動するオプション

git switch ブランチ名
ブランチ間の移動を行う
HEADは現在いるブランチ先を示している

在进行commit操作之前,如果切换了分支,则会连同commit之前的add文件一起带走,因此需要在移动前进行commit或者stash操作以进行保存。

git branch -m ブランチ名A ブランチ名B
A から B へブランチ名の変更

git branch -D ブランチ名
ブランチの削除。Gitでは現在のブランチを削除することはできないので、mainなどに戻ってから削除する。

关于Merge

git merge ブランチA
main から分かれたbranchでの作業が完了して main に内容を反映させるときはmainブランチにいる状態で、mergeコマンドを使う。

マージ方法の種類

Fast Forward Merge
指定したブランチAの最新のコミットをHEADにして main に上書きするように取り込む方法
3-way Merge(三方向マージ)
main を元にしたbranchAとbranchBがある場合に、
先にブランチAで作業XをFast Forward Mergeして、ブランチBを作業Yをマージする場合は、上書きして作業Xを消さないように、差分のみを自動的に読み取って作業Xを残しつつ、ブランチBの内容をマージする方法。

如果在分支A和分支B上对同一个文件进行了更改,则会发生冲突状态,称为合并冲突,并且无法自动合并。在这种情况下,需要手动解决冲突,然后再次执行add -> commit操作。

实际发生冲突时的显示

> git merge aaa
Auto-merging example.md
CONFLICT (content): Merge conflict in example.md
Automatic merge failed; fix conflicts and then commit the result.

当查看文件内容时,

<<<<<< HEAD
aaa
=======
bbb
>>>>>> branchB

Difficulties arise when we encounter unfamiliar challenges.

git diff
ブランチやコミット間の差分を表示するコマンド
変更前と後のもので、ソースコードの変更箇所の確認ができる。
オプションとして、–staged や HEAD などがある

diff --git a/piyo.txt b/piyo.txt
index e69de29..f00c024 100644
--- a/piyo.txt
+++ b/piyo.txt
@@ -0,0 +1,4 @@
+piyo
+piyopiyo
+pipi
+pipipipi

“-” 表示文件名前带有字符 a 的为变更前,
“+” 表示文件名前带有字符 b 的为变更后。

其他描述示例:

git diff ブランチA..ブランチB
ブランチAB間の差分を表示させる。

git diff コミットハッシュ値..コミットハッシュ値
指定したコミット内容の差分を表示させる。

WinMerge是Windows上可以用来进行比较和合并的可视化工具。
官方网站
参考网站

收藏

将作业内容暂时存储起来的命令
将正在进行更改的项目先添加一次再进行操作。

git stash
その作業場所に作業内容を留めることができる

git stash list
stashされているファイルが一覧表示されるので、

stash@{0}: WIP on aaa: d4e4b5a aaa
stash@{1}: WIP on aaa: d4e4b5a aaa

git stash apply ‘stash@{0}’
listの記号 @{0} を指定するとそのstashが復元される

git stash pop
上のリストから復元しながらリスト一覧から削除する。applyは復元してリストには残す。

git stash drop ‘stash@{0}’
指定したものをリストから削除することができる
※作業箇所が同じファイルが複数スタッシュされていてapplyで復元する場合コンフリクトすることがある

git stash save xxx
xxx と名前を付けてstashもできる。この場合、名前を指定して apply や pop 、drop できる


时间旅行的历史操控

回溯到过去的提交记录。

git log –oneline (–graph)
実行するとコミット履歴をコミットハッシュ値の先頭7桁とコミットメッセージを一行で表示する。(グラフオプションで履歴をグラフ表示できる)

0a281da (HEAD -> testA) add a.md
b74e598 (master) add memo.md

git checkout b74e598
指定したハッシュ値のコミット(チャックポイント)まで遡ることができる。バグの調査などに使える方法

git checkout HEAD~1
チルダの後ろで指定した数字分ヘッドを戻す。

git checkout ブランチ名
最新のコミットに戻ることができる

git restore ファイル名
unstagedなadd前の変更内容を編集前まで戻す

git restore –staged ファイル名
add済みでcommit前のファイルをadd前の状態(unstaged)に移動する(編集内容自体はそのまま)

git reset
編集内容のそのままにaddをリセットする

git reset ハッシュ値/head
指定したハッシュ値のコミット(チェックポイント)まで履歴を削除して移動することができる。

git reset –hard ハッシュ値/head
ファイルごと指定したコミットまで削除するコマンド

git reflog
reset –hardで間違ってコミットログを消してしまった場合はreflogで全logを取得して、削除前のポイントを指定してあげることで戻すことができる

确认提交日志

> git log --oneline
b92957c (HEAD -> master) Merge branch 'fix-bugs'
eb11ca1 (testA) c.md
0a281da add a.md
0dc321e (fix-bugs) fix-bugs
b74e598 add memo.md

重置到最初的提交日志。

> git reset --hard b74e598
HEAD is now at b74e598 add memo.md

确认提交日志

> git log --oneline
b74e598 (HEAD -> master) add memo.md

确认Liflog

> git reflog
b74e598 (HEAD -> master) HEAD@{0}: reset: moving to b74e598
b92957c HEAD@{1}: merge fix-bugs: Merge made by the 'ort' strategy.
eb11ca1 (testA) HEAD@{2}: merge testA: Fast-forward
b74e598 (HEAD -> master) HEAD@{3}: checkout: moving from testA to master
eb11ca1 (testA) HEAD@{4}: checkout: moving from 0a281da30465c9a30517ca0c8d6376d6154e4d1d to testA
0a281da HEAD@{5}: checkout: moving from testA to HEAD~1
eb11ca1 (testA) HEAD@{6}: commit: c.md
0a281da HEAD@{7}: commit: add a.md
b74e598 (HEAD -> master) HEAD@{8}: checkout: moving from fix-bugs to testA
0dc321e (fix-bugs) HEAD@{9}: commit: fix-bugs
b74e598 (HEAD -> master) HEAD@{10}: checkout: moving from master to fix-bugs
b74e598 (HEAD -> master) HEAD@{11}: checkout: moving from testA to master
b74e598 (HEAD -> master) HEAD@{12}: reset: moving to HEAD
b74e598 (HEAD -> master) HEAD@{13}: checkout: moving from master to testA
b74e598 (HEAD -> master) HEAD@{14}: checkout: moving from master to master
b74e598 (HEAD -> master) HEAD@{15}: commit (initial): add memo.md

回滚到未重置之前的提交日志。

> git reset --hard "HEAD@{1}"
HEAD is now at b92957c Merge branch 'fix-bugs'

确认已返回到删除之前的状态。

> git log --oneline
b92957c (HEAD -> master) Merge branch 'fix-bugs'
eb11ca1 (testA) c.md
0a281da add a.md
0dc321e (fix-bugs) fix-bugs
b74e598 add memo.md

git revert #commit-hash
コミットを削除するのではなく打ち消すようなコミットを出して、指定したコミットログまで戻るコマンド。

在仅自己操作的分支且仅限于本地操作时(不影响其他人的情况下),使用”reset”;而在其他人也操作的分支上,则使用”revert”。


· Github => Github

用于在Web上共享存储库的应用程序
参考网站

git clone https:xxxxxxxxxx
指定したリポジトリがローカルにダウンロードされる

git push
ローカルのコミット後の内容をウェブ上のリポジトリに反映させる

git pull
ウェブ上のリポジトリ(他の人がpushした内容)をローカルに反映させる

git remote -v
登録済みの push先と fetch先(pull)を確認するコマンド

git remote add https:xxxxxxxxxx
該当のinit済みのディレクトリからウェブ上のリポジトリ先を登録する。このコマンドで push と fetch が同時に登録される

从远程仓库获取xxxxx分支
将在Github上创建的分支下载到本地
切换到下载的工作分支xxxxx

当在Github的官方网站上创建一个仓库时,该页面会介绍用于与CLI进行关联的Git命令。

・拉取请求
是指将推送到远程分支上的内容请求合并到主分支(主管理员会审核分支内容并批准合并)。
要将内容推送到代码仓库中,可以使用git push origin 分支名的方式,编辑标题等信息后,在Github网页上点击“Create pull request”进行创建。
当管理者点击“Merge pull request”时,内容将被应用到主分支中。

bannerAds