0%

Git使用技巧

Git使用技巧

基本使用

  • 初始化仓库:只需一次,再次打开时不需要再次初始化

    1
    git init
  • 添加文件:可一次添加多个文件,此时文件进入暂存区

    1
    git add 文件名
  • 提交文件:将暂存区的修改加入到分支中

    1
    git commit -m "备注信息"
  • 查看文件状态:是否修改和是否提交

    1
    git status
  • 查看具体修改内容

    1
    git diff 文件名

    查看工作区和版本库最新版本的区别

    1
    git diff HEAD -- 文件名(注意空格)
  • 查看提交日志,git log之后可按q键退出

    1
    git log

    精简版:精简提交日志

    1
    git log --pretty=oneline
  • 版本回退

    1
    git reset --hard HEAD^(几个^表示回退前几个版本,过多可以使用HEAD~n,n表示前几个版本)

    或者:该方法可以实现回退也可以前进到回退前的状态

    1
    git reset --hard commit_id 

    寻找commit_id

    1
    git reflog

    查看文件内容

    1
    cat 文件名
  • 撤销修改

    • 将文件回到最近一次git add或者git commit 的状态,这个时候的撤销指的是修改没有被添加到暂存区,即修改在工作区。
    1
    git checkout -- 文件名
    • 文件已经添加到暂存区,此时需要撤销修改,首先将文件撤回暂存区,回到工作区
    1
    git reset HEAD 文件名

    使用工作区的修改撤回,即

    1
    git checkout -- 文件名
    • 推到远程库了不支持修改撤回
  • 删除文件

    从版本库中删除

    1
    git rm 文件名

    然后再提交

    1
    git commit -m ""

    如果本地删除之后,想从版本库中获取,使用

    1
    git checkout -- 文件名

远程仓库

  • 关联远程库,此时远程库的名字为origin

    1
    git remote add origin 仓库对应的SSH
  • 本地内容推送到远程库,将当前master分支推送到远程仓库中

    仓库为空时

    1
    git push -u origin master

    仓库有内容时

    1
    git push origin master
  • 查看远程库信息

    1
    git remote -v
  • 删除远程库

    1
    git remote rm origin

    本质上是删除了本地和远程库的绑定关系,不是物理上删除了远程库。

  • 克隆远程库

    1
    git clone 仓库对应的SSH

分支管理

  • 创建并切换到分支

    1
    git checkout -b 分支名

    创建分支

    1
    git branch 分支名

    切换到分支

    1
    git checkout 分支名
  • 查看当前分支

    1
    git branch
  • 合并分支

    先切换分支

    1
    git checkout 分支

    注:更为合适的切换分支的命令 switch

    创建并切换到新分支

    1
    git switch -c 分支名

    切换到当前有的分支

    1
    git switch 已有分支名

    合并分支

    1
    git merge 需要合并的分支

    合并分支并禁用Fast forward,一般默认Fast forward模式

    1
    git merge --no-ff 需要合并的分支

    合并分支同时增加提交信息

    1
    git merge -m "提交信息"

    删除原有分支

    1
    git branch -d 分支名

    强制删除分支

    1
    git branch -D 分支名
  • 解决冲突

    当git无法自动合并分支时,使用git status可查看冲突的文件,然后手动解决冲突后再提交,可使用如下命令查看分支合并图

    1
    git log --graph
  • 分支管理策略

    master用于发布稳定版本,dev用于平时修改,团队合作的代码都上传至dev

  • Bug分支

    面前有两个分支,一个修改了一半,但没有完成,不能提交,一个是上个版本急需修改的bug,现在需要将修改一半的当前工作现场隐藏起来,等以后恢复现场后继续工作。

    1
    git stash

    查看原有存储位置

    1
    git stash list

    上一版本的bug修复之后,恢复原有分支进度

    1
    git stash pop

    将修改后的版本复制到dev版本上

    1
    git cherry-pick bug修复后版本的commit-id
  • 推送分支

    1
    git push origin 远程分支名
  • 克隆远程分支

    首先创造远程origin的分支dev

    1
    git checkout -b dev origin/dev

    此时可以正常push修改内容到dev版本

    别人的推送和本地推送产生冲突

    先抓取远程分支,然后合并,然后再推送

    1
    git pull

    若提示没有和远程库链接,先使用如下命令

    1
    git branch --set-upstream-to=origin/dev dev

    再尝试pull,然后先合并,若有冲突先解决冲突,之后再提交

  • Rebase

    把本地未push的分叉提交历史整理成直线

    1
    git rebase

标签

  • 打标签

    1
    git tag 标签名

    默认标签是打在最新一次提交中

  • 查看已有标签

    1
    git tag
  • 给历史提交打标签

    1
    git tag 标签名 历史提交commit-id
  • 查看标签信息

    1
    git show 需要查看的标签名
  • 创建自带说明的标签

    1
    git tag -a 指定标签名 -m 提交信息 commit-id
  • 删除标签

    1
    git tag -d 需要删除的标签名
  • 推送标签

    推送某一个

    1
    git push origin 标签名

    一次性推送全部

    1
    git push origin --tags
  • 删除远程标签

    先删除本地标签

    1
    git tag -d 标签名

    再删除远程标签

    1
    git push origin :refs/tags/标签名

使用Github

  先Fork,在自己仓库产生分支,然后pull request推送到原有开源仓库

从github远程仓库更新本地代码

基本思路:将远程代码下载到本地新建分支,对比区别后再合并。

1
git fetch origin master:temp

代码解释:从远程仓库分支master下载代码到本地新建分支temp

1
git diff temp

代码解释:查看temp分支代码与主分支的改变情况

1
git merge temp

代码解释:合并分支

1
git branch -d temp

代码解释:删除本地分支