git

git

git init                  #初始化
git add manage.py         #提交单个文件
git add .                 #提交所有文件
git commit -m "all file"  #提交注释
git status                #状态
git ls-tree head          #查看版本中所有文件
git ls-files -s           #查看暂存区和版本中所有文件
git log                   #查看日志
git reflog                #查看所有日志
git stash                 #将当前修改的内容保存到一个地方
git reset  版本号          #默认等于git reset --mix 版本号
#配置用户信息
git config --local user.name '名称'
git config --local user.email '邮箱'
#回滚
git log
git reset --head 2b349bf
#查看所有日志回滚
git reflog
git reset --head 2b349bf

a. 回滚 

#方式一: (三步操作)
    git reset --soft 版本号  #从分支回到暂存区
    git reset head 文件     #从暂存区回到修改过的内容
    git check out  文件     #从修改过的文件到原文件
#方式二: (两部步操作)
    git reset --mix 版本号  #从分支回到修改过的内容 == git reset 版本号 
    git check out  文件     #从修改过的文件到原文件
#方式三: (一部步操作)
    git reset --hard 版本号  #从分支回到原文件

b. 案例一: 

    #-  开发短信功能提交,之后会退到短信之前的功能,最后再次回到短信功能
#开发短信功能
    创建msg.txt文件
    git add .
    git commit -m '开发短信功能'
            
#回滚(无短信功能):
    git log 
    git reset --hard 版本号
    
#再次回到短信功能:
    git reflog
    # 底下两部操作等于 git reset --hard 版本号
    git reset --mix 版本号
    git checkout 文件名
View Code 

c. 案例二:stash 将工作区做的所有修改(做到一半的操作)保存到一个临时地方

  #- 正在写代码(a.txt),发现线上代码(a.txt)有bug,先把现在代码保存到临时空间
  #- 修改完bug(a.txt)提交,再次取回之前保存的文件,这时发现之前保存的代码和提交的bug是同一个文件,有冲突
  #- 这时(a.txt)中两者都保留,手动保留想要的代码,再次提交
    #现在写的代码保存
    git stash  
    #修改bug再次提交 
    bug....
    git add .
    git status
    git commit -m "修改完bug"
    git status
    #切回之前保存的状态
      - 如果修改的文件和保存的文件是同一个文件,则此文件中会保留两者的代码,需手动改回自己需要的代码
      - 如果不是同一个文件,则直接提交
    git stash pop
    git add .
    git status
    git commit -m "bug上又一次修改"
View Code

d. 分支

dev        负责开发新功能
bug        负责修复线上的bug
master   线上代码
###分支

    #dev分支
    git branch
        dev
      * master
    git branch dev 
    git branch
    git checkout dev
    git branch
      * dev
        master


    #bug分支
    git branch bug
    git branch
        bug
        dev
      * master
    git branch bug
    git checkout bug
    git branch
      * bug
        dev
        master

    #修改完bug 把bug分支和master合并
    git checkout master
    git merge bug
View Code

远程仓库

#本地代码推送到远程仓库

git remote add origin https://github.com/oyoui/test.git  #设置远程仓库并设置别名origin
git checkout master
git push origin master    #推送到master分支


#从远程仓库拉代码

git clone https://github.com/oyoui/test.git
cd test/
git branch			#只下载master分支
	#* master
git branch 	-a		#查看所有分支 有远程的分支
	* master
	  remotes/origin/HEAD -> origin/master
	  remotes/origin/dev
	  remotes/origin/master
git branch dev origin/dev		#拉远程分支的代码
git branch
	 	dev
	*  master
    公司:
        git remote add origin https://github.com/a877252372/wwwww.git
        
        git checkout master
        git push origin master  # 推送
        
    回家:
        git clone https://github.com/a877252372/wwwww.git
        
        cd wwwww
        
        git branch dev origin/dev
        git checkout dev 
        写代码
        
        git add .
        git commit ...
        git push origin dev
        
    公司:
        git checkout dev
        #选其中一个
        git fetch origin dev    #从远程拉到本地的仓库 还需要    git reset --hard 文件        
        git pull origin dev       #从远程拉到原文件
        
        #----------提交成功完成-----------
        功能11
            git add .
            git commit ...
            git push origin dev
        #----------忘记提交,下班回家-------
        功能12:
            git add .
            git commit ...
            git push origin dev
    回家:
        git branch dev
        git pull origin dev
        功能13:
            git add .
            git commit ...
            git push origin dev
    

    #现在处于功能12没有提交的状态
    #先拉代码查看功能13和功能12是否有冲突,如果有冲突,手动修改 不能直接提交        
    公司:
        获取代码,
            git pull origin dev
            
            无冲突:过
            有冲突:
                手动解决
                git add .
                git commit -m '解决冲突'
