Git常用指令

根据廖雪峰的Git教程整理而来

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
    因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心。 注意gitconfig命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
git中的命令
git init            #初始化一个git仓库
git add filename    #添加如果各文件到git仓库
git status          #查看当前工作区的状况,一般还会给你建议
git diff readme.txt #readme.txt 被修改后还没被add、commit,这时可以比较不同点

git log             #由近到远显示commit id + commit message
    git log --pretty=oneline    #一行显示一条commit记录
git reset --hard HEAD^      #返回上一个历史版本
   git reset --hard 7bit_id HEAD表示当前的版本,HEAD^^表示上上一个版本,HEAD~100表示之前的第100个版本,其实就是一个指针
git reflog  --pretty=oneline    #显示在某个仓库中使用过的命令历史记录,每个后面都有一个commitid,这样可以回到已经去过的未来

理解 working flow, stage(index)的概念,以提交一次文件(的两步)为例说明上面的过程。

git checkout -- readme.txt 有两个作用:
    i)如果仅仅想撤销工作区的修改,可以使用这个命令
    ii)如果工作区中的readme.txt文件被删除了,那么可以使用这个这个命令吧stage中的这个回复文件衣服到工作区。
    
git reset HEAD readme.txt
    如果readme.txt在工作区的修改已经add到了stage,这时可以用这个指令。
    让后在使用checkout 指令,撤销工作区中的修改。不能直接使用checkout命令

ssh-keygen -t rsa -C "1373779753@qq.com"    #生成 SSH Key
clip < ~/.ssh/id_rsa.pub    #把公共密钥拷贝到剪贴板。

git remote add origin git@server-name:path/repo-name.git    #关联一个远程库
git push -u origin master               第一次推送master分支的所有内容
       此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

git checkout -b dev     #创建一个新分支之后,-b参数表示切换到新分支上。
    其实上面相当于下面两条命令,仔细观察上面的符合指令符合右结合的特性。
       git branch dev
       git checkout dev
git branch      #查看当前分支
    git branch命令会列出所有分支,当前分支前面会标一个*号
git branch dev   #创建分支dev
git checkout branch-name    #切换分支到dev
git checkout -b name      #创建加切换分支 一块 dev
git merge name             #dev
git branch -d dev           #删除分支dev

当合并分支发生冲突时,打开冲突的文件,修改,然后在add->commit之后冲突就会修复
$ git log --graph --pretty=oneline --abbrev-commit  #查看分支合并图

git merge --no-ff -m "merge with no-ff" dev
    强制关闭fast-forward模式,然后合并dev分支,并提交一个commit
    这种合并的好处是,可以使用git log --graph 产看到合并图,而fast-forward则不行
    
git stash   #当前分支上面的工作还没做完不能提交,但是又必须要离开,就可以使用这个指令来保存现场
git stash list  #查看所有的保存点

回复stash保存的工作现场的方法:
    git stash apply stash@{0}  #恢复到stash@(0) 工作现场
    git stash drop stash@{0}    #删除{0}工作现场
    或者下一条指令,直接完成上面两部的工作:
    git stash pop

如果要丢弃一个没有被合并过的分支,可以通过
    git branch -D branch-name 强行删除    

git remote -v 查看远程库信息
本地新建的分支如果不推送到远程,对其他人就是不可见的;
git push origin branch-name #本地推送分支
    如果推送失败,Git 会提醒先用git pull抓取远程的新提交
git checkout -b branch-name origin/branch-name  #在本地创建和远程分支对应的分支
    本地和远程分支的名称最好一致。
git branch --set-upstream branch-name origin/branch-name  #建立本地分支和远程分支的关联
git pull    #远程抓取分支,抓取下来的远程分支如果和本地有冲突,要先处理冲突

git tag tagName     #用于创建一个标签,默认为HEAD指定的commit 可以通过commit id来指定
git tag -a tagName -m "blablabla..."    #可以指定标签信息
git tag -s tagname -m "blablabla..."    #可以用PGP签名标签
git tag             #可以查看所有标签

git push origin <tagname>可以推送一个本地标签
git push origin --tags可以推送全部未推送过的本地标签
git tag -d <tagname>可以删除一个本地标签
git push origin :refs/tags/<tagname>可以删除一个远程标签                          如果一个标签已经推送到了远程,要想删除远程的标签的话:分两步:先删除本地的标签,再删除远程的标签

原文地址:https://www.cnblogs.com/OliverZhang/p/7217517.html