git使用

发布于:2024-04-08 ⋅ 阅读:(22) ⋅ 点赞:(0)
  1. git的特点
    1. 最优的存储能力
    2. 非凡的性能
    3. 开源的
    4. 很容易做备份
    5. 支持离线操作
    6. 很容易定制工作流程
  2. 配置user信息
    1. 配置user.name和user.email
    2. git config --global user.name ‘bxz’
    3. git config --global user.email ‘lpyu2020@126.com’
  3. config的三个作用域
    1. git config --local
      1. local只对某个仓库有效
    2. git config --global
      1. global对当前用户所有仓库有效
    3. git config --system
      1. system对系统所有登录的用户有效
    4. 显示config的配置,加–list
      1. git config --list --local
      2. git config --list --global
      3. git config --list --system
  4. 建git仓库
    1. 把已有的项目代码纳入git管理
      1. cd项目代码所在的文件夹
      2. git init
    2. 新建的项目直接用git管理
      1. cd某个文件夹
      2. git init your_project 会在当前路径下创建和项目名称同名的文件夹
      3. cd your_project
    3. 提交
      1. 创建一个文件readme
      2. git add readme
      3. git status
      4. git commit -m’add readme’
      5. git add -u
        1. 会将所有已跟踪文件中的修改和删除操作添加到暂存区
  5. git命令
    1. git mv readme readme.md 修改文件名称
      1. mv readme readme.md
        1. git add readme.md
        2. git rm readme
    2. git reset --hard
      1. 清理掉add但是没有commit的文件
    3. git log --oneline
      1. git提交的文件
    4. git log -n4 --oneline
      1. git提交的文件中最近的四个
    5. git branch -v
      1. 看git有多少个分支
    6. git checkout -b temp
      1. 创建一个分支
    7. git log --all --graph
      1. 分支演进历史,图形化界面
    8. git log --oneline --all
      1. 所有的分支演进历史
    9. git log --oneline --all -n4
      1. 最近分支的四个commit演进历史
    10. git log --oneline --all -n4 --graph
      1. 最近分支的四个commit演进历史,带图形化界面的
    11. gitk
      1. 图形化git管理工具
    12. git checkout master
      1. 切换分支
    13. git branch -av
      1. 查看当前在哪个分支下面
    14. 添加文件
      1. mkdir doc
      2. cd doc
      3. echo “hello,world” > study.txt
      4. git add study.txt
      5. git status
    15. git branch -D temp
      1. 分支删除
    16. git commit --amend
      1. 修改当前分支最近一次commit的message
    17. git log -1
      1. 查看当前分支所有提交的历史记录
    18. git rebase -i b02c7907c33d300f2bbc39de2af43a806bdfa1df
      1. 修改 Add refering project
      2. git rebase -i 父亲commitId
      3. r 是 reword,修改commit的message信息,:wq!保存之后,进入第二个界面,第二个界面修改message,然后保存,查询当前分支发现commitId发生了改变,文件内容没变,只是修改了message
    19. git diff --cached
      1. add之后的文件,暂存区和HEAD的差异
    20. git commit -m’234’
    21. git diff – readme
      1. 某个文件的暂存区和HEAD的差异
    22. git reset HEAD
      1. 把暂存区的所有变更文件都取消
    23. git diff --cached
      1. 是否有数据,没有的话,就是暂存区和HEAD一致了
    24. git checkout – readme
      1. 工作区修改的文件变为暂存区的文件,工作区就是修改了但是没有add
    25. git reset HEAD – readme
      1. 只是恢复一个文件,从暂存区的文件恢复和HEAD一样的
    26. git reset --hard 5bf3
      1. 提交的commit不要了,恢复成5bf3的commit数据了
    27. git diff temp master
      1. 比较两个分支的差异
    28. git diff temp master – readme
      1. 查看两个分支中readme文件的差异
    29. rm readme
      1. 删除工作区的readme文件
    30. git rm readme
      1. 当前commit删除暂存区的readme文件
    31. git stash
      1. 把目前所做的改变保存起来,并回复到改变之前
    32. git stash apply
      1. 把保存的改变恢复过来,且保存的改变还在stash中
    33. git stash pop
      1. 把保存的改变恢复回来,且保存的改变已经被删除,stash中没有了改变的东西
    34. mkdir doc echo ‘hi’ > doc/readme vi .gitignore doc
      1. 加入到暂存区之前的操作,就是add之前的操作,编辑.gitignore文件,补充doc。
      2. 则doc文件夹中的文件都不会交给git管理,doc则.doc和doc文件夹都不会给git管理,
      3. doc/则只是doc文件夹中的不交给git管理
  6. 常用的传输协议
    1. 在这里插入图片描述

    2. 哑协议与智能协议

      1. 直观区别:哑协议传输进度不可见,智能协议传输可见
      2. 传输速度:智能协议比哑协议传输速度快
    3. 哑协议

      1. git clone --bare E:\gitWorkspace\testGitProject.git ya.git
      2. 哑协议没有进度条,克隆出不带工作区的.git文件然后命名为ya.git
    4. 智能协议

      1. git clone --bare file://E:\gitWorkspace\testGitProject.git zhinneg.git
      2. 智能协议,带进度条的
    5. 同步

      1. git remote add zhinneg file://E:\gitWorkspace\testGitProject\zhinneg.git 新加远端
      2. git push --set-upstream zhinneg bxz 把变更同步到远端
      3. git remove -v
      4. git remote add github git@github.com:gitstudy/zhinneg.git
      5. git push github --all
      6. git fetch github master
      7. git push github master
        1. 把本地的matser分支同步到远程github分支
      8. ssh-keygen -t rsa -b 4096 -C “lpyu2013@163.com”
        1. 生成ssh,拿到公钥
      9. push代码时发生冲突但是不是同一个文件,先fetch再直接merge,同一个文件但是区域不一样也这样
      10. 如果是同一区域的话,需要先pull,再打开文件处理冲突然后再commit,push
      11. 如果修改了文件名,另一个修改了文件,可以直接pull就可以了
      12. 当两个人都修改了文件名时,pull会有冲突,会把两个文件都pull下来,需要先git rm index.html,然后再把想要的文件git add index1.tml添加上最后把index2删除
      13. git rm index.html git add index1.html git rm index2.html
      14. 禁止向集成分支执行push -f操作
        1. git reset --hard b3f3
        2. git push -f origin feature/add.git
        3. 如果把指针指向之前的某一个提交,然后强制push,会把中间的所有提交都down掉危害很大
    6. 建立组织

      1. setting中点击Your organizations
      2. 点击new organization,新建组织
      3. 新建完组织之后,加入人员
      4. 某个没有权限的人员,想要访问某个仓库,可以在这里请求加入该仓库
      5. create new repository 为组织团队创建仓库
      6. 为组织添加团队:Collaborators and teams
      7. 点击insights然后点击network查看特性分支情况
    7. pull requests

      1. setting中设置
      2. rebase是在一条主干上的分支的commit,各个分支分别提交,
      3. squash是把几个commit合成一个commit再提交
    8. issue

      1. setting的feature的issues开启issues使用
      2. 可以给issue提交模板set up templates
    9. project管理issue

      1. 点击project,create project
      2. to do建立需要处理的问题
      3. 通过拖拉方式从todo到in progress到needs review到reviewer approved
    10. 项目内部code review

      1. 在repo中点击setting,点击branches
      2. branch name pattern
      3. require a pull request before merging
      4. require approvals设置meger的时候会通知谁
      5. 提交merger请求时,右边会有reviewers,选择review人员,对应的人员会有邮件收到
      6. 管理员可以直接和代码