View Code

 

  

流程

阶段一

    git init                #初始化

    开发新功能一
    git add .                #工作区的内容--->版本库 暂存
    git commit -m ".."       #增加到版本库
    git log                  #查看版本库中的日志


    开发功能二
    git add .
    git commit -m ".."

    切换到功能一
    git log                  #查看版本库中的日志
    git reset --hard       #切换到功能一


    切换到功能二
    git reflog               #查看所有版本库
    git reset --hard



阶段二


    开发功能一:
        git add .
        git commit -m ".."

    继续开发  发现之前上线的功能一需要修改 把现在的代码保存
        git stash                #现在做的代码

        完成功能一
        git log                  #功能一
        git git reset --hard        #切换到功能一
        git add .
        git commit -m ".."

        继续开发之前的功能  发现有冲突  手动解决冲突
        git stash pop
        git add .
        git commit -m ".."


分支
    
    master分支
    dev分支
    bug分支

    小明在dev上开发功能

        git branch dev      #创建dev分支
        git branch          #查看分支
        git checkout dev    #切换分支
        git add .
        git commit -m ".."


    发现线上有bug 修复bug

        git branch master
        git branch bug
        git add .
        git commit -m "修复bug"

    #合并
        git branch master
        git merge bug


    #此时master和bug相同的代码  删除bug分支
        git branch -d bug


    #在分支上继续开发
        git checkout dev    #切换分支
        git add .
        git commit -m ".."


    #此时需要上线 开发分支需要和master合并
        git checkout master
        git merge dev


#远程

    小明在家推到云端
   
       #拉代码
       git remote add origin 网址

       git push origin master
       git push origin dev


    小明去到公司

       git clone 网址            #此时只有master分支
       git branch dev           #创建dev 此时dev分支和远程的dev分支不同
       git pull origin dev      #拉远程的dev分支




    第一次拉代码三种方式

        #方式一
            git clone 网址            #此时只有master分支

        #方式二
            git init
            git remote add origin 网址    
            git pull origin master          #拉到工作区

        #方式三
            git init
            git remote add origin 网址
            git fetch origin master         #拉到分支
            git merge origin/master


    第二次

        方式一:
            git pull origin master          #拉并且合并

        方式二:
            git fetch origin master         #拉
            git merge origin/master         #合并




    场景三

        小明在家

            ......
            git add .
            git commit -m "test"
            git push origin dev


        小明公司

            git pull origin dev
            ......
            git add .
            git commit -m "test"
            忘记推送


        小明在家

            git pull origin dev
            发现之前的代码忘记提交
            。。。。。
            git add .
            git commit -m "test"
            git push origin dev


        小明公司

            git pull origin dev
            解决冲突
            git add .
            git commit -m "test"
            git push origin dev



#阶段三



    协同开发
        - 项目协作者
        - 组织


小明和小强同时开发


   小明或小强在自己分支开发 开发完成后推到远端

        git clone ....

        git branch dev
        git branch review
        git branch xiaoming

        git pull origin dev
        git pull origin review
        git pull origin xiaoming

        git checkout xiaoming
        .......
        git add .
        git commit -m ""
        git push origin xiaoming


    小明合并  把自己代码合并到review

        git checkout review
        git pull origin review
        git merge xiaoming

        git status
        git push origin review

    小强合并

        git checkout review
        git pull origin review
        git merge xiaoqiang

        git status
        git push origin review

    此时小强是最新的 小明操作

        git pull origin review



阶段四
    
    - fork

注意事项

    - 忽略某些文件    https://github.com/github/gitignore/blob/master/Python.gitignore
        vim .gitignore

    - 认证
        - https
        - ssh











面试
    1. 公司代码review怎么做?谁来做
View Code

 

git stash
git stash list
git atstus
git pull https://oyoui@gitee.com/wupeiqi/cnblogs.git master
git stash pop stash@{0}

 

线上有分支,本地只有master,本地创建分支并和线上分支同步

git checkout -b develop        #本地创建并切换develop分支
git branch                            #查看分支
git pull                                 #拉代码
git branch --set-upstream-to=origin/develop develop        #远程分支和本地分支做关联
git pull                                  #拉代码
git branch                              #再次查看分支

  

 

 

 

 

 

 

  

 

posted @ 2017-08-07 19:32  golangav  阅读(403)  评论(0编辑  收藏  举报