Git命令小记
来源:互联网 发布:地图软件有哪些 编辑:程序博客网 时间:2024/05/18 03:17
Git 进行代码版本管理时,有两种操作方式:图形界面GUI和 命令行Command
图形界面GUI:有平台限制,目前仅支持Windows系统,Linux(Unix)都是命令行模式,并且图形界面每次提交好像Display显示文件数有限制(如:最大显示20000个文件)
命令行Command:没有平台限制,Windows、Linux(Unix、Mac OS X)下都支持,通过 gid add dir/files 添加文件,没有文件数限制
下面详细介绍 Git 管理和操作的两个方式:
1、图形界面GUI
首先,下载Windows下的Git图形界面工具:msysgit 或 官方下载
接着,安装 msysgit ,如下载最新的 Git-1.7.10-preview20120409.exe 后安装,操作方式有Git GUI 和 Git Bash两种,默认为 Gui Bash Only
然后,安装完后,在开始 —> 所有程序 —> Git 中,有 Git Bash 和 Git Gui 两个图标,点击启动 Git Gui 界面如下:
可以创建新的版本库(本地)、克隆已有版本库(远程)、打开已有版本库(本地或远程)
例如:克隆已有的版本库(远程),如 克隆下载 linux-kernel-source 步骤:
a、 点击“克隆已有版本库”,依次输入远程版本库(xxx)和本地目录(xxx),如下图
2、命令行Command
a、Git 远程下载
git clone git://git.kernel.org/pub/scm/ project_path
例如:下载 linux-kernel-source,Git 命令如下
git clone https://code.google.com/p/linux-kernel-source/ /E/Fruit/code_google/linux-kernel-tmp
例如:下载 Linux 内核 git.kernel.org
git clone git://git.kernel.org/pub/scm/ /home/homer/Linux-kernel-3.3.4
b、 Git 本地上传
添加新文件:git add dir/files
提交文件:git commit
上传文件:git push
由于自己平常git用的不多不熟练,最近写个小东西并把代码托管到github,才发现之前看的《Pro Git》和《看日记学git》完全打水漂。重翻《Pro Git》,把一些重要的常见的命令记下来,备忘,具体的请man。
符号约定:
[]:可选 <>:必选
Git 配置
git config [--global] user.name <name> 设置用户名
git config [--global] user.email <email> 设置邮箱
git config [--global] core.editor <editor> 设置编辑器
git config [--global] github.user <user> 设置github帐号名
git config [--global] github.token <token> 设置github的token
--global是对当前系统用户的全局设置,在~/.gitconfig中。对系统所有用户进行配置,/etc/gitconfig。对当前项目,.git/config
Git 创建库
git clone <url> ssh/http(s)/git三种协议,ssh和https可推送
git init 初始化Git仓库
Git 日常操作
git add <file> 将文件加入index file
git rm [--cached] 删除,加--cached表示仅从index file中删除文件,即放弃跟踪
git mv <src> <dest> 移动/更名
git diff --cached/--staged 当前索引与上次提交(有哪些需要commit)
git diff 当前索引与工作目录(有哪些需要add)
git diff HEAD[^] 工作目录与上次提交(当前目录与上次提交有何改变)
git commit [-a] -m <msg> 提交
git commit --amend [-m <msg>] 修复上次提交
git reset HEAD <file> 同--mixed,default option
git reset --mixed HEAD 撤销 commit 和index file,只保留 working tree 的信息
git reset --hard HEAD[^] 将 working tree 和 index file 都撤销到以前状态
git reset --soft HEAD[^] 只撤销 commit,而保留 working tree 和 index file 的信息
回复到某个状态。以git reset --soft HEAD为例,commit回退到
HEAD(相当于无变化),若是HEAD^,则commit回退到HEAD^
git gc 用垃圾回收机制清除由于 reset 而造成的垃圾代码
git status 显示当前工作目录状态
git log [-p] 显示提交历史(many useful options to be learned)
git branch [branch] 显示/新建分支
git branch -d/-D 删除分支(d表示“在分支合并后删除分支”,D表示无论如何都删除分支)
git show-branch
git checkout <branch> 切换分支(分支未commit无法切换)
git merge <branch> 合并分支
git merge == git pull .
git show <branch | commit | tag | etc> 显示对应对象的信息
git grep <rep> [object] (在指定对象(历史记录)中)搜索
git cat-file 查看数据
git cat-file <-t | -s | -e | -p | (type)> <object> type can be one of: blob, tree, commit, tag
git ls-files [--stage] show information about files in the index and the working tree(实际是查看索引文件)
git watchchanged <since>..<until> 显示两个commit(当然也可以是branch)的区别
git remote [-v] 显示远程仓库,加-v选项可显示仓库地址
git remote add <repo_name> <url> 添加远程仓库,repo_name为shortname,指代仓库地址
git remote rename <old_name> <new_name> 更名
git remote rm <repo_name> 删除远程仓库
git remote show <repo_name> 查看远程仓库信息
git remote fetch <repo_name> 从远程仓库抓取数据(并不合并)
git pull <repo_name> <branch_name> 拉去数据并合并到当前分支
git push <repo_name> <branch_name> 推送指定分支到指定仓库
git fetch <repo_name> <branch_name>[:<local_branch_name>] 拉去数据,未合并
Git 标签
git 标签相关……
Git 相关环境变量
GIT_DIR: 如果指定了那么git init将会在GIT_DIR指定的目录下创建版本库
GIT_OBJECT_DIRECTORY: 用来指示对象存储目录的路径。即原来$GIT_DIR/objects下的文件会置于该变量指定的路径下
Git 常见变量
HEAD: 表示最近一次的 commit。
MERGE_HEAD: 如果是 merge 产生的 commit,那么它表示除 HEAD 之外的另一个父母分支。
FETCH_HEAD: 使用 git-fetch 获得的 object 和 ref 的信息都存储在这里,这些信息是为日后 git-merge 准备的。
HEAD^: 表示 HEAD 父母的信息
HEAD^^: 表示 HEAD 父母的父母的信息
HEAD~4: 表示 HEAD 上溯四代的信息
HEAD^1: 表示 HEAD 的第一个父母的信息
HEAD^2: 表示 HEAD 的第二个父母的信息
COMMIT_EDITMSG: 最后一次 commit 时的提交信息。
TO BE FINISHED!
- Git命令小记
- Git命令小记
- git 命令小记
- Git命令小记
- Git命令小记
- git命令小记
- Git命令小记
- Git命令小记
- git 命令小记
- Git 小记
- git 小记
- Git小记
- Git小记
- Git小记
- git 小记
- Git小记
- 自己用过的git命令,小记一下
- 命令小记
- Java ScriptEngine解析脚本学习
- 游戏更新-围棋练习大全-Android
- __declspec(dllexport)
- 在Linux中使用非阻塞的socket的情形下
- 【科研论文】基于Zigbee与以太网的智能家居系统设计–基于W5300
- Git命令小记
- Java中的类装载器(ClassLoader)
- cannot load such file -- openssl 用gem安装rails时遭遇的错误
- google play网页改版后查看英文评论的方法
- makefile
- 激光散斑测量
- 流量清洗主要针对的攻击类型
- 华为2012年上机考试------一副牌中发五张扑克牌给你:让你判断数字的组成
- 游戏更新-空当接龙-Android