导航

GIT使用指南

Posted on 2021-10-13 09:10  十斗米  阅读(69)  评论(0)    收藏  举报

1、通过代理下载git源码

  • export http_proxy=http://127.0.0.1:1087
  • git config --global http.proxy http://127.0.0.1:1087
  • git config --global https.proxy http://127.0.0.1:1087
  • git config --global http.sslVerify false
  • git clone ***.git
  • git config --global --unset http.proxy

2、分支操作

  • git checkout 分支名称(切换已存在的本地分支)
  • git checkout -b 分支名称(新建并切换)
  • git checkout -b 分支名称 origin/远程分支名称(新建本地分支并拉取远程分支到本地,需要先执行git fetch origin,否则可能会因本地还没有远程分支的信息报错)
  • git fetch origin (拉取最新的远程分支列表)
  • git branch --set-upstream-to=origin/远程分支名称 本地分支名称 (建立本地分支与远程分支的关联关系,可用git branch -vv查看)
  • git remote set-url origin <新的gitlab仓库的url>(更改远程仓库地址)
  • git branch -d 本地分支名称(删除本地分支)
  • git push origin --delete 远程分支名称(删除远程分支)
  • git branch(列出所有本地分支名称)
  • git branch -a(列出所有分支名称)
  • git branch -r(列出所有远程分支名称)
  • git branch -m 新分支名称; git push origin 新分支名称(修改当前分支名称并推送到远程仓库); git push origin -d -f 老分支名称(删除老分支)
  • git branch 本地分支名称(如:test) --set-upstream-to=远程分支名称(如:origin/test) 关联本地分支和远程分支
  • git commit --amend --no-edit : 这是merge后push前,重新从暂存区更新本地分支及待push的内容

3、还原工作区

  • git checkout . 恢复工作区所有修改,暂存区不变(仅对修改文件有效)
  • git checkout -- "filename" 恢复工作区对该文件的修改,暂存区不变(仅对修改文件有效)
  • git clean -xdf 恢复工作区如初(对所有文件有效,包括新增的文件和文件夹)
  • rm 文件名 或 rm 文件夹名 -rf 删除工作区文件或文件夹

4、还原暂存区

  • git reset HEAD 恢复暂存区,工作区不变
  • git reset HEAD -- "filename" 恢复暂存区的该文件,工作区不变
  • git reset --soft HEAD^1 :恢复git commit,适合需要修改提交信息的场景,比如git commit -m "修改说明", 发现修改说明写错了,重新进行git commit -m "修改说明2"的情况
  • git reset HEAD^1 : 回退git commit, 适合没想好提交哪些文件,需要彻底回退到git add之前的状态
  • git restore --source=HEAD^1 -SW -- 文件名 :(这是将工作区和暂存区的某个指定文件恢复到上个版本,-S暂存区 -W工作区 HEAD^1或者HEAD~1都代表上个版本)
  • git reset --hard origin/远程分支 这是强制恢复工作区和暂存区,与远程分支保持一致
  • git reset --hard HEAD~1 : 这是还原工作区和暂存区到上一个版本,适用于回退merge命令但还没push之前
  • git revert -m 1 : 这是还原工作区和暂存区到上一个版本,适用于回退merge命令且已push
  • git diff --stat origin/<当前分支名>..HEAD : commit之后push之前,查看改动文件列表
  • git diff origin/<当前分支名>..HEAD -- <文件路径> : commit之后push之前,查看特定文件的完整差异
  • git diff --stat --stat-name-width=0 origin/<分支>..HEAD 让名称宽度不受限制,显示完整路径
  • git diff --stat --stat-width=1000 origin/<分支>..HEAD 指定输出的总宽度为 1000 字符,路径就不会被截断了

5、查看版本号

  • git reflog
  • git log

6、还原本地分支

  • git reset --soft 版本号 使本地分支回到指定版本
  • git reset (--mixed,默认值) 版本号 使本地分支、暂存区回到指定版本
  • git reset --hard 版本号 使本地分支、暂存区、工作区回到指定版本
  • git reset --hard origin/master 远程分支直接覆盖本地分支、暂存区、工作区

7、撤销合并

  • git merge --abort

8、设置difftool

    [diff]
    tool = bc2
    [difftool "bc2"]
    cmd = "\"D:/BeyondCompare2/BC2.exe\" \"$LOCAL\" \"$REMOTE\""
    [merge]
    tool = bc2
    [mergetool "bc2"]
    cmd = "\"D:/BeyondCompare2/BC2.exe\" \"$LOCAL\" \"$REMOTE\""
    [difftool]
    prompt = false
    [mergetool]
    prompt = false

9、git diff

  • git diff 对比暂存区、工作区的差异
  • git diff HEAD 对比版本库、工作区的差异
  • git diff --cached/staged 对比版本库、暂存区的差异

10、如何理解工作区、暂存区、版本库、本地分支、远程分支

=========================================================================================================================
|----------------------------------------------------------版本库-------------------------------------------------------------|
|---工作区--------(add)--------->|暂存区----------(commit)----------->|本地分支(HEAD)----------(push)---------->|远程分支---
|-----------------------------------------------------------------------------------------------------------------------------|

11、如何安全将开发分支合并到master分支

1、提交代码至开发分支: git add .; git commit -a -m "*"; git push origin dev;
2、切换master分支拉取最新代码: git checkout master; git pull origin master;
3、合并开发分支代码并解决冲突:git merge dev; git status;
4、提交代码至master并切换回开发分支: git push origin master; git checkout dev;

12、排除文件合并

git merge --no-commit 分支名称
git checkout HEAD -- "路径/排除文件名称"
git checkout HEAD -- "路径/排除文件名称"
git commit -m ""
git push 远程分支

13、让git忽略已提交过的文件

git update-index --skip-worktree 文件名
git update-index --no-skip-worktree 文件名