git 常用命令

633 阅读9分钟

git 常用命令

注意:

  1. 下面出现的 origin 都是代表远程主机名

日常代码提交

  1. 暂存所有更改 git add .
  2. 暂存某个文件 git add aaa/bbb.js
  3. 提交已暂存的文件 git commit -m "注释"
  4. 推送到远程仓库 git push

日常代码拉取

  1. 拉取远程代码 git pull
  2. 把当前的修改隐藏 git stash
  3. 弹出最新储藏隐藏 git stash pop
  4. 从远程仓库获取最新代码和分支 git fetch origin
  5. 查看本地分支和远程分支的差异 git diff master origin/master
  6. 将远程分支的代码合并到本地分支 git merge origin/master

日常分支使用

  1. 创建一个叫做 feature_x 的分支,并切换过去:git checkout -b feature_x
  2. 切换回主分支:git checkout master
  3. 再把新建的分支删掉:git branch -d feature_x
  4. 将分支推送到远端仓库:git push origin <branch>

分支指定 commit 合并

  1. git cherry-pick <commit-hash> 其中 <commit-hash> 是要被应用的提交的 SHA-1 值,可以是一个也可以是多个用空格分隔
  2. 查看当前分支的提交历史 git log --oneline
  3. 选择性地应用这些提交 git cherry-pick a1b2c3 d4e5f6 上述命令将选择性地将 a1b2c3 和 d4e5f6 两个提交应用到当前分支中
  4. 如果只想选择最近的几个提交进行应用,可以使用 git cherry-pick HEAD~3..HEAD, 例如,要选择最近的 3 个提交进行应用
  5. 意有可能出现冲突需要手动解决

日常代码回滚

  1. 从本地 HEAD 区 获取某个文件替换本地修改 git checkout -- <filename>
  2. 软回滚 git reset --soft HEAD^ 回撤 commit 操作,写的代码仍然保留
  3. 混合回滚 git reset --mixed HEAD^ 回撤 commit, add 操作,写的代码仍然保留
  4. 强回滚 git reset --hard HEAD^ 回撤 commit, add 操作,同时回撤改动的代码
  5. HEAD^ 是上一个版本的意思,也可以写成 HEAD~1,进行了 2 次 commit,都想撤回就可以使用 HEAD~2

从远程仓库回滚代码到本地/远程代码覆盖本地代码

  1. 更新本地仓库的所用信息 git fetch --all
  2. 从远程分支强回滚 git reset --hard origin/master
  3. 推送到远程分支 git pull origin master

远程仓库代码的回滚

  1. 方法一:使用 git revert 命令,使用 git revert 命令可以在保留历史记录的同时,将当前提交撤销掉,并创建一个新的提交,将撤销的更改提交到远程仓库
  2. git revert <commit-id><commit-id> 是要撤销的提交的 SHA-1 标识符,
    如果要一次性撤销多个提交,可以指定一个范围 git revert <start-commit-id>..<end-commit-id>
    这里的 <start-commit-id> 是要撤销的第一个提交的 SHA-1 标识符,而 <end-commit-id> 是要撤销的最后一个提交的 SHA-1 标识符(不包括该提交)。
  3. 方法二:使用 git reset 命令,使用 git reset 命令可以将当前分支的 HEAD 指针移动到以前的提交或重置到一个空的提交。这将删除提交历史记录中指定提交和它之后的所有提交。
  4. 首先强回滚:git reset --hard <commit-id>
  5. 再强推送到远程仓库:git push --force origin <branch-name>
  6. 方法二慎重使用,很有可能覆盖其他人的代码!

修改 commit 的信息

  1. 运行命令 git commit --amend 进入 vim 编辑模式
  2. 按 i 键进入插入模式
  3. 修改完按 esc 键退出插入模式
  4. 输入 :wq 保存并退出,或者输入 :wq! 强制保存并退出
  5. 不保存退出 :q,不保存强制退出 :q!
  6. 放弃所有修改,重新编辑 :e!
  7. 如果之前的 commit 已经推送到了远程分支,那么需要使用 git push --force 命令推送修改后的 commit,
    因为修改后的 commit hash 值已经改变了,需要强制覆盖已经推送的修改,
    需要注意的是,修改了已经推送到远程仓库的提交可能会导致其他人的代码库出现错误,因此仅在使用私有分支时使用该命令

分支

  1. 查看所有分支 git branch -a
  2. 新建分支 git branch 分支名
  3. 切换分支 git checkout 分支名
  4. 推送分支 git push origin 本地分支名
  5. 新建分支并切换到新建分支 git checkout -b 分支名
  6. 根据[远程分支]新建[本地分支],并切换到这个[本地分支] git checkout -b 本地分支名 origin/远程分支名
  7. 查看分支的最后一次提交 git branch -v
  8. 查看本地分支对应的远程分支 git branch -vv
  9. 查看所有未合并工作的分支 git branch --no-merged
  10. 查看哪些分支已经合并到当前分支 git branch --merged
  11. 合并分支 git merge 分支名
  12. 删除分支 git branch -d 分支名
  13. 强制删除分支 git branch -D 分支名
  14. 删除远程分支 git push origin --delete 远程分支名
  15. 本地分支与远程分支关联 git branch --set-upstream-to=origin/远程分支名 本地分支名
    如果当前位于该分支,则可以省略分支名称:git branch --set-upstream-to=origin/远程分支名
    或可以使用 -u 选项将本地分支与远程分支关联: git branch -u origin/远程分支名 本地分支名

