Git常用指令

全局参数

因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。
git config --global 参数,
有了这个参数,表示这台机器上所有的Git仓库都会使用这个配置,
git config --global user.name "raye"
git config --global user.email "raye@example.com"
git config --global user.password "password"
也可以对某个仓库指定的不同的用户名和邮箱,进入制定仓库,去掉global即可
修改user.name
<1>git bash(替换)
git config --global --replace-all user.name "your user name"
<2> 修改 .gitconfig文件
<3>git config -e 
自己选择删除
<4>覆盖
git config --global user.name "example"
删除对应的用户名或邮箱
git config --global --unset-all user.name(user.email)

版本回退

#查看日志
git log 
#简洁日志
git log --pretty=oneline
#查看所有版本号
git reflog
#版本回退
<1>git reset --hard HEAD^^^(一个^代表一个版本)
<2>git reset --hard HEAD~199
<3>git reset --hard 版本号
#撤销修改
git checkout --<file>撤销工作区的更改

远程仓库remote

创建ssh key

ssh-keygen -t rsa -C "email@example.com"
一直回车默认or修改sshkey文件位置

分支branch

#创建分支
git checkout dev
#创建并切换分支
git checkout -b dev
#创建远程分支到本地
git checkout -b dev origin/dev
#指定本地dev分支与远程origin/dev分支的链接
git branch --set-upstream dev origin/dev
#合并分支
git merge(合并指定分支到当前分支)
#删除分支
git branch -d name
#bug分支(创建临时分支)
git stash(把当前工作区隐藏)
git checkout master(切换到主分支)
git checkout -b 临时分支
<编辑>
切换到主分支,合并并删除临时分支
再回到之前的分支
git stash list(查看)
<1>git stash apply 恢复后,stash内容并不删除,使用命令git stash drop来删除
<2>git stash pop 恢复的同时把stash内容也删除

pull/push

git push <远程主机名> <本地分支>:<远程分支>
省略本地分支等价于删除远程分支(git push origin :dev)
#删除远程仓库的分支
git push origin --delete dev
同步远程仓库
git pull <远程主机名> <远程分支>:<本地分支>
git pull origin master :my_test 
如果省略本地分支,则将自动合并到当前所在分支上
git pull origin master

####

commit

#将暂存区改动提交到本地版本库
git commit -m "edit"
#撤回commit
git reset --soft HEAD^(如果控制台出现More?,则将命令改成 git reset --soft HEAD^^即可)
仅是撤回commit操作,写的代码仍然保留
#参数
–mixed
不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
–soft
不删除工作空间改动代码,撤销commit,不撤销git add .
–hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
#修改注释 
如果commit注释写错了,只是想改一下注释,只需要:
git commit --amend

#

git 常见问题

  1. 使用http/https协议每次pull或者push需要输入密码
     git config --global credential.helper store
     会在本地生成.gitconfig
     执行命令:
     cat ~/.gitconfig,
     存在如下内容即代表成功
     [credential]
     helper = store
     再输入一次后,无需再输入
    
  2. 公司为了安全,3个月强制改密码,此时执行也会出问题
     remote: HTTP Basic: Access denied
     fatal: Authentication failed for 'http://git.aaa.com/aaa/aaa.git/'
     解决方法:密码重置
     git config --system --unset credential.helper
    
  3. goland终端配置git bash
    参考
  4. error: Your local changes to the following files would be overwritten by merge

    方法一:丢弃本地改动

    注意:丢弃本地文件是危险操作,必须考虑无误后再删除。
    如果本地的修改不重要,那么可以直接把本地的的修改丢弃: git checkout . //丢弃所有本地未提交的修改
    有的本地文件是新添加但没有add过的,在git status中的状态是untrack,它们需要通过git clean删除: 首先查看一下有哪些文件将被删除 git clean -nxdf
    将被删除的文件无误后,执行删除 git clean -xdf
    也可以一个一个文件的删除,比如删除文件xxx git clean -f xxx

    方法二:暂存到堆栈区:

    如果不想丢弃本地文件,可以暂存到堆栈区(stash)
    注意:使用git stash暂存内容后merge,再git stash pop,可能报分支冲突,此时可以在本地新建一个分支,在新分支上恢复stash内容
    暂存到堆栈区:git stash
    查看stash内容 git stash list
    要用到本地修改时,把stash内容应用到本地分支上: git stash pop
    stash中的内容被弹出。如果保存了多个暂存内容,那么弹出顺序是先进后出的(栈)。
    如果不想弹出内容,但仍然把stash内容应用到本地分支上: git stash apply这样stash中的内容不会被弹出。

    此外,可以手动删除stash中的内容:
    >删除指定的一次stash内容,名称可以通过git stash list获得:git stash drop xxx
    >删除所有stash内容 git stash clear

  5. gnutls_handshake() failed: The TLS connection was non-properly terminated.
    ubuntu 解决办法
        apt-get update
        apt-get install curl