美文网首页
git安装即基本操作

git安装即基本操作

作者: 锅炉工的自我修养 | 来源:发表于2020-03-17 22:48 被阅读0次

    git command line for windows

    1. 下载git客户端(提供bash 窗口)

    git GUI for windows 下载地址

    1. 安装成功之后,可以通过客户端(GUI)进行仓库的创建,或者通过git bash命令行进行操作(推荐

    git GUI使用说明

    1. 安装成功之后,右键一个目录,会出现 :git bash here选项,点击可调取git bash窗口


      git bash here
      git bash 窗口

    小结

    下载git 客户端,可以在windows下使用linux命令,是git 代码托管的第一步。

    2. 注册github账号,进行代码托管

    1. 使用github有如下优势

    • 通过github代码托管,方便进行代码的分享版本控制
    • 利用github移动客户端,可方便的查看代码
    • github拥有丰富的仓库,可以通过github检索到自己需要的资源
    • 下一步计划建立project,需要project中的成员能够使用github

    github 官网

    2. github可能需要使用vpn(外网?),我的本地网不能登录,或者很慢,移动端不受影响。

    3. 注册github账号

    image.png

    sign up 注册,sign in 登录

    4. github客户端下载(使用客户端下载repository更快)

    https://desktop.github.com/

    github 客户端

    5. 文本编辑器

      1. atom,功能强大,界面灵活,支持git

    3. git 常用的命令(git bash 支持联想功能,可tab)

    1. git 的基本配置

    git --version #显示版本号
    git config --gloabal user.name 'xxx'
    git config --global user.email 'xx@xx.com'
    git config --system 
    git config --local
    # 优先级:local > global > system
    git config --global -l
    或者 gitconfig --global --list
    
    image.png

    通过这些配置,可以通过邮件向你发送提醒。

    2. 新建git仓库

    git init git_learning # 新建仓库,取名
    cd git_learning # 进入新建仓库文件夹
    # 把当前目录作为仓库的托管目录
    git init
    ls -al # 有.git 这个隐藏文件夹
    

    3. 目录下代码托管

    pwd
    touch hello_git # 创建代码file
    vim hello_git
    # ========= 设置仓库的属性=======#
    $ git config --local user.name 'zhangyanjie'
    $ git config --local user.email '765064890@qq.com'
    $ git config --local --list
    # ======== 给需要管理的文件夹管理权限======= #
    cp ../hello_txt . # 将代码加入仓库,或者在仓库中新建代码
    git add hello_git # 添加文件到暂存区
    git status #check 是否添加到暂存区
    # 仓库中创建的文件不能正常添加到commit 命令
    git commit -m'well done'# 添加文件说明
    git log # 查看git 日志
    

    git add file1 file2 dir1 dir2 # 可同时添加多个指定文件或者目录
    git add . 添加该仓库的所有文件到暂存区

    image.png
    git add -u # 将寄存区所有文件一起
    git commit -m'add ref'
    

    小结

      1. 通过在工作目录下的修改添加到缓存区
      1. git add -u #整体添加
      1. git commit -m'msg' # 缓存区取代,提交

    4. git 目录重命名&删除

    git reset --hard # 将暂存区和工作区清零,危险
    git mv readme readme.cp # git 托管文件的重命名
    git rm readme.cp # 删除git 托管的文件
    git commit -m'move readme to readme.cp'
    git log
    

    小结

      1. 快速修改寄存器文件名
        git mv a b
        git commit -m'description'
      1. 强制清除工作区的命令:git reset --hard

    5. 查看版本演化

    git log --oneline # 简要的变更
    git log -n4 --oneline # 最近的四次变更
    git log # 当前分支的历史
    git log --all #查看所有分支的历史
    git log --all -graph # 图形化演示演化过程
    git log --all -n4  # 最近四个演化
    git log --all -n4 --graph # 最近四个演化,图形化
    git log --oneline temp # 指定某一分支演化
    git help --web log # 查看详细的参数接口
    

    6. 切换分支

    git branch -v # 查看本地有多少分支
    $ git checkout -b temp 9676b2bf0ca061d788587e3 #快速创建一个临时分支
    vim hello_gt # 修改文件
    git commit -m'add test' # 提交修改
    git commit -am'add test' #工作区的东西,直接放到版本历史库中,不推荐
    git branch -av # 查看所有分支
    

    git branch -av 查看所有分支
    git checkout -b tmp 创建一个新分支 git branch new_branch_name
    git chechout master 切换到默认的分支master

    image.png

    7. 删除branch

    gitk --all # 通过图形界面显示分支,仅windows可用
    git branch -d branch_name # 不能清除
    '''error: The branch 'temp' is not fully merged.
    If you are sure you want to delete it, run 'git branch -D temp'.'''
    git branch -D branch_name # -D强制清理
    
    

    小结

      1. 删除branch
    git branch -D branch_name # -D强制清理
    git branch -d branch_name 
    git help --web branch # 查看手册
    

    8. 配置公私钥

    ls -al ~/.ssh #查看是否存在公私钥
    $ ssh-keygen -t rsa -b 4096 -C "765064890@qq.com"  #产生公私钥,默认enter
    ls -al ~/.ssh #查看是否存在公私钥
    

    id_rsa 是私钥 id_rsa.pub是公钥
    copy ssh key to github
    头像下标——setting——SSH——new SSHkey

    image.png

    9. 远端仓库克隆到本地

    #本地协议
    /path # 哑协议
    file:///path # 智能协议
    https://path
    http://path # 平时接触到的协议
    user@git-server.com:path/to/ # ssh协议,工作中最常用的智能协议
    
    # 测试备份协议
    mkdir 666-backup
    cd 666-backup
    $ git clone --bare /d/git_learning/git_learning/.git ya.git # 通过哑协议进行文件clone
    $ git clone --bare file:///d/git_learning/git_learning/.git zhineng.git # 本地智能协议
    $ git remote add zhineng file:///d/git_learning/git_learning/666-backup/zhineng.git # 备份到本地远端
    $ git remote -v # 关联远端地址
    git branch -av
    git branch new_branch test #创建新的branch
    $ git push zhineng # 保存修改到远端
    $ git push --set-upstream zhineng test # 自动纠错提示
    
    # 没明白,try again
    $ git clone --bare file:///d/git_learning/git_learning/.git inter.git # clone 一个裸仓库
    # 和远端仓库进行关联
    git remote -v 
    # 将当前工作同步到远端
    $ git remote add intel file:///d/git_learning/git_learning/666-backup/inter.git
    # 将仓库变更push
    $ git push intel # 同步变更
    


    本地仓上传到github

    git remote -v # 查看本地远端
    # 头像——your repository——clone or download——use SSH——粘贴按钮
    $ git remote github git@github.com:Lianlizyj/hello_world.git #报错,github 远端未添加
    $ git remote add github git@github.com:Lianlizyj/hello_world.git # 新增远端站点
    git remote -v # fetch 下载,push上传
    # 建好remote
    git push github --add # print yes,没有基于远端做变更
    gitk --all
    clear
    git pull github # fentch + merge
    $ git fetch github master # 把github连接到本地
    git branch -va #  所有branch
    git checkout
    git merge gitthub/master # 报错fatal: refusing to merge unrelated histories
    git merge -h
    $ git merge  --allow-unrelated-histories github/master #使用缺省值
    $ git push github master # 上传到远端
    
    image.png

    小结

    git init # 将文件设置为git托管
    git add file or dir 
    git commit -m'msg'
    git remote add matlab git@github.com:Lianlizyj/hello_world.git
    git remote -v
    $ git fetch hello master # 将远端的 master 下载到本地
    $ gitk --all
    $ git merge --allow-unrelated-histories hello/master
    $ git push --set-upstream hello master
    

    每日总结

      1. git user 配置:
    git config user.name 'zyj'
    git config user.email 'xx@xx.com'
    
      1. 创建仓库:
    git init reps_name
    
      1. 添加文件到管理:
    git add file_name # 提交到寄存区
    git add -u #全部提交
    
      1. 查看状态:git status
      1. 提交:
    git commit -m'msg'
    git commit -am'msg' 
    
      1. 查看配置信息:
    git config --local(global、system) --list
    git config --local user.name
    
      1. 文件重命名
    git mv a b
    
      1. 版本演化
    git log # 详细信息
    git log --oneline -n4 --graph # 简要模式版本变化,图像化显示,最近4次变更
    git log --oneline master # 指定branch
    
      1. 查看帮助信息
    git help --web log
    
      1. 调用图形界面查看
    gitk
    
      1. branch
    git checkout -b temp 37be9e9 # 指针,创建branch
    git checkout master # 切换branch
    git branch -av # 查看所有branch
    
      1. 查看指针对应的信息
    git cat-file -t cffcf76994b2ba420cc467fe2363de3222536c7a # 查看指针指向的类型
    git cat-file -p cffcf76994b2ba420cc467fe2363de3222536c7a # -p  查看内容,hash 值唯一性
    
      1. 寄存区重置(慎用)
    git reset --hard
    


    修改最新的commit的msg进行修改

    git log -n1
    git commit --amend
    # 修改msg
    git log -n1
    

    修改老旧commit的msg

    git log
    $ git rebase -i HEAD~4# base 到要修改的parents
    # 修改两次
    # 使用分离头指针
    

    基于维护自己的分支,没有上传


    连续多个commit整合

    $ git log
    $ git rebase -i d9b859931baef8348
    # 选择开关 r,s
    # 填写整合的命令
    git log
    

    把间隔的commit拼凑在一起

    git log
    git rebase -i 父指针
    git rebase --continue
    $ git commit --allow-empty
    # 不会整,崩溃了
    # 从master复制,重新测试
    $ git branch -D fix_back # 删除不能处理的branch
    $ git branch test master # 复制branch
    $ git checkout test # 切换branch
    $ git rebase -i d9b859931ba# rebase重新修改命令
    # 复制需要调整的commit的指针
    # 将需要放在一起的commit放在一起
    # 开始的commit 用pick,之后的用s,将命令合并
    $ git status # 查看状态
    $ git rebase --continue# 继续进行
    git log
    

    小结

      1. branch可以基于某一副本复制粘贴
      1. rebase 命令可用来修改commit的msg,‘r’。可用来整合命令‘pick+s’
      1. 按照提示信息进行报错操作

    如何比较暂存区的文件和当前分支的commit进行比较

    git status
    vi index.html
    git add index.html
    $ git diff --cached # 查看HEAD和缓存区的区别
    vi index.html
    git add index.html
    $ git diff --cached # 查看HEAD和缓存区的区别
    $ git commit -m'Add first git commond'
    

    小结

      1. html,架构中添加信息
      1. git diff --cached# 比较HEAD和暂存区的区别

    比较工作区和暂存区的区别

    vim index.html
    $ git status
    $ vim styles/style.css
    git diff # 比较工作区和暂存区的区别
    vi readme.md
    git diff -- readme.md # 查看具体文件的差别,可以多个
    

    小结

      1. 调整html背景颜色,调整字体的颜色和大小
      1. 比较工作区和寄存区的区别
    git diff -- a b
    

    让暂存区恢复成HEAD

    git reset HEAD # 删除暂存区的改变
    git status
    git diff --cached # 对比工作区和暂存区,发现没有差别
    

    小结

      1. 删除暂存区,恢复成工作
        区的内容
    git reset HEAD
    

    将工作区的文件恢复成暂存区的状态。

    工作区——暂存区——commit

    vi  index.html
    git add index.html
    git diff # 比较工作区和暂存区的区别
    # 取消工作路径性的变更,checkout
    # 改变暂存区的内容,用reset
    $ git checkout -- index.html#危险命令,修改不保存
    $ git diff index.html
    

    小结

      1. 将工作区用暂存区覆盖
    git checkout -- file_name
    

    取消暂存区的内容,部分文件想恢复成HEAD

    $ git status
    $ git reset HEAD -- styles/style.css # 将寄存区指定文件恢复成HEAD
    

    小结

      1. 将暂存区恢复成HEAD
    git reset HEAD -- filename1 filename2
    

    消除最近几次的提交(回退到之前的状态)

    gitk --all
    # 将某一分支恢复成某commit提交的状态
    git branch -av
    git log --oneline
    $ git reset --hard 27147fe # 恢复到指定的commit(工作区和暂存区)
    gitk --all
    

    小结

      1. 恢复到指定的commit(工作区和暂存区)
    git reset --hard  27147fe
    

    commit 文件之间的差别

    git log -n8 --all --graph
    git diff test master  -- readme.cp # 对两个分支指向的最近的commit进行比较
    $ git diff HEAD b592328377d3 -- index.html
    

    小结

      1. 对分支进行比较
    git diff master test -- index.html
    

    正确的删除文件的方法

    rm readme
    git rm readme
    git reset --hard HEAD
    # equal to 
    git rm filename
    

    小结

      1. 删除文件 git rm filename
      1. 回复到指定状态
    git reset --hard HEAD
    

    紧急加塞的处理办法

    手头的工作先保存

    vi index.html
    git status
    git stash # 把当前工作保存,不影响当前工作区。
    git status
    git stash apply # 将压栈的内容取出,指针保存一直用
    $ git stash list # 显示原来工作所处的位置
    $ git stash pop # 显示错误,已被覆盖
    git stash
    git stash pop # 不保存当前工作的指针地址
    

    小结

      1. 清除当前工作台,将当前工作内容封装
    git stash
    
      1. 进行紧急工作
      1. 紧急工作完成继续当前工作
    git stash apply # 记住之前工作的想在在哪里,这个地方就停放当前的工作,可重复是使用
    git stash pop # 随机寻找一个地方,存放,下次遇到同样的问题,不一定发放在相同的地方
    

    指定不需要git管理的文件

    mkdir doc
    echo 'hi'> doc/readhim
    git status
    vim .gitignore #  文件黑名单
    rm -r doc
    echo 'i am doc' > doc
    git status
    

    小结

      1. .gitignore文件,添加管控文件黑名单(不管理)


    多人协作修改

     git clone git@github.com:Lianlizyj/hello_world.git git_clone
     git config --add --local user.name 'ZYJ'
     git config --add --local user.email  'lianlizyj@mail.dlut.edu.cn'
     git config  --local --list
     git config  --local -l
    vi .git/config # 修改配置文件
     git branch -av
     git checkout -b feture/add_git_command origin/feature/add_git_command # 基于远端分支建立新分支
    vi README.md #修改readme.md
     git add -u # 添加到暂存区
     git status
     git log
     git push origin HEAD # 上传修改
     git config --local -l
     git remote -v
     git fetch hello
    git branch -av
    $ git checkout -b feature/add_git_command hello/feature/add_git_command
    $ git branch -av
    
    # 切换用户
    vim readme.md
    git add -u
    git commit -m'some people are in trouble'
    $ git push origin HEAD # trouble 2 push
    # 不起作用,两人在同一个branch下,不能修改相同文件,会引发冲突,解决办法是讲冲突的地方删除
    
    # 假如两人修改的是不同的文件,fast-forwards的解决方案如下
    $ git branch -av
    vi readme.md
    $ git push hello # 报错,not-fast-forward
    git fetch hello
    $ git merge hello/feature/add_git_command
    # 没看懂
    

    小结

    修改文件要新建branch,然后再branch上连接到本地修改,然后提交。


    相同分支修改不同部分


    快速找到感兴趣的项目

      1. git 最好 学习 资料 in:readme stars:>1000
      1. blog easily start in:readme stars:>5000
      1. 'after_script:'+'stage:deploy' filename:.gitlab-ci.yml

    搭建一个简洁的blog

      1. fork
      1. config
      1. 添加到post

    保证开源项目的质量

      1. fork 项目到本地
    • 2.本地修改
      1. pull request 到源工程
      1. merge 是紫色的,其他是红色的
      1. code review CI检查

    组织类型的仓库

    相关文章

      网友评论

          本文标题:git安装即基本操作

          本文链接:https://www.haomeiwen.com/subject/wpymehtx.html