Git 操作指南

git常用命令笔记
基础配置
配置远程仓库的ssh key
在本机创建ssh key
# 运行后按enter使用默认值
ssh-keygen -t rsa -C "自己的邮箱地址"
获取ssh key的公钥
cat ~/.ssh/id_rsa.pub
复制上面命令显示的公钥,到远程仓库的ssh key里。请完整拷贝从ssh-到你的用户名和主机名为止的内容。
.gitignore
项目根目录新建.gitignore文件,并把不想用git跟踪的文件写进去。如果你在.gitignore里写某个文件之前已经commit并push上去了,可以参考下面删除信息那一节的内容。
查看信息
查看历史commit信息
查看历史commit注释和commit_id
git log
查看某个文件历史commit信息
查看指定文件所有历史commit信息
git log -p -- <file-path>
每次提交中具体修改了哪些文件
git log --name-status -- <file-path>
每次提交中简要信息
git log --oneline -- <file-path>
查看当前的状态
git status
查看文件修改
# 查看这个文件的修改记录,默认显示整个文件
git blame <filename>
# 可以通过参数 -L <start>,<end>来检查需要修改的某几行
git blame <filename> -L 10,50 //查看第10~50行的修改记录
查看两个版本之间改动细节
git diff <commit-id-1> <commit-id-2>
查看两个版本之间改动文件列表名,不展示细节
git diff --name-status <commit-id-1> <commit-id-2>
Git 对比两个版本间某一个文件的变化
# 先列出两个版本间发生更改的文件列表
git diff <commit-id-1> <commit-id-2> --stat --name-only
# 查看指定文件在两个版本间发生的变更
git diff <commit-id-1> <commit-id-2> -- <filename>
# 更直观地查看
git difftool <commit-id-1> <commit-id-2> -- <filename>
查看可引用的历史版本记录
git log命令是显示当前的HEAD和它的祖先,递归是沿着当前指针的父亲,父亲的父亲,……,这样的原则。
使用git reflog命令,可查看到所有历史版本信息。由于查看所有历史版本信息的目的,大多是为了进行版本回退或恢复操作所使用,从中找到所需的commit索引,所以该命令被命名为reflog,即:引用日志。
git reflog
添加信息
最简单最常用的命令
# 添加某个文件的更改
git add filepath
# 添加所有更改,注意是否配置好.gitignore,否则会把原本不想用git管理的文件也添加进去
git add --all
git commit -m '这里写commit注释'
git commit -am '添加所有更改并提交注释'
git push # 如果设置了远程仓库的话
删除信息
当文件未使用git add缓存时
使用git checkout —filepath,注意中间有—,否则就成了切换分支了。
git checkout --filepath
如果要放弃所有文件的修改,可以使用下面的命令。此命令用来放弃所有没加入缓存区的修改(内容修改与整个文件删除),需要注意的是,不会删除刚新建的文件,因为刚新建的文件还没有加入到git的管理系统中,所以对git是未知的。
git checkout .
已使用git add缓存代码,未使用git commit
使用git reset HEAD filepath
git reset HEAD filepath
如果要放弃所有文件的修改,就不要后面的文件路径了。此命令用来清除git对于文件修改的缓存,相当于撤销了git add 命令的工作。使用本命令后,本地的修改不会消失,而是回到了未使用git add 缓存代码时的状态。如果要继续删除修改,则使用git checkout —filepath的方法。
git reset HEAD
已经用git commit 提交了代码
回退到上一次commit的状态
git reset --hard HEAD^
回退到任意版本,使用git log查看提交历史和对应的commit_id
git reset --hard <commit-id>
在使用.gitignore文件后如何删除远程仓库中以前上传的此类文件而保留本地文件
在使用git和github的时候,如果之前没有写.gitignore文件,上传了一些没必要的文件,后来在添加了.gitignore文件后,想要删除远程仓库里的这些文件同时保留本地的文件。这时不能直接用”git rm directory”,因为这样会删除本地仓库的文件。
可以这样做
git rm -r --cached directory
git commit -m 'update'
git push
分支
查看现有分支
git branch
新建分支
git branch <new-branch>
新建分支并切换到该分支
# 默认的git checkout -b命令会从当前所在的HEAD指针所指的分支来派生出新建的分支
git checkout -b <new-branch>
# 从指定的existing-branch分支派生创建了一个名为new-branch的新分支。
git checkout -b <new-branch> <existing-branch>
切换分支
git checkout <branchname>
切换远程分支
# 为了能够checkout出某一个远程仓库的分支,我们需要先fetch那个仓库的内容。
git fetch --all
# 像checkout本地分支一样checkout出这个远程分支(需要用较新版本的git)
git checkout <remotebranch>
新建本地分支,切换分支并且拉取远程分支的最新commit
git checkout -b <branchname> <origin/branchname>
新建本地分支并重置为远程分支的最新commit
git checkout -b <branchname>
git reset --hard origin/<branchname>
删除本地分支
git branch -d <branchname>
强制删除本地未合并分支
git branch -D <branchname>
删除远程分支
git push origin --delete <branchname>
推送本地分支到远程分支
git push origin <branchname>
// 推送到远程仓库的不同分支
git push origin <local_branch_name>:<remote_branch_name>
文件比对
查看本地文件修改
git diff
比对本地分支与远程分支
git fetch origin master
git diff origin/master master
贮藏/储藏
贮藏更改
我们可以通过以下命令贮藏更改的文件,暂时保存工作目录中的修改,并将其存储在一个临时位置,以便稍后再次恢复。
git stash [save "贮藏描述"] [-u]
<font style="color:rgb(25, 27, 31);background-color:rgb(248, 248, 250);">save "贮藏描述"</font>(可选):指定贮藏文件的描述。<font style="color:rgb(25, 27, 31);background-color:rgb(248, 248, 250);">-u</font>(可选):指定贮藏包括未跟踪文件的更改。

