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 
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   --  显示不同版本间该路径下的文件差异
$ git diff   可以在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] []     #使用- -index将会恢复暂存区
git stash [save [- -patch][-k | —[no-]keep-index][-q | - -quiet][]]
git stash save “just test save message"

远程仓库远程仓库

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

里程碑

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

版本分支 git branch

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

恢复删除的文件

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

变基操作

 git rebase - -onto   

没有被引用的松散对象

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

查看HEAD变更记录

 git reflog show master | head -5

删除错误提交

1. git cherry-pick 
2. git rebase --onto   []   #变基操作
3. git rebase  []
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

你可能感兴趣的:(Git操作总结)