目录
1、Git 查看和配置信息命令
1.1 配置用户名、邮箱
$ git config --global user.name "lvjie"
$ git config --global user.email [email protected]
1.2 如果需要再次编辑这两个名称,可以如下命令
$ git config --global -e
1.3 查看配置文件的内容
$ git config --global --list
1.4 如何查看某个命令的帮助?
$ git add --help
就会打开add用法的一个网站
2、git status-add-commit 基本流程
2.1 git status指令
此指令可以查询当前目录下文件的状态
2.2 增加一个readme.txt
新增readme.txt文件处于Untracked状态,也就是说Git已经感知到文件的
存在,但是还没有跟踪它。
提示你使用add 命令,可以将文件纳入跟踪状态,可以被提交。
2.3 git add readme.txt
readme.txt文件被纳入跟踪,将其从工作区提交到了暂存区,暂存区也可以称为索引(index)。
分析如下:
(1).On branch master:表示当前位于master分支。
(2).No commits yet:表示至今还没有任何提交。
(3).Changes to be committed:表示已经有新的修改被提交到暂存区,可以被提交到存储库中了。
(4).文件由原来的Untracked状态转换为new file状态。
通过提示 git rm --cached …… 可以删除暂存区
回到add之前状态。
2.4 git commit -m "commit readme.txt"
仅将文件从工作区提交到暂存区是不够的,一个完整的流程还没有走完,如果想让暂存区的内容可以永久安全的保存下来,需要将其提交到仓库中存档,git commit指令即可完成此工作。
指令解析如下:
(1).-m表示对此次提交进行注释,简述此题提交的相关信息。
(2).如果不加-m,那么在点击回车之后,会默认弹出自带的VIM编辑器,然后输入提交信息。
commit 完成之后,可以看到暂存区和工作区都是干净的。
3、详解add&commit&reset
3.1 git add
add命令,主要是讲相关文件添加到暂存区或者说缓存区中,然后使用commit命令将暂存区中的问见提交到git版本库。
3.1.1 add一个文件
$ git add readme.txt
3.1.2 add多个文件
$ git add readme.txt readme2.txt // add 两个文件
$ git add *.java // add 以.java为后缀的所有文件(通配符)
$ git add test/ // add test文件夹下的所有文件
$ git add . // add 所有文件 可以提交未跟踪、修改和删除文件
$ git add * // add 所有文件 可以提交未跟踪和修改文件,但是不处理删除文件。
3.1.3 当我们add了多个文件后,如果发现有些文件不能add,要取消这些文件的add 该如何操作呢?
方法一、通过 git reset HEAD <filename> 即可
方法二、git rm --cached <filename>
可以发现,两者的记录是不一样的。
3.2 git commit
通过git commit指令可以将暂存区中的内容提交到当前分支。
3.2.1 git commit -m "注释"
将add的文件提交到当前分支
3.2.2 git commit -am "注释"
这个命令将 add 和 git commit -m 进行了合并, 直接将修改的文件 提交到 当前分支
3.2.3、如何删除某一次的commit
首先 通过输入 git log --oneline 查看提交日志
例如需要删除4397e2a这次的提交,通过输入 git rebase -i d9eaf49
可以直接通过vim打开一个文件,可以看到内容如下,当我们要删除4397e2a这次提交,直接
将pick 修改为 drop即可,当然下方也有相关其他命令提示。
切记,当需要删除某次的commit的时候,最好是选择删除最后一次提交的记录,如果是删除中间某一次的提交记录,很有可能造成代码合并冲突的问题。同时当删除这次的commit的时候,内容直接回退到上一个commit状态,并不是 add 之前的状态。
下面分别说说其他几个命令的意思:
reword:表示这次提交仍然有效,但是可以编辑提交的信息(当我们为4397e2a前设置为reword时,退出vim保存,会通过vim打开另一个文件,可以直接修改 提交信息,保存即可)。
edit:对这一次提交可以再次编辑,也就是说可以撤销这次commit,并且保留修改的内容,具体效果如下:
如何撤销某次的commit并重新再次commit?
总结:
如何撤销某次的commit并重新再次commit?
git rebase -i d9eaf49 打开vim后编辑为edit,保存退出;
git reset HEAD^ 此时在通过 git status 就可以查看到 上一次修改了哪些文件
接下来可以继续修改文件,然后 add commit
git rebase --continue 回到develop分支
3.2.4 如何恢复上一次删除的commit?
我们输入git log --oneline,可以查看到当前head指向的位置。
我们把add dev1-dev1 这一次的提交删除后,如下:
发现head指向了前一个位置,此时如果我们需要恢复上一次删除的commit该输入什么命令呢?
方法一: 这种情况必须你的记得到上次删除的 commit 值,俗称sha-1 值
git reset fb47489 --hard
方法二(暂时不行):
git reset ORIG_HEAD --hard
3.2.5 如何修改最后一次提交的信息?
git commit --amend -m "提交信息"
例如下:
3.3 git reset
git reset命令是Git提供的后悔药之一,它可以帮我们把内容恢复到指定的commit提交版本。
3.3.1 git reset <sha-1> --hard
git reset 874218d --hard
直接回退到 874218d 该commit记录,之前的记录删除掉,当然其实并没有删除,只是让当前的head指针指向 874218d。
3.3.2 git reset <sha-1> --soft
git reset 874218d --soft
直接回退到 874218d 该commit记录,但是通过输入git status,可以看到当前处于修改状态,如下:
3.3.3 git reset HEAD^ --soft
让当前分支回退到上一次提交。
4、分支相关及合并分支
4.1 创建一个分支 git branch <分支名>
4.2 切换到某一分支git checkout <分支名>
4.3 新建分支同时进行切换 git checkout -b <分支名>
以上创建方式都是基于当前分支来创建的。
4.4 查看有多少分支 git branch
4.5 修改分支名 git branch -m test test-2
将test分支修改为test-2分支
4.6 如何查看某一分支的创建时间和提交记录?
git reflog show --date-iso <分支名>
4.7 删除分支 git branch -d <分支名>
4.8 恢复删除某一分支
注意,当一个分支没有merge的时候,-d 是无法删除的,必须通过-D强制删除,删除后会出现一个
was <sha-1>
当我们需要恢复该分支时,输入 git branch <恢复后的分支名> <sha-1>
如果不记得sha-1的值,则可以通过输入 git reflog命令查看
a9a1b7f (test) HEAD@{1}: checkout: moving from develop to test1