查看贮藏列表
,这个命令将显示所有贮藏的详细信息,包括每个贮藏的唯一标识符、贮藏时的提交信息以及可能提供的描述。。
git stash list

删除所有贮藏
我们可以通过以下命令删除所有贮藏,执行此命令将清除所有当前存储的贮藏,因此请确保您不再需要这些贮藏中的任何更改。
git stash clear

删除指定贮藏
我们可以通过以下命令删除指定的贮藏,通过提供<font style="color:rgb(25, 27, 31);background-color:rgb(248, 248, 250);"><stash标识符></font>,您可以精确地指定要删除的贮藏,而不会影响其他贮藏的状态。
git stash drop <stash标识符>
<font style="color:rgb(25, 27, 31);background-color:rgb(248, 248, 250);"><stash标识符></font>(必须):指定需要删除的贮藏标识符。

应用贮藏
我们可以通过以下命令应用贮藏,该命令可以帮助你恢复之前贮藏的更改,而不会删除贮藏记录。
git stash apply <stash标识符>
<font style="color:rgb(25, 27, 31);background-color:rgb(248, 248, 250);"><stash标识符></font>(可选):指定需要应用的贮藏标识符,如果不指定则应用最近一次贮藏。

应用后删除贮藏
我们可以通过以下命令应用后删除贮藏,该命令可以帮助你恢复之前贮藏的更改,并在应用后立即删除贮藏记录。
git stash pop <stash标识符>
<font style="color:rgb(25, 27, 31);background-color:rgb(248, 248, 250);"><stash标识符></font>(可选):指定需要应用的贮藏标识符,如果不指定则应用最近一次贮藏。

参考资料
On This Page
- 基础配置
- 配置远程仓库的ssh key
- .gitignore
- 查看信息
- 查看历史commit信息
- 查看某个文件历史commit信息
- 查看当前的状态
- 查看文件修改
- 查看两个版本之间改动细节
- 查看两个版本之间改动文件列表名,不展示细节
- Git 对比两个版本间某一个文件的变化
- 查看可引用的历史版本记录
- 添加信息
- 删除信息
- 当文件未使用git add缓存时
- 已使用git add缓存代码,未使用git commit
- 已经用git commit 提交了代码
- 在使用.gitignore文件后如何删除远程仓库中以前上传的此类文件而保留本地文件
- 分支
- 查看现有分支
- 新建分支
- 新建分支并切换到该分支
- 切换分支
- 切换远程分支
- 新建本地分支,切换分支并且拉取远程分支的最新commit
- 新建本地分支并重置为远程分支的最新commit
- 删除本地分支
- 强制删除本地未合并分支
- 删除远程分支
- 推送本地分支到远程分支
- 文件比对
- 查看本地文件修改
- 贮藏/储藏
- 贮藏更改
- 查看贮藏列表
- 删除所有贮藏
- 删除指定贮藏
- 应用贮藏
- 应用后删除贮藏
- 参考资料