Git备忘单
主要术语
-
- 作業ツリー/ワークツリー/ワーキングツリー:ローカルリポジトリ内でgit管理対象としたファイル群。ユーザの作業場所
-
- インデックス/ステージングエリア:git addすると作業ツリーの内容がインデックスに保存される。インデックスに保存された内容がコミット対象になる。
-
- ローカルリポジトリ:自分のコンピュータ上のリポジトリ
-
- リモートリポジトリ:githubなど、リモートのリポジトリ。originっていう名前を付ける事が多いと思う。
- HEAD:直近(最新)のコミット
git命令
准备
在Git中设置全局用户名和电子邮件地址:
git config –global user.name “用户名”
git config –global user.email “电子邮件地址”
设置别名
git config –global alias.ls “log –stat”
git config –global alias.lp “log -p”
git config –global alias.lg “log –graph –pretty=oneline”
git config –global alias.cf ‘commit -m “fixup! c”‘
git config –global alias.conflict “diff –name-only –diff-filter=U”
git config –global alias.s “status”
git config –global alias.d “diff”
git config –global alias.aa “add -A”
将编辑消息的编辑器设置为emacs。
git config --global core.editor emacs
自动合并
在全局配置中,设定 git rebase.autosquash 为 true。
为每个仓库设置用户名和电子邮件地址。
cd 該当のリポジトリ
git config user.name "ユーザ名"
git config user.email "メアド"
cd 到指定的仓库
初始化 Git 仓库
将现有的远程仓库复制到本地仓库(适用于GitHub情况)。
git clone git@github.com:ユーザ名/リポジトリ名.git
如果要将 GitHub 的远程仓库作为 origin 添加到远程仓库中,则执行添加远程仓库的操作。
git remote add origin git@github.com:ユーザ名/リポジトリ名.git
分支操作
创建一个分支并切换到该分支
git checkout -b 分支名称
将分支推送到origin
git push -u origin branch_name
git 分支列表 -a,包括本地和远程分支。
删除已合并的分支
git branch -d 分支名称
删除未合并的分支
git branch -D 分支名称
不同
展示作业树和索引之间的差异。
git diff
显示索引和仓库之间的差异
git diff –cached
显示工作树与HEAD之间的差异。
git diff HEAD 文件名
使用Git命令比较两个分支上的同一文件:
git diff 分支1 分支2 文件名。
显示具有分支之间差异的文件
git diff –stat -name–status 分支1 分支2
显示在两个分支之间存在差异的文件和内容
git diff -name–status 分支1 分支2
仅显示已更改的文件名
git diff –name-only
标签操作 ɡ zuò)
标签列表
git tag
创建标签
git tag -a 标签名 -m ‘说明’
使用指定的提交为标签打上标记
git tag -a 标签名 -m ‘说明’ 提交的ID
使用指定的标签进行检出
git checkout references/tags/标签名称
使用指定的标签从指定分支中检出
git checkout -b 分支名称 refs/tags/标签名称
删除标签
git tag -d 标签名
显示标签的详细信息。
git show 标签名
将标签推送到origin库
git push origin 标签名
记录
显示最近的2个日志
git log -2
显示最近的两个日志和补丁
显示最近3个有更改的文件名及其日志
git log –name-status -3
展示图形
git log –graph –pretty=oneline
不显示合并提交的Git日志–no-merges
显示包含”index”的提交日志。
git log –grep index
显示包含”index”字符的行被添加或删除的提交记录。
git log -S”index”
显示包含字符串”index”的行被添加或删除的提交的差异
git log -S”index” -p
显示特定文件的提交历史
git log -p 文件
查看git日志,出现文件名及其修改状态,不包括合并操作。
git --no-pager log --name-status --no-merges
舞台布置
把修正和新增的文件添加到暂存区。
撤销未提交的暂存文件的修改
使用git reset –hard命令,恢复暂存区未提交的指定文件的更改,并将工作区状态恢复到修改之前的状态。
撤销暂存区中所有未提交的文件更改
回滚最近的提交(文件保持不变)
git reset HEAD^
还未整理
查看过去操作的列表
git reflog
将git重置为HEAD@{1}所处的状态。
回到特定的工作树更改
使用 git checkout 命令来回到特定的文件更改。
撤销工作树中所有文件的更改
删除没有被跟踪的文件
删除未被跟踪的文件,包括在.gitignore中的文件。
git clean -xfd
撤销最近的提交并将文件恢复到原始状态
git reset –hard HEAD^
创建一个撤销之前提交的提交。
使用 git revert 提交ID。
从远程仓库删除已删除的本地分支
git 拉取 –修剪
显示已有更改的文件
git状态
暂存当前的工作目录
git 隐藏
显示当前隐藏的内容
git stash list
获取当前被暂存的内容
显示指定文件的提交历史
使用 git blame 文件名
列出配置設定
git config –list
为PR而创建空提交并推送
git commit –allow-empty -m “wip”
git push origin 分支
自动检测分支的源头并进行合并压缩
※如果是从master创建的分支
git rebase -i –keep-empty –autosquash $(git show-branch –merge-base master HEAD)
修正前一次提交的评论
使用git commit –amend命令
擠壓完之後再推送
git用“–force-with-lease”指令進行推送
显示特定提交时点的文件
git cat-file -p 哈希值:文件路径
从master分支上拉取改动
git拉取master分支上的改动
冲突的文件列表
使用命令:git diff –name-only –diff-filter=U
暂时更改后决定不进行更改。使用 git update-index –assume-unchanged 的目标文件。
我想解除这种状态。
在冲突时,将远程仓库的所有内容应用到本地仓库。
git checkout –theirs .
在冲突发生时,将本地仓库的所有内容应用。
git checkout –ours .