Git的学习总结和使用时遇到的问题。

时间:2023-03-08 17:00:29
          git 是一款非常强大的版本控制工具,现在市场占有率应该是一家独大了,以前用svn的童鞋估计都转投git阵营了吧
加上很多公司也用git管理自己的项目,所以说作为开发人员,git是必学的技术之一了。
         当初公司需要使用git,必须快速入门,所以网上狂搜git入门教程,(以前听说很多人说去官网看第一手资料,对英
文不错的同学来说固然不错,但对于我这种英文不是很牢靠的还是需要一些更简单的方式,毕竟也需要马上上手投入使用)
,还是找到了非常不错的文章,廖雪峰的git教程(http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
介绍的很全。
     借助大牛的大纲   ,我自己总结一下git的基本使用:
  1. 简介  :  git 是分布式的版本控制系统,而以前的CVS和SVN都是集中式的版本控制系统,git的代码仓库在每个人
人的本机上都会存储一个副本,有工作区,暂存区,本地库,远程库四个概念,我们在工作区工作,add到暂存区,commit
到本地库,一切确认ok了,就push到远程库。  当然这中间会有很多问题,比如代码冲突(程序员最头痛的问题)。
        push到的远程库目前我自己用到的有两个,1git.github.com  2 git.oschina.net(中国开源站,里面很多的开源代码,非常 nice的学习资料)
     2.git的安装 
     我们可以建立自己的git仓库,需要去git下载,不过我们一般都是把项目托管到github和oschina上,如果以后遇到,再来记录搭建git服务器
的详细步骤。
     目前我们只需要安装一个本地git客户端即可。windows安装git客户端即可,linux下 yum install git 安装git ,一般已经安装了。
     3.在本地创建一个版本库 : git init  
          会出现一个.git 文件夹,用于跟踪项目版本修改记录
     4.用的最多的命令: git status  , git  add , git commit -m "注释"  ,git push  , git pull 
          git status   查看本地版本库的状态 ,有没有未跟踪,修改未提交,提交未推送到远程库的信息全部会显示。
               如果要看想提交的文件和库里的有什么不同,git diff 【文件名】 可以对比文件
          git add   【文件名  空格  文件名  】 或者 .(点,代表跟踪的 所有文件)  将文件从工作区添加到暂存区。
          git  commit   提交到本地库 
          git push 把本地已经提交的记录,推送到远程库。
          git  pull  从远程库拉取别人更新的代码
     5.在四个区域转换修改有用的命令:
          git reset --hard  HEAD^     回退到上个提交的版本  也可以吧HEAD^用commit_id替换  ,可以用git log 查看日志记录中的commit_id
          如果有add了的但又不想提交的怎么办呢,得使用 git reset  HEAD【全路径文件名】 把不想提交的从暂存区拉到工作区才行。
          工作区的代码不要了,让本地库中的代码覆盖,重新写,用git  checkout   【文件名】 撤销工作区的修改,重新开始。
          当我在编写ATask任务,想干其他模块的工作BTask ,暂存区的工作内容保存起来,然后回到代码库的代码,想用的时候再恢复过来。
               用 git stash  所有工作区的修改ATask 暂时存储,且工作区恢复到修改之前了。
               BTask 其他模块编写完毕,提交后,想把ATask恢复到工作区,git  stash pop  恢复。
               当然可以暂存很多这种任务,可用git  stash list 查看任务。
               想恢复其中一个而不是最上面的一个时 用 git stash  apply  [名称,通常为stash@{0}]
          现在我有一系列的未跟踪的文件(未被放到工作区),想删掉,可用 git clean -f   
               连同目录一起删除 git  clean -fd
               连.gitignore文件中标明的目录也删掉,呃,当然这个一般别用,git clean -xfd
               以上三个命令 参数都可加上-n,先查看哪些文件要删除,会先列出个列表 , git  clean -nf   ,git clean -nfd  , git  clean -nxfd
     好了,3,4,5点都是针对单个分支的操作,下面来讲一下多个分支的基本操作:
    6.分支的操作:
          新建一个分支 :git branch  【分支名A】 ,这个是以当前分支为基础,比如当前分支在master,A分支就是master的一个副本
               还可以git branch -b  [分支名A]  创建并切换到分支A
          删除分支  : git  branch -d 【分支名A】
          合并分支:git merge  master  , 假设当前分支为A ,把master分支代码合并到A分支。
               分支合并并记上日志:git merge  --no-ff  -m "分支合并日志记录"  master
          查看分支合并图 : git  log  -graph  
          查看所有分支的日志 :git relog 
    7.远程推送操作:
          把远程代码拉到本地 git clone  git.oschina.net@fubin/fubin.git
     删除远程分支:本地分支删除了之后,如果已经推送到远程,我们得删除远程分支 :git push origin   :A
               这个方法是把一个空的名字的分支推送到远程并覆盖A,就删除了。
         那我们怎么提交代码或者推送建好的分支到远程呢:
          (1)如果已经关联好了,直接git push
                 (2)远程有,没关联好,git push -u origin/remote_branch
                 (3)远程没有,需要新建一个推送,git push origin local_branch:remote_branch
     (3)的另一种方法,假如我们有一个本地库,一个远程库,想关联起来,git remote add origin  git.oschina.net@fubin/fubin.git
   8.遇到的一些问题汇总:
        《1》  提交代码的时候需要输入密码,可长期存储密码配置:git  config  --global  credential.helper store
        《2》  日志漂亮的配置:
               git log --pretty=oneline   单行显示日志
               别名配置:git lg  树形结构显示日志,很方便。
               git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
               其实这些配置都记录在.gitconfig  文件中:部分内容如下:
[color]
    diff = auto
    status = auto
    branch = auto
[user]
    name = fubin
    email = 1401626753@qq.com
[gui]
    encoding = utf-8
    recentrepo = E:/Workspace/vpfinance
[push]
    default = matching
[credential]      
    helper = store  
[alias]
    lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
        《3》  以master为模板创建远程分支过程:
                1. 创建分支 git branch -b  A   2 git push origin A:A  
        《4》  新建一个项目,push到远程步骤:
                 1. 本地新建项目   
2. 新建本地仓库 并git init 
3 .远程新建项目 
4.本地和远程建立关联 git remote add origin  git.oschina.net@fubin/fubin.git 
5.拷贝本地项目到本地仓库
6.提交
        《5》  如何忽略已跟踪的文件?
               git update-index  --assume-unchanged filename
               撤销忽略:
               git update-index  --no--assume-unchanged filename
        《6》  删除已经入库的文件夹,这个是直接删除远程库,本地库也一起删除,需要小心操作。 
               git rm -f --cached .idea/
               git commit -m "删除已入库的文件夹"
        《7》  git的维护(git gc 和 git fsck)
               git fsck 运行一些仓库的一致性检查, 如果有任何问题就会报告. 这项操作也有点耗时, 通常报的警告就是“悬空对象"(dangling objects).
        《8》  git push 时报错  error: cannot lock existing info/refs
                在环境中执行 git update-server-info    后解决问题
        《9》  提示出错信息:fatal: remote origin already exists.
                删除远程分支关联:
                git remote rm origin

相关文章