从网站上收集一些基本常用的git命令,作为参考。在加上一些用用链接,作为学习的资料。以便在有些网络资源链接失效后,至少我这里还有个可以检索的备份。
配置
- 命令:
git config
,参数–global表示你这台机器上所有的Git仓库都会使用这个配置- git config –global user.name “Your Name”
- git config –global user.email “email@example.com”
- git config –global alias.co checkout #设置别名,如checkout别名为co
版本库
- 初始化:
git init
,分布式版本控制系统中每个人的电脑就是一个完整的版本库,初始化后,就意味着这个目录变成Git可以管理的仓库了 - 远程仓库:如果你需要和其他人交换你的修改,最好需要一个远程仓库(以GitHub为例)
- 创建SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
操作:一路回车,会在用户主目录生成.ssh目录,其中id_rsa是私钥,不能泄露,id_rsa.pub是公钥,可以对外使用,打开Account settings,SSH Keys页面,然后,点Add SSH Key,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,点Add Key 说明:你的本地仓库需要一个给远程仓库辨识的标志,id_rsa.pub就是这样一个唯一标识,当你提交时,GitHub便知道了这是谁的提交
- 添加远程仓库:
git remote add origin git@github.com:daihanqiao/daihanqiao.github.io.git
说明:如果你先在本地有了一个仓库,你要同步本地仓库和GitHub上的远程仓库,除了需要将你本地仓库的标识告诉远程仓库,还需要在本地仓库添加远程仓库的SSH URL(注意将origin后的路径设置成你GitHub上的仓库SSH URL)
- 从远程仓库克隆:
git clone git@github.com:daihanqiao/daihanqiao.github.io.git
说明:如果已有一个远程仓库,你可以将远程仓库内容拷贝到本地仓库
- 创建SSH Key:
状态查看
- 查看提交日志:
git log
,可添加--pretty=oneline
参数,只显示版本号和提交信息 - 查看命令历史:
git reflog
,会显示操作命令及对应的版本号 - 仓库当前的状态:
git status
- 查看分支:
git branch
- 查看分支合并图:
git log --graph
- 查看“储藏”的工作现场:
git stash list
- 查看远程仓库名称:
git remote
- 查看远程仓库信息:
git remote -v
(抓取和推送地址) - 查看标签信息:
git show
文件比较
- 工作区和缓存区比较:
git diff (<path>)
,不传path则比较所有文件 - 缓存区和版本库比较:
git diff --cached (<path>)
,git diff --staged (<path>)
- 工作区和版本库比较:
git diff HEAD,git diff HEAD^
,git diff commit_id
(HEAD为当前版本,HEAD^为上一版本,HEAD^^上上一个版本,HEAD~100上100个版本,commit_id为版本号,以下命令不做特殊说明,commit_id均可用HEAD,HEAD^,HEAD~n代替) - 版本库中两个不同版本的比较:
git diff commit_id1 commit_id2
文件提交
- 工作区提交到缓存区:
git add <path>
,可以是文件也可以是目录,git add .
表示add当前目录 - 缓存区提交到版本库:
git commit -m "commit msg"
- 版本库推送到远程库:
git push -u origin master
,第一次push加上-u参数,将本地master分支内容推送到远程库新的master分支,并将二者关联,以后的推送可以简化为git push
文件抓取
git pull
文件修改
- 撤销缓存区的修改:
git reset HEAD file
- 工作区回退到某一版本:
git reset --hard commit_id
- 撤销工作区修改(未提交至缓存区):
git checkout -- file
- 撤销工作区修改(已提交至缓存区):
git reset HEAD file+git checkout -- file
- 文件从版本库删除:
git rm file|git add file+git commit -m "commit msg"
- 版本库误删的文件恢复到最新版本:
git checkout -- file
分支管理
- 应用场景:开发某个功能模块,或测试定位修复某个BUG时,可以在自己的分支上开发,正常提交至版本库而不影响大家都在使用的分支,开发完成后合并到开发分支
- 创建并切换分支:
git checkout -b dev
(相当于git branch dev+git checkout dev
) - 合并分支:
git merge dev
,合并dev分支到当前分支 - 删除分支:
git branch -d dev
- 两个分支都修改了同一文件,合并时会发生冲突,需要手动解决冲突后再提交
- “储藏”工作现场:
git stash
,当正在dev分支修改文件时,需要紧急修复某个bug,可以“储藏”当前开发进度,使用后git status
查看工作区,就是干净的,可以创建bug分支修复,修复完成合并提交后,git stash apply
(恢复)+git stash drop
(删除)或git stash pop
(恢复并删除)
标签管理
- 应用场景:发布版本时,给所发布的版本加标签,以后可以方便的取出该版本
- 创建标签:
git tag <name> (commit_id) (-m "tag_msg)"
,不传commit_id时默认打到最近一次commit,-m参数可以传当前tag说明文字 - 推送标签到远程仓库:
git push origin <tagname>
(tagname),git push origin --tags
(全部tag) - 删除本地标签:
git tag -d <tagname>
- 删除远程仓库标签:
git tag -d <tagname>
+git push origin :refs/tags/<tagname>
- 切换到标签:
git checkout <tagname>
忽略特殊文件
.gitignore
:window下可以通过命令新建该文件,将需要忽略的文件写入.gitignore即可,例如:public/
忽略publick目录,.gitignore
忽略.gitignore文件,*.class
忽略所有class类型文件