Git总结【备忘录】
初次见面,我是Taku3。
最近在学习关于Git的内容,所以我会将学到的东西记录下来并进行输出。
Git 是一种版本控制系统。
将编写的源代码按版本整理的工具称之为。
有各种各样的工具,如Git、GitHub等,但可以使用Git(本地工具)来管理的代码上传到GitHub(Web服务)。使用这些工具的好处是,
-
- ソースコードのバージョン管理
- 開発チーム内(またはチーム外)での共有
以下列举了一些例子可供参考。
关于在Git和GitHub上的版本控制
在Git和GitHub中具有以下特点。
-
- 保存快照
- 引用之前的版本
关于第一点,首先关于数据的保存方法,我认为有两种选择:一种是“完整保存数据”,另一种是“保存数据内发生的变化”。在Git中,采用了前一种方法,也就是完整保存(作为快照),而不会计算与上次上传时的差异,所以比较快(如果没记错的话)。
关于2,Git将上传(即提交)的数据与上次提交的数据关联为父提交。
下面的图片是一个例子,随着从版本1到版本2和版本3的更新,文件A被更新为文件A’,文件C被更新为文件C’和文件C”。
如果没有使用像Git这样的工具,而是使用共享文件夹等进行版本管理,可能会在同一文件夹中混合多个版本,甚至可能没有保留过去的版本。因此,在Git或GitHub上进行管理是有很大意义的。
基本指令 (jī zhǐ lì)
上台演出并提交到本地仓库
git add <ファイル名>(. とすると今のディレクトリの全ファイル)
↓
git commit -m "<message>"
在当前工作树上进行的更改文件需要首先添加到暂存区,以准备进行提交和反映。这就是git add的作用。
之后,执行git commit即可将更改完全反映到本地仓库。
通过添加-a选项并提交(commit),可以省略git add命令。
git commit -a -m "<メッセージ>"
将代码推送到GitHub
git remote add <リモート名> <URL>
↓
git push <上記のリモート名> <ブランチ名>
$ git remote add origin https://github.com/<GitHubアカウント名>/<リポジトリ名>.git
$ git push -u origin master
分支是为了多人并行开发而存在的功能。它是指在父子关系中连接的提交上指向哪个提交文件的指针。
通过在团队中的几个人从一个提交文件A中分支出来进行修改,可以在保持提交文件A稳定运行的同时,各自的提交文件上进行新功能的开发和改修。(如果修改得当,可以将其与原提交文件A合并以进行更新)
另外,通过在git push命令后加上-u选项,可以从下次开始只需用git push命令就能将文件推送到同一个仓库中。
确认文件状态
git status
可以确认文件是否已更改、是否已进行git add等操作。
每次在确认更改情况的同时进行git add和commit。
取消更改工作区
git checkout -- <ファイルorディレクトリ名>
由于git checkout <分支名>(切换分支)和混合在一起,最好加上–。
取消在舞台上新增的更改
git reset HEAD <ファイル名orディレクトリ名>
在本地版本库的最新信息(HEAD)中覆盖(或还原)已暂存的文件。
重新执行上一个提交
git commit --amend
在提交文件后,假设需要进行进一步的修正。在提交后,在工作区进行修正,然后使用git add将其添加到暂存区,接着使用git commit –amend命令可以覆盖(1)处的提交结果。这样可以避免生成多余的提交文件。
如果已经将文件版本3提交到远程仓库,请不要这样做。
假设某个人在提交了文件版本3之后,A先生在版本3的基础上进行了修改。如果在A进行修改期间,B先生进行了pull并进行了修改,则A和B之间的提交文件修订历史将产生矛盾。
确认差异
git diff
查看工作目录和暂存区之间的差异确认。
– 添加`–staged`选项可查看暂存区和本地仓库之间的差异。
删除文件
git rm <ファイル名>
または
git rm -r <ディレクトリ名>
基本上类似于Linux命令。
通常情况下,它会在工作区、暂存区和本地仓库中被删除,但如果加上–cached参数,则只会删除本地仓库。
移动文件
git mv
设定别名
git config --global alias.<エイリアス名> <コマンド名>
加上global选项后,配置会适用于整个电脑系统。
请您核实日志。
git log
git log --oneline
git log -n <num>
など
远程信息显示
git remote
git remote -v(URL表示)
git remote show <リモート名>
git remote show会显示比前两个更详细的信息。
从GitHub获取信息(获取/抓取)。
git fetch <リモート名>
git merge origin/main
通过git fetch命令,可以将origin/main等本地分支保存下来。
通过执行git merge命令,可以将其反映到工作目录中。
虽然有点偏离话题,但merge操作有快进合并和自动合并两种方式。
快速转发是指切换到下一个提交文件的分支。
自动合并是将多个提交文件合并成一个新的提交文件,然后更新该分支指向它。
从GitHub上获取信息(拉取)
git pull <リモート名> <ローカルのブランチ名>
无论pull命令与哪个具有所需数据的分支相关,它都会保存在当前所在的分支中,所以请注意。
(例如:在main分支上pull feature分支,数据将保存在main分支中。)
更改远程名称
git remote rename <旧リモート名> <新リモート名>
删除远程名称
git remote rm <リモート名>
切换分支
git checkout <ブランチ名>
创建新的分支
git branch <ブランチ名>
因为仅有这一步不足以进行切换,所以请在创建后使用git checkout。
或者可以使用以下命令来创建并切换分支。
git checkout -b <作成するブランチ名>
显示分支列表
git branch (-a)
在中国, 只需要一个选项,进行以下内容的中文本地化:
-带有a的全权表示
确认分支所指的内容
git log --oneline --decorate
目前的分支名更改
git branch -m <新しいブランチ名>
删除分支
git branch -d <ブランチ名>
如果存在未合并到main分支的文件等,则不会被删除。要强制删除,请将-d更改为-D并执行。
重新基礎
git rebase <ブランチ名>
Rebase是用于整理提交记录的功能。
此外,作为重新基础的其他用途之一,还可以一次修复多个提交。
git rebase -i HEAD~3
当进行rebase操作时,编辑器会显示与最近的三个commit相关的以下信息。
pick kei43bd commit 1
pick 83ugj32 commit 2
pick 3i2jed4 commit 3
将pick这部分改成edit
git commit --amend
可以重新开始或进行修改。
如果您在上述中进行了多次编辑,
git rebase --continue
你将能够输入下一个提交的更改命令。
标签的显示
git tag
创建带注释的标签
git tag -a "<タグ名>" -m "<メッセージ>"
创建轻量版标签
git tag "<タグ名>"
对先前的提交进行标记
git tag "<タグ名>" <コミット名>
标签数据显示
git show "<タグ名>"
请注意,由于标签需要另外进行推送,请确保进行相应操作。
git push <リモート名> <タグ名>
躲避一次
git stash (save)
save 可省略。
退避确认
git stash list
这句话的中文翻译可以是:从退避到恢复
git stash apply
要想还原舞台的状况,
git stash apply --index
特定的疏散复原
git stash apply stash@{x}
您可以在x中找到stash的顺序,并通过git stash list进行确认。
最新的逃离删除
git stash drop
删除特定的撤离活动
git stash drop stash@{x}
撤退并全面删除
git stash clear
因为虽然我已经学到了一些知识,但是尚未真正掌握,所以只有通过实践才能稳固。而且我会不断学习新知识,并进行更新。