Git是分布式版本控制系统

 

安装Git

    sudo apt-get install git


配置用户名和邮箱

    git config --global user.name "Your Name"

    git config --global use.email "email@example.com"


配置代理

         git config --global http.proxy  127.0.0.1:39439

         git config --global https.proxy 127.0.0.1:39439

         git config --global http.sslverify false


         export http_proxy=127.0.0.1:39439

         export https_proxy=127.0.0.1:39439

取消代理 

         git config --global --unset http.proxy

         git config --global --unset https.proxy


         unset http_proxy

         unset https_proxy


创建仓库

    mkdir  test

    cd test

    git init


添加文件到版本库当前分支(分以下两步)

    把文件添加到暂存区    

        git  add  README.md 

   把文件提交到版本库当前分支

         git commit -m "first commit"


查看工作区状态

    git status 

    git status  -s


查看修改内容

    查看工作区与暂存区的修改内容

        git  diff

    查看工作区与版本库当前分支的修改内容

        git  diff  HEAD

    查看暂存区与版本库当前分支的修改内容   

        git  diff --cached


查看历史提交记录

    git   log

    git  reflog

    git log --graph --pretty=oneline --abbrev-commit


回退版本

    回退到commit_id对应的版本

        git  reset  --hard  commit_id 

    回退到HEAD指向的当前版本

        git reset --hard  HEAD


丢弃工作区的修改

    git  checkout  -- filename.txt

    注意这里有两个-,如果没有--,就变成了切换分支的命令


将暂存区的修改撤销掉,放回到工作区

    git  reset HEAD filename.txt


删除文件

    git rm filename.txt


关联远程仓库

    git remote add origin git@server-name:path/repo-name.git


推送master内容

    第一次推送时需要使用下面命令

        git  push -u origin master

    以后提交使用下面命令

        git push  origin master


克隆仓库

     git clone  https://server-name:path/repo-name.git


查看分支

    git branch


创建分支

    git branch <name>


切换分支

    git checkout <name>


创建+切换分支

    git checkout -b <name>


合并某分支到当前分支

    git merge <name>


删除分支

    git branch -d <name>


合并分支

    git merge --no-ff -m "merge with no-ff" dev

    合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。


修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

    git  stash  list

    git  stash apply  stash@{0}

    git  stash pop


当你多次使用’git stash’命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑,git stash list’ 命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用git stash apply stash@{1}’就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用’git stash clear’来将栈清


开发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过

    git branch -D <name>强行删除。


查看远程库信息

    git remote -v;


从本地推送分支

    git push origin branch-name    如果推送失败,先用git pull抓取远程的新提交;


在本地创建和远程分支对应的分支

    git checkout -b branch-name origin/branch-name    本地和远程分支的名称最好一致;



建立本地分支和远程分支的关联

    git branch --set-upstream branch-name origin/branch-name;


从远程抓取分支

    git pull       如果有冲突,要先处理冲突


发布一个版本时,我们通常先在版本库中打一个标签(tag)

新建一个标签

    git tag <name>        默认为HEAD,也可以指定一个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>


本地创建分支,然后推送到远程

    git checkout -b  feature-branch   //创建并切换到分支feature-branch

    git push origin feature-branch:feature-branch  //推送本地的feature-branch(冒号前边的)分支到远程feature-branch(冒号后面的)分支