Git使用

单纯看Git使用手册或者Git命令大全的话,会发现命令非常杂乱,一个需求可以用好几种命令解决,有的命令还有别名。

一般Git的使用都是几条命令带走:

git 

git add .

git commit -m "...(可以写任何编码可以识别的字符)"

git pull

git push

Git的三个分区

Git的三个分区分别是: working directory, stage/index area, commit history

Git分区图示.png

working directory:工作目录,就是我们在工作区中操作的文件

当在working directory中执行git add相关命令后,就会把工作区中的修改添加到暂存区stage area或者叫做index area中去

当stage area中的文件存在修改时,使用git commit相关命令后,就会把stage中的修改保存到commit history中,也就是HEAD指针指向的位置。

关于commit history,任何修改只要进入commit history,基本可以认为永远不会丢失了。每个commit都有一个唯一的hash值对应,我们常说的HEAD或者master分支,都可以理解为一个指向某个commit的指针

Git常用命令

working directory和stage area分区的状态,可以用git status进行查看, commit history分区的提交历史可以用git log进行查看

状态转移图.jpeg
  1. 把working directory中的修改加入stage area中,可以使用git add相关命令,add有个别名叫做stage,git addgit stage命令是完全一样的

  2. 把stage area中的修改还原到working directory中,可以使用checkout命令

git checkout 文件名或文件夹名

git checkout .  # 从stage area中还原整个文件夹
  1. 把stage area中的文件添加到commit history区,就是git commit命令,在commit完了之后突然发现一些错别字需要修改,这样最好把修改提交到一个commit中,就需要来使用git commit --amend命令,修改和之前那个commit命令合并,作为一个commit提交到commit history区

  2. 将history区的文件还原到stage区,可以使用git reset 文件名命令,完整的命令是git reset --mixed HEAD 文件名,当然,文件名的位置也可以写一个文件夹名

  3. 从working directory中直接提交到history中,可以两步先git add然后git commit就行了,或者直接使用git commit -a

  4. 将history区的历史提交还原到work dir中,可以使用git checkout命令,先使用git log查看历史哈希值,再使用git checkout 哈希值命令进行恢复

其他一些小技巧

  1. 合并多个commit

    使用git reset命令,不过是一个命令组合:

    git reset HEAD值  # 相当于把HEAD指针指向了新的位置
    
    git add .
    
    git commit -m "..."
    
  2. 由于HEAD指针的回退,导致有的commit在git log命令中无法看到,获取这部分的Hash值

    只要不乱动本地的.git文件夹,任何修改只要提交到commit history中,都永远不会丢失

    git reflog  # 查看操作记录
    
  3. 解决冲突

    Git 虽然高大上,但也不要迷恋,一定要懂得借助先进的工具,比较流行的代码编辑器或者 IDE 都会集成方便的可视化 Git 工具,至于解决冲突,只需要在IDE工具里进行合并,一般很少用git diff命令去查看冲突,只需要点点点就行了。

文章转录自原作者东哥四个基本命令搞会 Git 使用

你可能感兴趣的:(Git使用)