zoukankan      html  css  js  c++  java
  • git 使用

    1. 初始化

    用户
    $ git config --global user.email "your email"
    $ git config –-global user.name "your name"

    2. 秘钥

    查看是否存在秘钥
    $ ls -al ~/.ssh

    id_rsa 是私钥,id_rsa.pub 是公钥

    id_rsa.pub 是你需要上传到 github 的 SSH KEY

    生成秘钥
    $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

    3. 本地库和远程库

    已创建有远程库,未创建本地库
    $ git clone "your repo"
    已创建本地库,未创建远程库
    1. 新建文件夹
    $ mkdir test 
                    
    2. 初始化 git 
    $ git init 
        
    3. 移除原有的 origin                    
    $ git remote rm origin
        
    4. 添加你的远程库(SSH地址)
    $ git remote add origin "your remote repo"
        
    5. 更新本地库
    $ git pull
     
    6. 首次推送与远程库建立关联,以后直接 git push 就可以
    $ git push --set-upstream origin master 

    4. 分支操作

    查看、新建、切换、删除分支
    查看远程的分支名
    $ git remote -r
    查看当前所在分支
    $ git branch
        
    查看所有分支
    $ git branch -a
    
    查看远程库信息
    $ git remote -v
        
    新建分支
    $ git branch "new branch"
    
    切换分支
    $ git checkout "target branch"
        
    新建并切换到新分支
    $ git checkout -b "new branch"
    
    新建分支并和远程分支进行关联
    $ git checkout -b "new branch" origin/"new branch"
    
    合并分支到当前所处分支上
    $ git merge "your branch"
        
    删除分支
    $ git branch -d "your branch"
        
    强制删除未 commit 的分支
    $ git branch -D "your branch"

    5. 正常流程

    查看当前工作区状态
    $ git status
        
    添加单个文件到暂存区
    $ git add xxx.txt
        
    一次性添加所有改动文件
    $ git add .
        
    提交文件到本地版本库
    $ git commit -m "I add a file."
        
    推送本地更新到远程版本库
    $ git push
        
    本地库关联远程库
    $ git push --set-upstream origin master

    6. 对比文件

    工作区和暂存区之间差异对比
    $ git diff "xxx.txt"
    
    暂存区和版本库之间差异对比
    $ git diff --cached(--staged) "xxx.txt"
    
    工作区和版本库之间差异对比
    $ git diff master

    7. 查看历史提交记录

    $ git log

    8. 版本回退

    HEAD 是最新版本,HEAD^ 是上一个版本
    $ git reset --hard HEAD^ 
    
    回退到指定id,git log 查看版本id,版本id不用全部输入,取头几位就可以
    $ git reset –hard cb926e7e

    9. 撤销工作区修改

    使用版本库中的文件或者暂存区中的文件替换工作区的文件
    让文件回到最近一次 git commit 或 git add 时的状态
    $ git checkout -- "xxx.txt"

    10. 删除文件

    删除工作区中的文件
    $ rm "xxx.txt"
    
    提交删除操作到暂存区
    $ git rm "xxx.txt"
    
    提交删除到版本库,在版本库中彻底删除文件
    $ git commit -m "remove file"

    11. 分支管理策略

    在实际开发中,我们应该按照几个基本原则进行分支管理:

    • master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活
    • developer分支用来干活,也就是说,developer分支是不稳定的,到某个时候,比如1.0版本发布时,再把developer分支合并到master上,在master分支发布1.0版本
    • 你和你的小伙伴们每个人都在developer分支上干活,每个人都有自己的分支,时不时地往developer分支上合并就可以了

    所以,团队合作的分支看起来就像这样:

    12. 储藏工作现场

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

    储存工作现场
    $ git stash
    
    工作现场列表
    $ git stash list
    
    恢复但不删除储藏栈的工作现场
    $ git stash apply
    
    恢复并删除储藏栈中的工作现场
    $ git stash pop

    13. 多人协作工作模式

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

    14. 创建 .gitignore

    在 git 工作区根目录下创建 .gitignore 文件,把要忽略的文件名写进去,git 就会自动忽略这些文件

    15. 创建别名

    status 创建别名 st 
    $ git config --global alias.st status

    16. git 配置文件

    配置文件放在 ~/.gitconfig

    17. git fetch 和 git pul 区别

    要讲清楚这两个命令的区别,就需要从git clone开始讲起

    假设你在github上有一个远程仓库地址是xxx,然后你从远程仓库clone到本地仓库

    $ git clone xxx

    执行完此命令后,Git会自动为你将远程仓库命名为origin,并下载其中所有的数据到本地,在本地建立所有远程存在的分支,并且命名为origin/xxx,例如远程分支有master、developer,那么本地就会建立origin/master分支、origin/developer分支,并且它们都是处于remotes目录下,是隐藏的。使用命令git branch -a就可以看到隐藏目录remotes,结果显示为remotes/origin/master以及remotes/origin/developer。接着,Git会继续建立一个属于你的本地master和developer分支,位置和远程origin/master、origin/developer分支处于相同的位置,你就可以开始工作了。
    这样,我们在本地仓库的本地分支和远程分支就都有了,并且始于同一位置。

    如果其他人向github上xxx推送了他们的更新,那么服务器上的相应分支就会向前推进。如果在本地的相应分支进行了commit提交到本地代码库,那么本地的master或者developer分支也会向前推进,不过只要你不和服务器通信数据,那么本地的remotes/origin/master(developer)指针仍然会在原地不动。

    注意这里的本地分支master已经前移,服务器上的master分支也已经前移,所以可以说本地的remotes/origin/master是过时的。

    $ git fetch origin

    运行git fetch origin命令后,会同步远程服务器上的数据到本地,该命令首先找到origin是哪个服务器,从上面获取你未曾拥有的数据,更新到你的本地remotes/origin/master(developer),然后把remotes/origin/master(developer)的指针移动到最新的位置上:

    这就是git fetch origin的作用

    比较本地 master 分支和 origin/master 分支有什么区别
    $ git log master..origin/master 
    
    切换到本地 master 分支下
    $ git checkout master 
    
    合并 origin/master 分支到本地 master 分支
    $ git merge origin master
    • git pull 相当于 git fetch origin 和 git merge
    • git fetch 相当于先将服务器上的 origin 分支更新到本地 remotes/origin 分支上,然后手动去 merge 合并 origin 分支到本地分支上

    这就是 git pull 和 git fetch 的区别

    18. git 删除未跟踪文件

    删除未跟踪文件
    $ git clean -f
    
    删除未跟踪文件目录
    $ git clean -fd
    
    正式删除文件以前先查看哪些会被删除
    $ git clean -nf
    $ git clean -nfd

    19. 在本地删除远程已经没有的分支

    $ git fetch -p origin

    20. 重命名本地分支

    $ git branch -m old-local-branch-name new-local-branch-name

    21. 删除远程分支

    $ git push origin :old-remote-branch-name

    22. 本地分支与远程分支建立关联(远程分支不存在也可以)

    切换到本地分支
    $ git checkout local-branch
    
    push 到想要建立关联的远程分支
    $ git push -u origin/remote-branch

    23. 重新跟踪远程文件

    先删除远程文件
    $ git remote rm origin
    
    跟踪新远程文件
    $ git remote add origin https://xxx.git
    
    或者合并成一条命令
    $ git remote origin set-url https://xxx.git
  • 相关阅读:
    mysql错误:java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone.
    MyBatis中id回填的两种方式
    springboot项目打war包流程
    Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include springcloudstarterloadbalancer?
    idea thymeleaf页面变量报错解决
    项目编码流程
    逻辑删除
    mysql 连接url中需要添加useUnicode=true&characterEncoding=UTF8
    【转】[wp7应用内截图]Taking a screenshot from within a Silverlight #WP7 application
    Wp7客户端与Webservice的数据传输,json的序列化与反序列化
  • 原文地址:https://www.cnblogs.com/chihuobao/p/15303413.html
Copyright © 2011-2022 走看看