使用Git常用命令

主要参考自链接:
https://git-scm.com/docs
https://www.runoob.com/git/git-basic-operations.html
http://marklodato.github.io/visual-git-guide/index-zh-cn.html
https://www.cnblogs.com/miracle77hp/articles/11163532.html
https://www.cnblogs.com/cb0327/p/5066685.html
https://blog.csdn.net/u013276277/article/details/82470177/
https://www.cnblogs.com/wangrenmeng/p/10430369.html

一、Git配置:

Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量,这些环境变量,决定了 Git 在各个环节的具体工作方式和行为,可以存放在以下三个不同的地方:

  • /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
  • ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
  • 当前项目的Git目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖/etc/gitconfig 中的同名变量。

git config --list:查看配置信息。
git config --global merge.tool vimdiff:更改差异分析工具为vimdiff
配置个人的用户名称和电子邮件地址:

git config --global user.name "xxxname"
git config --global user.email "[email protected]"

二、基本操作:

在这里插入图片描述

2.1 创建仓库

git init:在目录中创建新的 Git 仓库,ls .git/可查看仓库信息,所有有关项目的快照数据都存放在其中。
git clone [url]:拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。

2.2 查看修改

绿色的5位字符表示提交的ID,分别指向父节点。分支用橘色显示,分别指向特定的提交。当前分支由附在其上的HEAD标识。 这张图片里显示最后5次提交,ed489是最新提交。 main分支指向此次提交,另一个stable分支指向祖父提交节点。
在这里插入图片描述

git status:查看文件、目录在工作区间和暂存区中的状态。
git diff:命令用于比较工作区和缓存区的区别。
git diff –cached:比较的缓存区和本地仓库的区别。
git diff <commit>:查看工作目录同本地仓库指定commit的内容的差异,<commit>=HEAD时:查看工作目录同最近一次commit的内容的差异。
git diff <commit> <commit>:本地仓库任意两次commit之间的区别。

2.3 提交代码

  • git add [file1] [file2] ...:将工作区文件或目录提交到暂存区。
  • git commit [file1] [file2] ... -m [message]:给暂存区域生成快照并提交至本地仓库,[message] 可以是一些备注信息。
    git commit -a-a 参数设置修改文件后不需要执行 git add 命令,直接提交至本地仓库。
  • git push <远程主机名> <本地分支名>:<远程分支名>:从将本地的分支版本上传到远程并合并,如git push origin master:refs/for/master,即是将本地的master分支推送到远程主机origin上的对应的master分支。
  • 使用一次新的commit,替代上一次提交,提交至远程仓库也可以修改:
    git commit --amend -m [message]:代码没有任何新变化,则用来改写上一次commit的提交信息
    git commit --amend [file1] [file2] ...: 重做上一次commit,并包括指定文件的新变化

2.4 更新代码

git pull = git fetch + git merge

git pull <远程主机名> <远程分支名>:<本地分支名>:更新远程仓库中的代码到本地工作区间,如git pull origin master:brantest,将远程主机 originmaster 分支拉取过来,与本地的 brantest 分支合并,如果远程分支是与本地的当前分支合并,则冒号后面的部分可以省略。
git fetch <远程主机名> <分支名>:将远程主机的最新内容拉到本地仓库,用户在检查了以后决定是否合并到工作区间分支中。
git merge [branch]:合并指定分支到当前分支。

2.5 版本回退或代码撤销

checkout命令用于从历史提交(或者暂存区域)中拷贝文件到工作目录,也可用于切换分支。

  • git checkout -b 本地分支名 origin/远程分支名:将远程git仓库里的指定分支拉取到本地(本地不存在的分支)。
  • git checkout -- files:(暂存区 -> 工作区间)工作区间修改了文件,但是还没有提交到暂存区,可用该命令把文件从暂存区域复制到工作目录,用来丢弃本地修改。

reset命令把当前分支指向另一个位置,并且有选择的变动工作目录和索引。也用来在从历史仓库中复制文件到索引,而不动工作目录。如果不给选项,那么当前分支指向到那个提交。如果用--hard选项,那么工作目录也更新,如果用--soft选项,那么都不变。

  • git reset HEAD file:(本地仓库 -> 暂存区)工作区中修改了文件且git add到暂存区,但是尚未commit,可用该命令把提交至暂存区的文件撤销,重新放回工作区,也可以用git reset 撤销所有暂存区域文件。
  • git reset --hard HEAD^ file:回退工作区中的文件到提交至本地仓库中的上一个提交版本。
    HEAD:最新提交
    HEAD^:上一个提交版本
    HEAD^^:上上一个提交版本
    HEAD~10:往上10个版本
    

三、查看提交历史信息:

  • git log [<options>] [<file>]:查看历史提交记录。
    --stat:显示commit历史,以及每次commit发生变更的文件,如git log --stat lj_emit_mips.h
    -S [keyword]:根据关键字搜索提交历史
    -5 --pretty --oneline:显示过去5次的提交记录
  • git blame <file>:以列表形式查看指定文件每一行代码的历史修改记录。

四、分支管理:

4.1 列出分支

git branch:列出所有本地分支。
git branch -r:列出所有远程分支。
git branch -a:列出所有本地分支和远程分支

扫描二维码关注公众号,回复: 13617774 查看本文章

4.2 新建分支

git branch [branch-name]:新建一个分支,但是依旧停留在当前分支
git checkout -b [branch]:新建一个分支,并切换到该分支
git branch [branch] [commit]:新建一个分支,指向指定commit
git branch --track [branch] [remote-branch]:新建一个分支,与指定的远程分支建立追踪关系

4.3 切换分支

切换到指定分支的时候,Git会用该分支的最后提交的快照替换你工作目录的内容, 所以多个分支不需要多个目录。
git checkout -:切换到上一个分支。
git checkout [branch-name]:切换到指定分支。

4.4 合并分支

merge 命令把不同分支合并起来。合并前,索引必须和当前提交相同。如果另一个分支是当前提交的祖父节点,那么合并命令将什么也不做。 另一种情况是如果当前提交是另一个分支的祖父节点,就导致fast-forward合并。指向只是简单的移动,并生成一个新的提交。否则就是一次真正的合并。默认把当前提交(ed489 如下所示)和另一个提交(33104)以及他们的共同祖父节点(b325c)进行一次三方合并。结果是先保存当前目录和索引,然后和父节点33104一起做一次新提交。
在这里插入图片描述

步骤为:先合并->解决冲突->git add 冲突文件至暂存区->git commit至本地仓库->git push至远程仓库
git merge [branch]:合并指定分支到当前分支

4.5 删除分支

Git会自行负责分支的管理,所以当我们删除一个分支时,Git只是删除了指向相关提交的指针,但该提交对象依然会留在版本库中。
git branch -d [branch-name]:删除一个没有被打开的分支
git branch -D <branch_name>:删除一个正打开的分支
git branch <branch_name> <hash_val>:在已知提交的散列值的情况下恢复某个分支

猜你喜欢

转载自blog.csdn.net/qq_42570601/article/details/121443133
今日推荐