Git操作

来源:互联网 发布:云计算市场规模 编辑:程序博客网 时间:2024/06/05 15:12

()Git SSH Key

设置用户的name和email信息
git config –global user.name “用户名”
git config –global user.email “邮箱地址”

查看配置信息
git config –list

生成SSH密钥
ssh-keygen -t rsa -C “邮箱地址”
一路回车,在.ssh目录下有id_rsa(私钥)和id_rsa.pub(公钥)两个文件

()新建本地仓库

在当前目录新建Git本地仓库
git init

远程仓库克隆(下载)
git clone url

()添加文件或者目录到暂存区,提交到本地仓库

添加指定文件到暂存区
git add 文件

添加指定目录到暂存区,包括子目录
git add 目录

添加当前修改的全部文件和目录到暂存区
git add -A或者是git add .

提交暂存区到本地仓库
git commit -m “提交描述”

提交暂存区的指定文件到本地仓库
git commit 文件 -m “提交描述”

跳过使用暂存区域提交到本地仓库(慎用)
git commit -a -m “提交描述”

提交时显示所有diff信息
git commit -v

注:
add是把文件或者目录添加到暂存区
commit是把暂存区的所有内容提交到本地仓库

()查看信息

查看有变更的文件
git status

查看从最近到最远的提交日志的全部信息
git log

查看从最近到最远的提交日志,但是只能看到提交的版本号和描述
git log –pretty=oneline

查看最近的p次更新的提交日志
git log -p

查看提交日志,以及每次提交发生变更的文件
git log –stat

显示暂存区和暂存前的差异,也就是修改前后变化内容
git diff

显示指定文件暂存区和暂存前的差异
git diff 文件

显示暂存区和上一个commit的差异,也就是暂存前后变化内容
git diff –cached

显示指定文件暂存区和上一个commit的差异
git diff –cached 文件

显示当前分支的最近几次提交
git reflog

显示某次提交的数据和内容变化
git show 提交ID

()撤销

撤销最后一次提交
git commit –amend

撤销暂存区的所有文件到工作区
git checkout .

撤销指定文件的修改
git checkout – 文件

撤销已经暂存的文件
步骤1:git reset HEAD 文件
步骤2:git checkout – 文件

恢复到上一个版本
git reset(重置) –hard head^

恢复到版本号对应的版本
git reset –hard 版本号

用来记录你的每一次命令(关机后也能记住之前的版本号)
git reflog

head 表示当前版本
head^ 表示上一个版本
head^^ 表示上上个版本
head~100 表示往上100个版本

保存当前的工作进度,会分别对暂存区和工作区的状态进行保存
git stash

列出所有保存的工作进度列表
git stash list

删除所有工作进度
git stash clear

删除指定的一个工作进度,默认删除最新工作进度
git stash drop stashID

恢复工作进度,恢复的同时把stash内容也删了
git stash pop stashID

恢复工作进度,恢复的同时,stash内容并不删除
git stash apply stashID

基于进度创建分支
git stash branch 分支名 stashID

()删除本地仓库的文件

彻底删除文件
直接用命令删除文件,或者从工作目录中手工删除文件
步骤1:git rm 文件
步骤2:git commit -m “提交描述”

注:如果文件在删除前是修改过的需在在文件前加入-f(git rm -f 文件),再提交

Git仓库中删除(亦即从暂存区域移除),但仍然保留在当前工作目录中
步骤1:git rm –cached(缓存) 文件
步骤2:git commit -m “提交描述”

修改文件的名称
步骤1:git mv 原文件 现文件
步骤2:git commit -m “提交描述”

()分支

列出所有本地分支
git branch

列出所有远程分支
git branch -r

列出所有本地分支和远程分支
git branch -a

新建一个分支,但依然停留在当前分支
git branch 分支名

切换到上一个分支
git checkout -

切换分支
git checkout 分支名

新建一个分支,并切换到该分支
git checkout -b 分支名

新建一个分支,指向指定commit
git branch 分支名 commitID

新建一个分支,与指定的远程分支建立追踪关系
git branch –track 分支名 远程仓库名/远程分支名

建立追踪关系,在现有分支与指定的远程分支之间
git branch –set-upstream 分支名 远程仓库名/远程分支名

查看各个分支最后一个提交对象的信息
git branch -v

查看哪些分支已被并入当前分支
git branch –merge

快进模式(Fast-forward)合并指定分支到当前分支
git merge(合并) 分支名

