GIT学习


git本地仓库创建 

    初始化一个Git仓库,使用git init命令。

    添加文件到Git仓库,分两步:

  • 第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;

  • 第二步,使用命对此令git commit,完成。


    另外:

     git add .   

 将所有修改 add进仓库

     git add  命令 文件路径可以使用 通配符 ,其中
*
代表任意字符 , ..代表任意多层目录 
          如 git add  src/main/../*.*  可以add main 目录下 的 所有文件 
       

git状态和比较

git status 
查看当前分支的状态 
git diff  查看修改的 内容 
修改文件之后  ,使用   git add 
前后, 使用   
git status  
都可以看到提示有修改,但是他们 处于的状态不同 

git版本回退 

工作区 和 暂存区

git  
工作区 和 暂存区
 有的 区分 
对文件修改后 或者 新增文件,此时修改处于 工作区 ,执行   git add 
后 修改将会到 暂存区 ,然后只有真正的 执行   git commit 
命令后 才会 真正的把修改纳入到版本管理中 。
撤销修改 
 撤销修改分为  git add  命令执行前 和 执行 后 
        执行前:
                 对于修改的文件 , 使用命令  git checkout -- <fileName> 
                        fileName 支持通配符,如,
                   git  checkout -- .  还原所有已经修改的文件 ,
          git checkout -- src/../*.*  还原 src 目录下的所有文件
                 对于新增的文件 ,使用命令  git clean -fd  删除新增的所有文件和文件夹,或者手动删除某个文件夹,此命令对 已修改的文件无效。

      执行后:
                 对于修改的文件 , 使用命令  git reset HEAD <fileName> ,   将使使修改回到add前的状态,  fileName 支持通配符
                
                 对于新增的文件 , 同上 

版本回退

    对于执行过命令 git commit  的 修改,只能使用版本回退进行取消修改。
     git 使用 HEAD代表 当前版本,使用HEAD^ 代表上一个版本,响应的使用HEAD^^代表上上个版本,使用HEAD~100代表上100个版本。

    git reset --hard HEAD^   版本回退命令  会清除所有的暂存区所有的修改,但是工作区的不会动。
    g it log  命令会显示所有的提交记录,以便确定要回退到哪个版本。使用命令 git reset --hard commit_id,可以在 commit_id间穿梭 
       git reflog  查看命令历史,以便确定要回到未来的哪个版本。

git远程仓库 

         添加远程仓库

            当首先建立本地仓库的时候,需要把本地仓库的内容推送到远程仓库。
                 1.建立远程仓库,在git 服务提供者网站上建立即可。
                 2.把本地仓库推送过去。
                      利用  git remote add 命令来增加一个远程服务器端,
                         如  git remote add origin  https://code.csdn.net/windsunmoon/testgit.git   表示在本地仓库增加一个别名为origin的远程仓库,地址为.....
                      接着   git push -u origin master 命令 把本地所有内容推送到 远程仓库

               实际上是把当前分支master推送到远程。

                        由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,

                        还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

                        此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
       

          从远程仓库克隆

            要克隆一个仓库,首先必须知道仓库的地址,然后使用 git clone 命令克隆。
                          如  git clone    https://code.csdn.net/windsunmoon/test2.git

            Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

git分支管理

          创建和合并分支

            Git鼓励大量使用分支:

            查看分支:git branch 

        -a 参数查看所有分支  

            创建分支:git branch <name>

         实际上 是 在当前 分支的基础上创建分支   

            切换分支:git checkout <name>

            创建+切换分支:git checkout -b <name>

            合并某分支到当前分支:git merge <name>

            删除分支:git branch -d <name>

          只是在本地删除

                  如果要删除一个已经修改 但是没有合并过的分支,需要使用命令 

                        git branch -D <name>

         

          冲突处理

            合并某分支到当前分支:git merge <name> 

              当有冲突时,git无法自动合并此时,需要手动处理冲突

              使用git status 查看状态 ,然后 修改 冲突的文件,add  commit push 等  

            多人协作

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

  1. 首先,可以试图用git push origin branch-name推送自己的修改;

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

        如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-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,如果有冲突,要先处理冲突。


git标签

              

        标签也是版本库的一个快照。

        Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

  • 命令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  

忽略特殊文件   

   有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示Untracked files ...,有强迫症的童鞋心里肯定不爽。
     在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。 具体的例子可以看 https://github.com/github/gitignore
   

忽略文件的原则是:

  1. 忽略操作系统自动生成的文件,比如缩略图等;
  2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
  3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。、

其他配置 

git可以配置一些个性化的配置,比如 提交时的用户名 和 邮箱 ,命令缩写等。基本使用 git config --global  命令,其中 --global 表示全局配置 。


如以下命令配置 全局的缩写 

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

     
     
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"

如以下命令配置 全局(当前仓库)的 用户名和 邮箱

git config --global user.name  windsunmoon

        
        
git config --global user.email  test@test.com

git config user.name  windsunmoon

             
             
git config user.email  test@test.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值