git基础教程

git基础教程

  • 本地文件提交暂存删除

  • git add <file>

    • 将本地修改添加到暂存区。可以使用git add .来添加所有,但不建议使用.
  • git checkout -- <file>

    • 丢弃工作区file文件的改动,执行该操作后,无法找回
  • git reset HEAD <file>

    • 将暂存区的文件撤回到工作区
  • git commit

    • 将暂存区的文件提交到本地的版本库
  • git reset --soft HEAD^

    • 将上一次提交撤回到暂存区。不加--soft直接删除
  • git stash

    • 将工作区和暂存区的改动封存
  • git stash list

    • 查看所有stash封存的改动和顺序
  • git stash show stash@{num}

    • 查看某次封存具体修改的文件
  • git stash pop

    • 将修改由封存状态解封到工作区(不论之前封存时修改是工作区还是暂存区)
  • git stash pop --index

    • 将修改由封存状态解封到封存前的状态(封存前在暂存区,解封后也在暂存区)
  • git stash drop stash@{num}

    • 移除某次暂存
  • git stash clear

    • 清楚暂存
  • 分支相关操作

  • git branch

    • 查看当前所在分支
  • git branch newImage

    • 创建分支
  • git checkout newImage

    • 切换分支
  • git checkout -b newImage

    • 创建并切换分支
  • git merge Image

    • Image分支合并到当前分支,并保存Image上所有提交记录
  • git rebase Image

    • Image分支合并到当前分支,不保存Image上的提交记录
  • git branch -f Image1 Image2

    • 将分支Image1移动到Image2处,如果Image1不存在,则创建Image1
  • git checkout Image~num

    • 移动HEAD指针到Imagenum次父提交,Image可以用HEAD替换;~num可以用^,替换,一个^相当于num=1
  • 版本回退

  • git reset Image~num

    • 将当前分支回退Image的第num次父提交,Image可以使用HEAD替换
  • git revert HEAD~num

    • 添加一次提交,该提交删掉HEAD~num次的修改(远程仓库)
  • 整理提交记录

  • git cherry-pick Image1 Image2 ...

    • Image1Image2…等按序合并到当前分支的后侧
  • git rebase Image1

    • Image1合并到当前分支的后侧
  • git rebase -i HEAD~num

    • 交互式rebase,效果比非交互式好用
  • 其他

  • git diff

    • 查看本次提交和上次提交区别
  • git log --oneline

    • 显示提交记录
  • git log --graph

    • 查看分支合并图
  • git reflog

    • 获取执行过的命令
  • git status

    • 查看当前工作区和暂存区的修改情况
  • git tag <tag_name> Image

    • Image打上tag_name标签,如果不写Image,默认当前HEAD指定的提交记录
  • git describe <ref>

    • ref:可以识别为提交记录的引用。如果不指定ref,则默认为当前HEAD指定的提交记录。
    • result: <tag>_<numcommits>_g<hash>
      • tag:离ref最近的标签;
      • numcommits:这个reftag相差多少个提交;
      • hash:给定ref表示的提交记录哈希值的前几位
  • 线上操作相关

  • git clone url

    • 克隆远程仓库
  • git remote add origin url

    • 关联远程仓库
  • git fetch [origin] [place]

    • 将远程分支更新到本地远程分支,place仅有一个分支时,表示将远程place分支对应的本次远程分支更新,但本地分支不更新;place有两个参数时,格式为source:dest,source为本地分支,dest为远程分支;如果本地分支不存在,则会创建,然后更新。如果省略source,则创建dest分支。
  • git pull

    • 先将远程分支的修改下载到本地,在将本地远程分支合并到当前开发分支。该命令相当于git fetch + git merge Image;一般根据需求,使用使用git fetch + git rebase(相当于git pull --rebase)或者git fetch + git cherry-pick 替换
  • git push [origin] [place]

    • 将本地修改推送到远程仓库。originplcae一起使用,当place仅有一个分支时,表示将本地该分支推送到远程对应分支上,并更新本地对应的远程分支。place有两个参数时,格式为source:dest,source为本地分支,dest为远程分支。如果省略dest,则将本地source分支推送到远程main如果省略source,写法必须:dest,表示删除远程dest分支
    • 注意:source可以使用^和~
  • git checkout -b Image origin/Image

    • 创建本地Image分支并关联到远程Image分支,该方法可以使用git branch -u origin/Image Image替换
  • 常规git开发流程

    • 使用git fetch将远程修改拉取到本地;
    • 查看本地和远程的修改是否存在冲突;
    • 如果存在冲突,修改冲突,然后将远程修改合并到本地修改(看公司需求使用git rebase还是使用git merge,前者合并是线性的,整个项目提交记录清晰;后者提交是非线性的,但会记录所有提交记录。)
    • 合并冲突后,使用git push将本地修改提交。
  • 常见问题解决方案:

    1. 需要在当前分支的前一个分支上做一些修改
      • 使用git rebase -i将提交重新排序,将需要修改的提交记录挪到最前面;也可以使用git cherry-pick处理这一步;
      • 使用git commit --amend进行一些小修改;
      • 使用git rebase -i将分支调回原来的顺序;
      • 将当前开发分支移到修改的最前端。
    2. 本地开发已经执行git commit命令,但远程仓库中有同样的修改,无法执行git push(未按照常规git开发流程进行开发)
      • 使用git stash命令将本地修改保存;
    3. 本地在main分支上开发,提交。执行git push时被拒绝(远程main分支被锁定)
      • 新建分支,用新分支进行提交,并申请pull request
      • 将本地main分支reset和远程仓库保持一致。
  • 模拟多用户开发

    • 分别将仓库拷贝到本地不同目录,在不同目录开发,然后上传到远程仓库。
参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值