Home 【Git】Github常用指令操作手册🔥
Post
Cancel

【Git】Github常用指令操作手册🔥

github light img github dark img

你是否对Git命令还不够熟悉,或厌倦了到处查找相同的常用 Git 命令,这里有一个详细的常用命令清单供参考,可以涵盖日常开发中几乎全部的需求。

本文主要包括以下主题:

设置 Git 常用属性

设置全局user name 和email,若设置某个仓库则替换--global--local

1
2
$ git config --global user.name "your name"
$ git config --global user.email "your_email@xxx.com"

可以用以下命令查看当前configs

1
git config -l

初始化或克隆一个Git仓库

创建本地仓库(省略将当前目录初始化为 git 仓库)

1
$ git init <directory>

下载远程仓库

1
$ git clone <url>

修改并提交修改

将文件添加到暂存区

1
$ git add <file>

暂存所有文件

1
$ git add .

将所有暂存文件提交到 git

1
$ git commit -m "commit message"

添加对跟踪文件所做的所有更改并提交

1
$ git commit -am "commit message"

Git 远程仓库概念

main : 默认开发分支
origin : 默认上游 repo
HEAD : 指向当前活跃分支的游标
HEAD^ : HEAD时间序-1的位置
HEAD~4 : HEAD时间序-4的位置

分支功能

列出所有本地分支。添加-r标志以显示所有远程分支。-a所有分支的标志。

1
$ git branch

创建一个新分支

1
$ git branch <new-branch>

切换到分支并更新工作目录

1
$ git checkout <branch>

创建一个新分支并切换到它

1
$ git checkout -b <newbranch>

删除合并的分支

1
$ git branch -d <branch>

删除分支,无论是否合并

1
$ git branch -D <branch>

为当前提交添加标签(通常用于新版本发布)

1
$ git tag <tag-name>

合并分支
将 branch 合并a为 branch b。–no-ff为非快进合并添加选项

1
2
$ git checkout b
$ git merge a

将所有提交合并并压缩为一个新提交

1
$ git merge --squash a

变基(rebase)

将功能分支重新设置到主分支上(以合并对主分支所做的新更改)。防止不必要的合并提交到功能中,保持历史清洁

1
2
$ git checkout feature
$ git rebase main

在 rebase 到 main 之前交互式地清理分支提交

1
$ git rebase -i main

交互式地重新设置当前分支上的最后 3 次提交

1
$ git rebase -i Head~3

与撤消相关的操作

移动(和/或重命名)文件和阶段移动

1
$ git mv <existing_path> <new_path>

从工作目录和暂存区中删除文件,然后暂存删除

1
$ git rm <file>

仅从暂存区移除

1
$ git rm --cached <file>

查看以前的提交(只读)

1
$ git checkout <commit_ID>

创建一个新的提交,从指定的提交中恢复更改

1
$ git revert <commit_ID>

返回上一个提交并删除它之前的所有提交(还原更安全)。添加–hard标志以同时删除工作区更改(非常小心)

1
$ git reset <commit_ID>

查看状态和提交记录

列出尚未提交的新文件或已修改文件

1
$ git status

列出带有相应 ID 的提交历史记录

1
$ git log --oneline

显示对未暂存文件的更改。对于暂存文件的更改,添加–cached选项

1
$ git diff

显示两次提交之间的变化

1
$ git diff commit1_ID commit2_ID

临时存栈当前修改(stash)

就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。
注意:要包括未跟踪的文件,请添加-u标志。对于未跟踪和忽略的文件,添加-a标志。

1
$ git stash

同上,但添加注释。

1
$ git stash save "comment"

部分存栈。仅存储单个文件、一组文件或文件中的单个更改

1
$ git stash -p

列出所有存栈的文件

1
$ git stash list

只取出栈顶元素,但是不删除

1
$ git stash apply

重新应用索引 2 处的存储,然后将其从存储列表中删除。省略stash@{n}弹出最近的存储。

1
$ git stash pop stash@{2}

显示 stash 1 的差异摘要。传递标志-p以查看完整的差异。

1
$ git stash show stash@{1}

删除索引 1 处的存储。省略stash@{n}以删除最后创建的存储

1
$ git stash drop stash@{1}

清空栈

1
$ git stash clear

stash使用场景一:本地修改后,发现远程分支已经被改动了,此时本地也被改动了就造成了冲突,无法push或者pull,此时可以:

1
2
3
git stash save "本地缓存内容标识" //把本地的改动暂存起来;
git pull //拉取远端分支(此时本地分支会回滚到上次commit的情况,新的改动都已保存在了stash中);
git stash pop // 将栈顶改动内容重新加回本地分支,就可以继续修改了,当然,如果改好了就是add,commit,push操作。

stash使用场景二:不小心改动了不该改动的分支,如本应该在dev分支开发的内容,却在master上进行了开发,可以用git stash将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可

1
2
3
git stash save "本地缓存内容标识" // 把本地当前改动暂存起来,此时master分支就恢复到了上次拉取时的状态
git checkout test // 切换到需要改动的分支
git stash pop    // 将改动pop到自己当前的分支

同步本地和远程仓库

添加远程仓库

1
$ git remote add <alias> <url>

查看所有远程连接。添加-v标志以查看 url。

1
$ git remote

删除连接

1
$ git remote remove <alias>

重命名连接

1
$ git remote rename <old> <new>

从远程仓库中获取所有分支(不合并)

1
$ git fetch <alias>

获取特定分支

1
$ git fetch <alias> <branch>

获取当前分支的远程仓库副本,然后合并

1
$ git pull

将您的本地更改移动(变基)到对远程仓库所做的新更改的顶部(为了干净、线性的历史记录)

1
$ git pull --rebase <alias>

上传本地内容到远程仓库

1
$ git push <alias>

上传到分支(然后可以拉取请求)

1
$ git push <alias> <branch>

打印常用命令挂起来!

git cheat sheet dark git cheat sheet light


附1:图中可打印资源来源网页(Reference): dev.to
附2:详细的git教程,廖雪峰老师讲的比较详细,点击查看

This post is licensed under CC BY 4.0 by the author.

【AI】尝试用Stable Diffusion美图分享💃

【域名来历】