Git——命令集合

发布于:2024-08-15 ⋅ 阅读:(68) ⋅ 点赞:(0)

Git命令集合

1. 基本操作

1.1 创建版本库
  1. 初始化本地仓库:git init
  2. 添加文件到仓库:git add | git add file file2… | git add.
  3. 提交文件到本地仓库:git commit -m “message”
1.2 版本回退
  1. 查看状态: git status
  2. 查看全部修改状态:git diff
  3. 查看指定文件修改内容:git diff
  4. 回退到指定版本:git reset --hard commit_id
  5. 回退到上一个版本:git reset --hard HEAD^
  6. 回退到上上个版本:git reset --hard HEAD^^
  7. 回退n个版本:git reset --hard HEAD~n
  8. 查看详细提交历史:git log
  9. 查看简化提交历史:git log --pretty=online
  10. 查看分支合并图:git log --graph
  11. 查看命令历史:git reflog
1.3 撤销修改
  1. 丢弃工作区的修改(未提交值暂存区):
    git checkout – file

    ​ git restore

    ​ git checkout – .

    ​ git restore .

  2. 丢弃已添加到暂存区的修改

    ​ git reset HEAD

    ​ git restore --signed

    ​ git reset HEAD .

    ​ git restore --staged

1.4 删除文件
  1. 删除未添加到暂存区的文件:

    显示将要删除的问加你和目录:git clean -n

    删除文件和目录:git clean -df

    删除文件:git clean -f git rm

2. 远程仓库

2.1 添加远程仓库
  1. 关联远程仓库:

    git remote add origin

  2. 删除远程仓库:

    git remote rm origin

  3. 查看远程仓库

    git remote -v

  4. 推送提交到远程仓库

    git push origin master #一般用于非首次推送

    git push -u origin master #-u参数是将本地master分支与远程仓库master分支关联起来,一般用于第一次推送

2.2 从远程仓库克隆
  1. git clone

3. 分支管理

3.1 创建与合并分支
  1. 查看分支:git branch
  2. 创建分支:git branch
  3. 切换分支:git checkout
  4. 创建并切换到该分支:git checkout -b
  5. 合并指定分支到当前分支:git merge
  6. 删除本地已合并分支:git branch -d
  7. 删除远程分支:git push <远程仓库名> --delete <远程分支名>
  8. 推送本地分支到远程仓库并在远程仓库创建新分支:git push <远程仓库名> <本地分支名>:<远程分支名>
3.2 解决冲突

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

查看分支合并图:

git log --graph

冲突的产生一般都是这两种情况:

  • 远程仓库的代码落后于本地仓库
  • 远程仓库的代码远超本地仓库

说明

冲突是如何表示的:

​ 当产生合并冲突时,该部分会以 <<<<<<< , ======= 和 >>>>>>> 表示。在 ======= 之前的部分是当前分支这边的情况,在 ======= 之后的部分是传入分支的情况。

如何解决冲突

在看到冲突以后,你可以选择以下两种方式:

  • 决定不合并。这时,唯一要做的就是重置 index 到 HEAD 节点。 git merge --abort 用于这种情况。
  • 解决冲突。 Git 会标记冲突的地方,解决完冲突的地方后使用 git add 加入到 index 中,然后使用 git commit 产生合并节点。

你可以用以下工具来解决冲突:

  • 使用合并工具。 git mergetool 将会调用一个可视化的合并工具来处理冲突合并。
  • 查看差异。 git diff 将会显示三路差异(三路合并中所采用的三路比较算法)。
  • 查看每个分支的差异。 git log --merge -p 将会显示 HEAD 版本和 MERGE_HEAD 版本的差异。
  • 查看合并前的版本。 git show :1:文件名 显示共同祖先的版本, git show :2:文件名 显示当前分支的 HEAD 版本, git show :3:文件名 显示对方分支的MERGE_HEAD 版本。
3.3 Bug分支
  1. 暂存工作区状态:git stash
  2. 查看暂存的工作区状态:git stash list
  3. 恢复全部暂存状态,但不删除暂存内容:git stash apply
  4. 恢复指定暂存状态,但不删除暂存内容:git stash apply stash@{}
  5. 删除暂存内容:git stash drop
  6. 恢复暂存状态,同时删除暂存内容:git stash pop
  7. 复制一个特定的提交到当前分支:git cherry-pick <commit_id>

说明

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场 git stash 一下,然后去修复bug,修复后,再 git stash pop

在master分支上修复的bug,想要合并到当前dev分支,可以用 git cherry-pick <commit_id> 命令,把bug提交的修改“复制”到当前分支

3.4 Feature分支
  1. 强制删除分支(会丢失分支上的修改):git branch -D

说明

开发一个新feature,最好新建一个分支;

如果要丢弃一个没有被合并过的分支,可以通过 git branch -D 强行删除。

3.5 多人协作
  1. 查看远程仓库信息:git remote

  2. 查看远程仓库详细信息:git remote -v

  3. 与远程仓库代码同步:git pull # git pull = git fetch + git merge

  4. 在本地创建和远程分支对应的分支:

    git checkout -b branch-name origin/branch-name

    git switch -c branch-name origin/branch-name

  5. 将本地分支与远程仓库关联:git branch --set-upstream-to origin/

  6. 推送本地分支到远程仓库:git push origin

3.6 Rebase变基
  1. 变基(衍合):git rebase
  2. 放弃变基:git rebase --abort
  3. 解决冲突之后继续变基:git rebase --continue

说明

rebase操作可以把本地未push的分叉提交历史整理成直线;

rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

4.标签管理

4.1 创建标签
  1. 新建标签(指向最新的commit_id):git tag <tag_name>
  2. 新建标签(指向特定commit_id):git tag <tag_name> <commit_id>
  3. 查看所有标签:git tag
  4. 显示某个标签的详细信息:git show <tag_name>
  5. 新建带有说明的标签:git tag -a <tag_name> -m “说明” <commit_id>
4.2 操作标签
  1. 删除指定本地标签:git tag -d <tag_name>
  2. 删除指定远程标签:git push origin :refs/tags/<tag_name>
  3. 推送一个本地标签:git push origin <tag_name>
  4. 推送全部未推送过的本地标签:git push origin --tags

5.git场景处理

5.1 fatal: refusing to merge unrelated histories

有时在pull或merge时会出现下述错误:

fatal: refusing to merge unrelated histories

解决办法:

git merge origin/master *--allow-unrelated-histories*

结果如下:

$ git merge origin/master *--allow-unrelated-histories*
Already up to date!
Merge made by the 'recursive' strategy.

只需要在命令的最后面添加 --allow-unrelated-histories ,这句话是告诉Git允许不相关历史合并

5.2 git merge origin master与merge origin/master

git merge origin mastergit merge origin/master的区别

# 将origin merge 到 master 上
git merge origin master

# 将origin上的master分支 merge 到当前 branch 上
git merge origin/master

网站公告

今日签到

点亮在社区的每一天
去签到