拉取

  1. 拉取远程代码到本地并合并 git pull
    git pull 其实就是 git fetchgit merge FETCH_HEAD 的简写
  2. git pull origin master:localBranch 将远程主机 origin 的 master 分支拉取过来,与本地的 localBranch 分支合并,
    如果远程分支是与当前分支合并,则冒号后面的部分可以省略 git pull origin master

推送

  1. 本地代码推送到远程并合并 git push
  2. git push 远程主机名 本地分支名:远程分支名
    如果本地分支名与远程分支名相同,则可以省略 :远程分支名 写成 git push 远程主机名 本地分支名
  3. git push --force origin master 如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数
  4. git push origin --delete master 删除主机的分支可以使用 --delete 参数,此命令表示删除 origin 主机的 master 分支

更改

  1. 更改:就是未被 git add 也未被 git commit 的修改
  2. git checkout 查看有哪些更改
  3. git add . 暂存所有更改
  4. git reset HEAD . 取消所有更改
  5. git checkout . 放弃所有更改
  6. 取消某个文件更改 git reset HEAD 文件路径 例如:git reset HEAD src/views/index.vue
  7. 放弃某个文件更改 git checkout 文件路径 例如:git checkout src/views/index.vue

变基/rebase

  1. Git 中的变基(rebase)是一个将一个分支上的提交应用到另一个分支上的操作。
  2. 它与合并(merge)不同,合并是将两个分支的更改内容合并为一个新的提交,
  3. 而变基则是将当前分支的更改内容应用到另一个分支上,从而使得分支的提交历史形成一条直线。
  4. 使用 git rebase 可以将当前分支上的提交历史放置在指定分支(通常为主干分支)的最新提交后面。这可以使得历史记录更加清晰,同时也可以减少合并分支时可能出现的冲突。

rebase 用法

  1. 切换到需要进行变基的分支上 git checkout feature
  2. 进行变基 git rebase master
  3. 在执行该命令之后,Git 会将 feature 分支的基础更改为指定分支 master,然后将当前分支的更改应用到指定分支上,并形成一条新的提交历史。
  4. 如果需要,可以执行 git checkout 命令切换到目标分支,并使用 git merge 将变基后的分支合并到目标分支上,以完成变基操作。
  5. 注意,变基可能会产生冲突,需要手动解决冲突后再继续进行变基操作。

rebase 总结

  1. 变基是 Git 中一个强大的工具,可以使分支的提交历史变得更加清晰,同时也可以减少合并分支时可能出现的冲突。
  2. 但是,在使用变基时需要小心处理,避免对代码库造成不可逆的影响。
  3. 因此,建议在进行变基操作前先备份代码或者创建并切换到新的分支上进行操作。

标签/tag

  1. 在 Git 中,一个 tag 就是一个指向一个 Git 对象的指针,通常是一个 commit 对象。
  2. tag 可以用来标记一些重要的或有意义的提交,例如发布版本号、里程碑版本等。
  3. tag 可以让开发者快速定位到特定的提交,以便处理问题、修复错误或回退到旧版本等。

tag 用法

  1. 创建 tag git tag v1.0 创建一个名为 v1.0 的 tag
  2. 默认情况下,tag 创建在当前分支的最新 commit 上。
    如果需要指定 commit,可以使用 -a 参数创建一个附注 tag,并使用 -m 参数添加 tag 的说明信息:
    git tag -a v1.0 -m "Release version 1.0" <commit-hash>
  3. 列出 tag git tag
  4. 查看 tag git show v1.0
  5. 推送 tag git push origin v1.0
  6. 一次性推送所有 tag git push --tags
  7. 删除 tag git tag -d v1.0
  8. 删除远程 tag git push origin --delete v1.0

存储

  1. git stash 储藏:把当前的修改存储并隐藏起来, 此时 git status 的结果是 clean。
    可以通过使用 git stash save "注释" 可以添加一些注释
  2. git stash list 查看所有 stash(储藏)
  3. git stash show 显示最新储藏的内容具体是什么
  4. git stash show stash@{指定储藏的id} 显示指定储藏的内容具体是什么,使用方法如 git stash show stash@{0}
  5. git stash apply 应用最新储藏
  6. git stash apply stash@{指定储藏的id} 应用指定储藏,使用方法如 git stash apply stash@{0}
  7. git stash pop 弹出最新储藏
  8. git stash pop stash@{指定储藏的id} 弹出指定储藏,使用方法如 git stash pop stash@{0}
  9. git stash drop 删除最新储藏
  10. git stash drop stash@{指定储藏的id} 删除指定储藏,使用方法如 git stash pop stash@{0}
  11. git stash clear 删除所有的储藏
  12. git stash pop 命令会在 stash 应用之后丢弃(默认情况下指的是最顶部的)stash,
    git stash apply 会将其保留在存储列表中,以备日后重用(或者您可以在之后使用 git stash drop 命令移除此 stash)。
    除非 git stash pop 之后存在冲突,在这种情况下,它将不会删除该 stash,
    而使其行为与 git stash apply 的命令完全相同。
    当然,我们也可以使用另一种方式来实现 git stash pop,那就是:git stash apply && git stash drop

相关