git常用命令集

一、git常用命令

比较不同分支

1. 正常流程

# 将全部修改添加到暂存区
git add .

# 提交到本地版本库
git commit -m '解释所做的修改'

# 提交到远程xx分支
git push origin xx

# 第一次拉取别人的代码
git clone XXX

# 查看分支情况(会指明当前所在分支以及已有的相关分支)
git branch

# 新建名为new的分支
git branch new

# 切换到dev分支
git checkout dev

# 直接拉取远程版本库中dev分支代码到当前工作区
git pull origin dev

# 先拉取dev分支的代码到本地版本库,然后合并到当前工作区(==git pull)
git fetch origin dev
git merge dev

# 查看文件当前状态(会显示出所有修改过的,还未提交到远程版本库的文件状态)
git status

# 丢弃工作区中对xxx文件的修改(注意短横线前后要有空格)
git checkout -- xxx

# 查看历史提交情况(加--graph看起来更清晰一点)
git log --graph

# 把分叉的提交历史“整理”成一条直线,看上去更直观(自我感觉就是按push到远程的时间前后将提交进行了排序,治强迫症的)
git rebase

2. 分支操作及其上传

git 修改分支名

我用四个命令,总结了 Git 的所有套路

Git 常用命令及应用这一篇就够了(新手向)

# 修改本地分支名
git branch -m oldName newName

# 删除远程分支
git push --delete origin oldName

# 上传本地分支到远程同名分支
git push origin HEAD

# 将本次修改和上一次commit合并,作为一个commit提交到history区
git commit --amend

# 撤销某个stage里的文件修改,会保存在工作区,变为unstage状态
git reset a.txt = git reset --mixed HEAD a.txt

# 合并多个commit
git reset 17bd20c  # 回退到某次提交,不会改动代码,将之前的代码全放在工作区
git add .    # 将工作区内容直接add, commit
git commit -m 'balabala'

# 查看所有关键操作日志,能看到reset一集所有commit的hash值
git reflog

# Git 远程分支强制覆盖本地分支
# 更新所有的远程仓库信息
git fetch --all  
# 强制重置为 origin/master(可以换成你需要的远程分支) 远程分支
git reset --hard [origin/master] 
# 拉取最新代码
git pull

二、git不常用命令

其实就是遇到问题才来 修改的命令(对,菜是原罪)

1、修改配置文件

参考:git config配置        自定义Git-配置Git

git配置级别 优先级 参数选项 Windows位置
仓库级别 最高 --local

具体仓库下的.git/config

【“.”开头的文件为隐藏文件,默认不可见,需要先打开显示隐藏文件】

用户级别 次之 --global

用户宿主目录下的~/.gitconfig

【宿主目录:用户自己的目录,比如我的C:\Users\asus】

系统级别 最低 --system

git安装目录下的 /etc/gitconfig

【但是我的是在git安装目录\Git\mingw64\etc目录下】

配置生效过程:

  • Git 使用一系列配置文件来保存你自定义的行为。 它首先会查找 /etc/gitconfig 文件,该文件含有系统里每位用户及他们所拥有的仓库的配置值。 如果你传递 --system 选项给 git config,它就会读写该文件。
  • 接下来 Git 会查找每个用户的 ~/.gitconfig 文件(或者 ~/.config/git/config 文件)。 你可以传递 --global 选项让 Git 读写该文件。
  • 最后 Git 会查找你正在操作的版本库所对应的 Git 目录下的配置文件(.git/config)。 这个文件中的值只对该版本库有效。
  • 以上三个层次中每层的配置(系统、全局、本地)都会覆盖掉上一层次的配置,所以 .git/config 中的值会覆盖掉 /etc/gitconfig 中所对应的值。

配置文件常用命令:

# 查看git配置文件
git config -l

# 查看系统级别配置文件(其他级别类似)
git config --system -l

# 获取单个配置项(--get)
git config [--local|--global|--system] --get section.key (默认是获取local配置中内容)

# 增加配置项(--add)
git config [--local|--global|--system] --add section.key value (默认是添加在local配置中)

# 编辑单个配置项(git config --global user.name “Your Name”)
git config [--local|--global|--system]  section.key value

# 进入文件编辑配置项(-e | --edit)
git config --local -e

# 删除配置项(--unset)
git config [--local|--global|--system] --unset section.key

# 查看git配置的帮助文档
git config --help

正常使用中遇到的问题:

clone在GitHub的repo时,提示以下index-pack failed错误

# 错误提示:
...
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

# 解决方法一:
git config --add core.compression -1
git clone xxx
# 解释:
compression是压缩的意思,
从clone 的终端输出就知道,服务器会压缩目标文件,然后传输到客户端,客户端再解压。
取值为 [-1, 9],-1 以 zlib 为默认压缩库,0 表示不进行压缩,1..9 是压缩速度与最终获得文件大小的不同程度的权衡,
数字越大,压缩越慢,当然得到的文件会越小。

# 解决方法二:
用ssh克隆

Git 遇到了 early EOF index-pack failed 问题

2. 同步一个fork

同步一个 fork

Github中fork后同步原仓库

# 查看远程状态(没有配置远程的fork仓库时,只有origin 的两个,一个 fetch 和一个 push)
git remote -v
# origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
# origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

# 添加一个将被同步给fork远程的上游仓库(结束后再次查看远程状态,应该会多出来fork的内容)
git remote add 自定义名称 远程的fork仓库的地址
# origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
# origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
# upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
# upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

# 从上游仓库 fetch 分支和提交点,存储在本地的 upstream/master
git fetch upstream
# 切换到本地主分支,将 upstream/master 合并到本地 master
git checkout master
git merge upstream/master

# 更新到远程的fork上
git push origin master

三、遇到的异常问题

1、git 提交报错 index.lock 文件存在

问题原因:

不详,遇到过两次,但是都不知道是什么造成的

解决方法:

删除当前项目中.git目录中的index.lock文件。.git是隐藏目录,需要设置展示隐藏目录才能看见

你可能感兴趣的:(git,Git)