版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

配置与查看配置

使用 git config 配置git参数,如下:

代码块
git config --global user.name "xxxx"
git config --global user.email "<xxx@xxx.com>"
git config --global core.editor vim
git config --global core.fileMode false
git config --global --list

这里配置的是全局配置,会应用到所有git仓库和操作,这些配置存储在~/.gitconfig文件中,如下:

代码块
title~/.gitconfig
[user]
	email = xxx@xxx.com
	name = xxxx
[core]
	editor = vim
	fileMode = false

除了全局配置,还可以针对每个仓库进行具体的配置,转到对应的仓库下,使用 git config 命令即可。

生成SSH密钥

这一步在本地生成用于加密通信的密钥对,生成的公钥可以登记到Git服务器,比如GitHub,这样本地就可以对远程仓库进行操作。加密通信原理可参考 SSL加密通信原理,本地生成密钥的命令如下:

代码块
ssh-keygen -t rsa -b 4096 -C "<xxx@xxx.com>"

这里指定了加密算法是RSA,长度是4096 bits。生成的SSH密钥对位于 ~/.ssh 目录,其中的id_rsa.pub是公钥,用于提供给Git服务器,id_rsa是私钥,需妥善保管。

克隆远程仓库

代码块
git clone git@github.xxx/xxx [目标文件夹]

这里目标文件夹可选,如果没有指定则以仓库名创建文件夹。

上传与推送到远端

代码块
git add xxxx
git commit -m "your commit message"
git push origin master

暂存与恢复本地修改

代码块
git stash 
git stash pop

放弃本地修改

代码块
git checkout .
git reset --hard HEAD

清除未跟踪文件

代码块
git clean -df #强制删除本目录下未跟踪的文件和文件夹

关于远程仓库与本地仓库

远程仓库名:origin
远程仓库的各种分支:master, branch1, branch2, ...
git clone 远程仓库后,本地会有远程仓库的完整副本,所以自带程远程仓库的全部分支。并且,git在执行clone后会自动检出master分支,这可以通过git branch -a查看

上面红色的分支是远程仓库中的分支,绿色的是本地分支。本地分支可以和远程分支建立对应关系,以便于将本地分支的修改推送到某一个远程分支。查看本地分支和远程分支的对应关系使用git branch -vv命令,如下:

并不是全部的本地分支都需要和远程分支建立对应关系,例如使用命令git branch 分支名称创建的分支就没有对应的远程分支。如果要检出某个远程分支,则使用命令 git checkout -b 本地分支名称 origin/远程分支名称。当执行git push时,只能push到当前分支的远程分支上,而不能跨分支进行push。忽略参数进行git push时,默认push到当前分支的upstream branch上。

一些有用的指令

代码块
git pull <远程仓库名> <本地分支名>:<远程分支名>

拉取远程分支并与指定的本地分支合并,如果与本地的当前分支合并,则可以省略本地分支名,如果本地分支名不存在,则会创建对应的本地分支,可用于将其他分支的修改合并到当前分支。


代码块
git push --set-upstream origin <远程分支名>

将本地创建的分支提交到指定的远程分支上,并与之建立对应关系,适用于将git branch创建的未与远程分支建立对应关系的分支推送到远程仓库并创建对应的远程分支。


代码块
git remove -v
origin git@github.com:zhongluqiang/blog.git (fetch)
origin git@github.com:zhongluqiang/blog.git (push)

查看远程仓库的详细信息。


代码块
git reset HEAD xx

撤销git add添加的文件。

清理无效的远程分支

远程仓库中删除某分支后,本地的追踪分支并不会自动删除,这时,可以使用 git remote prune命令,这个命令用于删除本地仓库中失效的远程追踪分支,首先使用以下命令查看哪些分支已失效git remote prune origin --dry-run再执行 git remote prune即可清理无效的远程追踪分支。










目录