Git操作总结

Git配置

git config [--global/system] <参数(例如下面)>

* git config user.name <名字>
* git config user.email <邮箱>
* git config --system alias.st status

取消设置

git config --unset [--global/system] <参数>

初始化仓库

* 初始本地仓库
    * git init [--bare] [仓库名称(创建文件夹的名称)]
        * --bare 代表仅创建包含Git版本管理文件,即仅普通创建后的.git目录
        * 仓库名称不输入时,以当前目录为根目录
    * git clone <远程仓库路径>

添加修改文件进暂存区

* git add <文件名> [文件名2] ...
* git add .     #添加所有
* git add -u     #可以添加删除的文件到暂存区
* git mv welcome.txt README # 直接移动
* git add -i        # 选择性提交

查看暂存区状态

git status
git status -s
git rm <file>
git reset       #仅改变暂存区
git reset - -hard HEAD^     #改变引用,暂存区,工作区
git reset [- -soft | - -mixed | - -hard | - -merge | - -keep] [-q] [<提交ID>] 
      参数:- -hard 替换引用,暂存区,工作区
              - -soft 只改变引用
              - -mixed 只改变引用,暂存区

查看文件

git ls-files --with-tree=HEAD^
git ls-files -s           #显示暂存区的目录
git cat-file -t “ID”       #查看类型
git cat-file -p “ID”      #查看对象内容
git cat-file -p HEAD^:welcom.txt

提交进本地仓库

* git ci [--allow-empty] -m “提交说明"
* git commit --amend #进入vi修改最后一次提交说明
* git commit --amend --reset-author #修改重置当前用户
* git ci -a "提交说明" #对所有变更文件提交

标识符解析git rev-parse

* --show-prefix显示相对目录 --Git-dir显示Git版本库的位置   --show-cdup显示当前工作区目录的深度  --parseopt解析命令行参数
* --symbolic --glob=refs/* 显示定义的所有引用。其中refs/remotes/目录下的引用称为远程分支(或远程引用)
* HEAD 显示HEAD对应的SHA1哈希值
* A^{tree} A: 显示里程碑A对应的目录树
* A^{tree}:src/Makefile A:src/Makefile 显示树里面的文件
* :/"搜索文本" 通过在提交日志中查找字串的方式显示提交

查看日志 git log

git log # 普通内容
git log --pretty=oneline    #显示一行
git rev-list [版本] #查看本版本之前的历史记录
--graph 视图

-n 显示条数
-p 显示具体改动
--stat 仅显示改动文件
--pretty=raw 显示原始数据,显示提交树
--pretty=fuller 同时显示作者和提交者
--pretty=oneline

文件对比 git diff

$ git diff B A 比较里程碑B和里程碑A
$ git diff A 比较工作区和里程碑A
$ git diff --cached A 比较暂存区和里程碑A
$ git diff 比较工作区和暂存区
$ git diff --cached 比较暂存区和HEAD
$ git diff HEAD 比较工作区和HEAD
$ git diff <commit1> <commit2> -- <paths> 显示不同版本间该路径下的文件差异
$ git diff <path1> <path2> 可以在Git版本库之外执行,对非Git目录进行比较
$ git diff --word-diff 逐词比较

文件恢复

git checkout -- welcome.txt     #使用暂存区恢复工作去
git checkout HEAD               #使用主干恢复暂存区和工作区
git reset HEAD                  #仅暂存区会被恢复
git rm --cached <文件名>               #仅从暂存区删除文件 

清空工作区中未加入到暂存区的文件和目录

 git clean -nd    #查看哪些将会删除
 git clean -fd     #清空
将暂存区写入对象库,然后使用ls-tree,可查看暂存区文件
 git write-tree
 git ls-tree -l “前面写入返回的ID"
 git write-tree | xargs git ls-tree -lrt

保存工作进度

git stash          #保存进度
git stash list     #显示列表
git stash pop   #恢复进度

git stash pop [- -index] [<stash>]     #使用- -index将会恢复暂存区
git stash [save [- -patch][-k | —[no-]keep-index][-q | - -quiet][<message>]]
git stash save “just test save message"

远程仓库远程仓库

git push origin master      #推送本地master分支到远程仓库origin中
git pull        #拉去远程分支
冲突解决
git ls-files -s #查看冲突的文件
git add <file>      #重新添加文件即可解决冲突

里程碑

git tag             #显示里程碑列表
git tag -n<num>      #显示行数几提交说明
git tag -l doc/1.*     #通配符过滤
git log - -decorate     #日志中显示里程碑
git describe               #显示该提交上面的里程碑
git name-rev           #会显示里程碑对应分支
创建里程碑git tag
1. <name> [<commit版本号>]     #创建名称为name的里程碑
2. -a/m <name> [<commit版本号>]    #创建带说明的里程碑
删除里程碑
git tag -d <tag name>
git tag <new tag name> <id>     #重命名
git push <remote_url>  :<tag name>      #删除远程里程碑
共享里程碑
git push origin <tag name>

版本分支 git branch

1. 空参数代表显示分支列表
2. <分支名称> [<commit提交id>] 创建分支,如果填写commit,则以commit创建
3. -d <branch name> 删除分支
4. -m <old branch name> <new branch name> 修改分支名称
* git checkout -b mywork origin 使用origin创建分支mywork
分支合并git merge <分支ID>
git pull
远程版本库地址
1. git remote add <new-name> <path>
2. git remote set-url <name> <new path>
3. git remote rename <new-remote> <ori name>
4. git remote rm <name>

恢复删除的文件

git cat-file -p HEAD^:welcome.txt > welcome.txt
git show HEAD~1:welcome.txt > welcome.txt
git checkout HEAD~1 - - welcome.txt

忽略文件 .gitignore

 *.o
 *.class
 *.obj
 git status - -ignored -s     #查看忽略文件
 git add -f Unit.class          #强制加入文件
 忽略只对未跟踪文件有效,对于已加入版本库的文件无效
 git config - -global core.excludesfile /home/.gitignore     #全局独享忽略

文件追溯

git blame <file name>   # 查看每行文件的提交记录
git blame -L 6,+5 README #显示从第6行后5行在哪个版本添加

变基操作

 git rebase - -onto <newbase> <since> <till>

没有被引用的松散对象

 git fsck #查看
 git prune #清理所有

查看HEAD变更记录

 git reflog show master | head -5

删除错误提交

1. git cherry-pick <commit提交id>
2. git rebase --onto <newbase> <since> [<till>]   #变基操作
3. git rebase <since> [<till>]
4. git rebase -i
5. git rebase --continue
6. git rebase --skip
7. git rebase --abort
使用git rebase
git rebase --onto C E^ F
从E到F的提交,重复提交到C上。(包含E提交,因为使用了E^)

归档

 git archive -o latest.zip HEAD
 git archive -o lastest.zip HEAD src doc
 git archive - -format=tar - -prefix=1.0/ first|gzip > foo-1.0.tar.gz
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容