[TOC]
Git 使用指南
git命令
版本控制
Git 简介
Git是目前世界上最先进的分布式版本控制系统。
如果你是小白,可以先看廖雪峰的官方教程
专用名词
- Workspace: 工作区
- Index / Stage: 暂存区
- Repository: 仓库区 ( 本地版本库 )
- Remote: 远程仓库 ( 远程仓库 / 远程版本库 )
代码库
在当前目录新建一个Git代码库
1 | git init |
新建一个目录,将其初始化为Git代码库
1 | git init [project-name] |
克隆代码库
1 | git clone [url] |
Git 配置
Git的配置文件为 .git/config
,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
显示当前Git配置
1 | git config --list |
编辑Git配置文件
1 | git config -e [--global] |
设置代码时的用户信息 建议设置此项,后面的操作会很方便
1 | git config [--global] user.name "[name]" |
1 | git config [--global] user.email "[email address]" |
增加/删除文件
操作之前先执行 git status
查看一下状态
添加文件到暂存区 建议使用这种方式进行操作
1 | git add [file1] [file2] ... |
添加所有改动到暂存区
1 | git add . |
删除工作区文件,并且将这次删除放入暂存区
1 | git rm [file1] [file2] ... |
停止追踪指定文件,但该文件会保留在工作区
1 | git rm --cached [file] |
代码提交
操作之前先执行 git status
查看一下状态
提交暂存区到仓库区
1 | git commit -m [message] |
提交暂存区的指定文件到仓库区
1 | git commit [file1] [file2] ... -m [message] |
重做上一次commit,并包括指定文件的新变化
1 | git commit --amend [file1] [file2] ... |
分支
列出所有本地分支
1 | git branch |
列出所有远程分支
1 | git branch -r |
列出所有本地分支和远程分支
1 | git branch -a |
新建一个分支,但依然停留在当前分支
1 | git branch [branch-name] |
新建一个分支,并切换到该分支
1 | git checkout -b [branch] |
切换到指定分支,并更新工作区
1 | git checkout [branch-name] |
合并指定分支到当前分支
1 | git merge [branch] |
删除本地分支
1 | git branch -d [branch-name] |
删除远程分支
1 | git push origin --delete [branch-name] |
查看信息
查看改动的文件
1 | git status |
查看当前分支的版本日志
1 | git log |
查看单行日志
1 | git log --pretty=oneline |
显示暂存区和工作区的差异
1 | git diff |
显示今天写了多少行代码
1 | git diff --shortstat "@{0 day ago}" |
标签
列出现有标签
1 | git tag |
创建一个含附注类型的标签
1 | git tag -a v0.5.0 -m 'version 0.5.0' |
查看相应标签的版本信息,同时显示打标签时的提交对象
1 | git show v0.5.0 |
push
单个 tag
1 | git push origin [tagname] |
push
所有 tag
, 如果不起作用,在 Git
控制台确认账号是否有权限推送 Tag
1 | git push origin --tags |
删除本地标签
1 | git tag -d [tagName] |
删除远程标签
1 | git push origin :refs/tags/[tagName] |
远程同步
下载远程仓库的所有变动
1 | git fetch [remote] |
显示所有远程仓库
1 | git remote -v |
拉取远程仓库的变化,并与本地分支合并
1 | git pull [remote] [branch] |
上传本地指定分支到远程仓库
1 | git push [remote] [branch] |
强行推送当前分支到远程仓库,即使有冲突 谨慎使用
1 | git push [remote] --force |
推送所有分支到远程仓库
1 | git push [remote] --all |
Git 证书问题
临时生效,退出shell后失效
1 | export GIT_SSL_NO_VERIFY=true |
永久生效
1 | echo 'export GIT_SSL_NO_VERIFY=true' >> ~/.bashrc |
win10 出现证书问题
1 | git config --global http.sslVerify false |
撤销
恢复暂存区的指定文件到工作区
1 | git checkout [file] |
恢复某个commit的指定文件到暂存区和工作区
1 | git checkout [commit] [file] |
恢复暂存区的所有文件到工作区
1 | git checkout . |
重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
1 | git reset [file] |
重置暂存区与工作区,与上一次commit保持一致
1 | git reset --hard |
回滚到指定版本
1 | git reset --hard [commitId] |
重建版本库
1 | rm -rf .git |
添加远程仓库
1 | cd existing_folder |
如何创建公钥
首先启动一个Git Bash窗口(非Windows用户直接打开终端)
执行:
cd ~/.ssh
如果返回“… No such file or directory”,说明没有生成过SSH Key,直接进入第4步。否则进入第3步备份!
备份:
mkdir key_backup
mv id_isa* key_backup生成新的Key:(引号内的内容替换为你自己的邮箱)
ssh-keygen -t rsa -C “your_email@youremail.com“
输出显示:
>Generating public/private rsa key pair. Enter file in which to save the key
(/Users/your_user_directory/.ssh/id_rsa):<press enter>
直接回车,不要修改默认路劲。
>Enter passphrase (empty for no passphrase):<enter a passphrase>
Enter same passphrase again:<enter passphrase again>
设置一个密码短语,在每次远程操作之前会要求输入密码短语!闲麻烦可以直接回车,不设置。
成功:
Your identification has been saved in /Users/your_user_directory/.ssh/id_rsa.
Your public key has been saved in /Users/your_user_directory/.ssh/id_rsa.pub.
The key fingerprint is:
… …提交公钥:
6.1 找到.ssh文件夹,用文本编辑器打开“id_rsa.pub”文件,复制内容到剪贴板。
6.2 打开 https://github.com/settings/ssh ,点击 Add SSH Key 按钮,粘贴进去保存即可。
git设置用户名密码
设置 git 用户名/邮箱
1 | git config --global user.name [username] |
但是这个仅仅是设置用户名密码,如果你的Git 源每次操作需要你输入用户名/密码验证,你依然需要每次设置,那么该如何办呢?
git 保存用户名密码
这里主要是配置一个 config 项
有两个方法,基本上原理都是一样,都是修改 .git/config 文件
1.使用如下命令,修改 config 文件即可保存
1 | echo "[credential]" >> .git/config |
2.直接修改 .git/config 文件
在 Linux/mac 下可以直接使用 vim 工具修改 config 文件
1 | ubuntu@VM-7-212-ubuntu:~/kernel-code/kernel-netfilter-sample-code$ vim .git/config |
这样就可以保存用户名密码,不用每次都输入了!
git config
查看配置
使用 git config --list
查看已设配置
1 | feiqianyousadeMacBook-Pro:xt_GTPU yousa$ git config --list |
git设置代理
1 | # set socks proxy |
操作规范
提交到仓库 description
需要有意义命名
1 | git commit -m [description] |
分支请及时合并清理
1 | git merge [branch] |
请谨慎提交大文件,例如保存切割的图片文件夹
1 | git commit -m ["description"] |
推送dev
分支操作,本地运行项目正常再推送代码
1 | git push [remote] [branch] |
友情提示: 目前只是现在工作中用到的命令整理,如果没有您需要的,请自行 google
文档持续更新中,欢迎大家拍砖 …