查看分支合并图
git log –graph
或者git log –graph –pretty=oneline

删除分支
git branch -d 分支名

强制删除没有合并的分支
git branch -D 分支名

()远程同步

查看远程仓库
git remote(远程)

查看远程仓库以及远程仓库的克隆地址
git remote -v

添加远程仓库
git remote add 远程仓库名 远程仓库地址

远程仓库重命名
git remote rename(重命名) 远程仓库原名 远程仓库改名

删除远程仓库
git remote rm 远程仓库名

将远程主机更新全部取回本地
git fetch 远程仓库名
注:远程仓库名一般为origin

将远程主机特定分支更新取回本地
git fetch 远程仓库名 远程分支名

将远程分支合并到当前本地分支
git merge 远程仓库名/远程分支名

取回远程主机某个分支的更新,再与本地的指定分支合并
git pull 远程仓库名 远程分支名:本地分支名

注:(1)如果远程分支是与当前分支合并,则冒号后面的部分(本地分支名)可以省略
(2)pull实质上,这等同于先做git fetch,再做git merge
(3)如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名(如:git pull 远程仓库名)
(4)如果当前分支只有一个追踪分支,连远程主机名都可以省略(如:git pull)

推送本地分支,也就是将本地分支代码提交到远程分支
git push 远程仓库名 本地分支名:远程分支名

注:(1)如果是推送当前的本地分支,则本地分支名和冒号可以省略.
(2)如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名)如果该远程分支不存在,则会被新建
(3)如果当前分支只有一个追踪分支,那么主机名都可以省略(git push)

注:git push不会推送标签(tag),除非使用–tags选项.

注:分支推送或者是获取顺序的写法是<来源地>:<目的地>,
所以git pull是<远程分支>:<本地分支>,
而git push是<本地分支>:<远程分支>.

:是和本地分支同时出现
如果省略远程分支名,表示该分支与远程分支存在跟踪关系

跟踪远程分支
git branch –set-upstream 本地分支名 远程仓库名/远程分支名

注:克隆仓库时,Git通常会自动创建一个名为master的分支来跟踪origin/master.
这正是git push和git pull一开始就能正常工作的原因

删除远程分支(慎用)
git push 远程仓库名 :远程分支名
注:等同于推送一个空的本地分支到远程分支

()标签

显示所有的标签,标签的排序不是按照时间排序,而是按照字母排序
git tag

创建标签在当前提交,创建标签前需要切换到需要标签的分支
git tag 标签名

创建带说明的标签在当前提交
git tag -a 标签名 -m “标签说明”

创建标签在指定提交
git tag 标签名 提交ID

创建带说明的标签在指定提交
git tag -a 标签名 -m “标签说明” 提交ID

查看标签信息
git show 标签名

删除本地标签
git tag -d 标签名

推送指定标签到远程
git push origin 标签名

推送全部标签到远程
git push origin –tags

删除远程标签
git push origin :refs/tags/标签名

()忽略某些文件

说明:有些文件无需纳入Git的管理,也不希望它们总出现在未跟踪文件列表.
通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等

创建.gitignore 的文件:新建任何一个文本文件,然后另存为.gitignore保存类型

文件.gitignore的格式规范如下:

(1)所有空行或者以注释符号#开头的行都会被Git忽略(2)可以使用标准的glob模式匹配(3)匹配模式最后跟反斜杠(/)说明要忽略的是目录(4)要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反

glob模式: shell所使用的简化了的正则表达式

(1)星号(*)匹配零个或多个任意字符;(2)[abc]匹配任何一个列在方括号中的字符(要么匹配a,要么匹配b,要么匹配c)(3)问号(?)只匹配一个任意字符;(4)如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9]表示匹配所有0到9的数字)

查看.gitignore文件忽略了哪些文件
cat .gitignore

注:常见的工程的gitignore文件:https://github.com/github/gitignore

()获取帮助

查看有哪些命令
git help

查看命令怎么使用
git help 命令名

git命令补全
输入命令连按两次Tab键,会看到两个相关的建议(命令)

()git的命令太多可能记不住,可以借助第三方工具SourceTree

参考资料:

阮一峰 Git远程操作详解
http://www.ruanyifeng.com/blog/2014/06/git_remote.html

阮一峰 常用 Git 命令清单 http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html

Pro Git(中文版)http://git.oschina.net/progit/index.html

0 0
原创粉丝点击