Git-Use

git use

1. 安装git

Linux: sudo apt-get install git

2. 创建版本库

  1. git init
  2. git add . or git add filename
  3. git commit -m “some comments”
  4. git push

3. 文件头信息和管理

常用到的查看信息命令:

git status git log git diff filename

3.1 版本回退

    git log    #查看全部的信息
    git log --pretty=oneline  #单独一行显示一种信息

    git reset --hard HEAD^ #回退到上一个版本之中
    git reset --hard version_num #回退到指定版本号中,此处的回退已经屏蔽掉了在这个版本之后的所有信息。可使用 git log 查看到

    git reflog #可以查看到历史记录中的版本变更情况,同时使用 git reset --hard version_num 可以恢复到任何想去的版本当中

3.2 管理与修改

在git commit中只有把修改提交到暂存区之后,才能被正式提交,否则即便修改过,也不会被提交。每次修改,如果不add到暂存区,那就不会加入到commit中。

3.3 撤销与修改

    git checkout -- filename #丢弃工作区的内容
    git reset HEAD filename #把暂存区的内容回退后在丢弃工作区的即可。
    git checkout -- * #丢弃所有内容

3.4 删除文件

直接在工作区中删除:

    rm filename

在暂存区中删除:

    git rm filename

误删除,还原:

    git checkout -- filename  #git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

备注:如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

4. 远程仓库

4.1 创建远程仓库ssh:

    https://help.github.com/articles/generating-ssh-keys

4.2 添加远程仓库:

    git remote add origin xxxxx

4.3 clone

    git clone xxxxx

5. 分支管理

5.1 创建与合并分支

    git checkout -b new_branch #创建并切换到new_branch
    git branch #查看所有分支情况
    git branch new_branch #创建分支
    git checkout new_branch #切换到分支
    git merge new_branch #合并分支
    git branch -d new_branch #删除分支
    git branch -D new_branch #删除未合并的分支

5.2 分支策略

在分支管理中,master分支属于最稳定的分支,一般是对外正式分布的分支.新建一个dev分支,开发人员在dev分支中进行开发,并不断合并到dev分支。

5.3 冲突解决

    git fetch origin #拉取远程分支内容,不合并
    git merge origin/master or origin.dev #合并分支
    git pull #拉取并做没冲突的合并,有冲突的会提示出来

5.4 bug 分支

    git stash #保存现场,当前的改动, 可迭代使用
    git stash list #显示当前的stash
    git stash pop #回复当前的stash, 并删除对应的stash内容

    git stash apply stash@{stash_num} #应用当前的stash
    git stash drop stash@{stash_num}  #丢弃stash

5.5 多人协作

    git remote #查看远程库
    git remote -v #查看远程库的详细信息

    git push origin master #推送本地master分支
    git push origin dev    #推送呗地dev   分支

备注:

  • master分支是主分支,因此要时刻与远程同步;
  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

抓取分支和分支冲突解决:

    git clone xxxxxxxxx
    git branch #查看抓取到的分支,默认情况下仅有master
    git checkout -b dev origin/dev #在本地创建dev分支,同时在本地dev分支和远程的origin/dev分支关联
    git branch --set-upstream dev origin/dev #将远程的origin/dev 和本地的dev分支关联
    git pull, git push orgin dev #冲突解决和推送

多人协作的工作模式通常是这样:

  • 首先,可以试图用git push origin branch-name推送自己的修改;
  • 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  • 如果合并有冲突,则解决冲突,并在本地提交;
  • 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

6. 标签

暂时用不到!!

7. 自定义git

自定义问加 .gitignore

    #这个是注释,下面列举了常见的文件忽略方式:
    *.py[cod] #正则匹配pyc, pyd, pyo。
    *.so
    FileFolder #整个文件夹

配置别名:

    git config --global alias.co checkout
    git config --global alias.ci commit
    git config --global alias.br branch

搭建git 服务器:

暂时有github就够用了。