文章目录
Git学习笔记 2019.8.13
Git安装及Git镜像链接
官方下载链接:https://git-scm.com/downloads
由于官网下载网址在墙外,下载速度非常慢,所以这里给一个github的镜像链接:Windows环境Git下载镜像:https://github.com/waylau/git-for-win
直接选择自己的系统进行下载即可,其中win下会自动识别系统位宽等信息提供下载文件,国内下载速度依然足够,问价也不大,分分钟下完。
安装即可。
安装完,打开Git Bash.exe,用git version命令确定是否安装成功。
安装成功此处返回版本号:git version 2.22.0.windows.1(示例)
基础配置
git config --global user.name ‘your_name’
git config --global user.email ‘your_email@xxx.com’
为了协同工作方便,每个git需要定义全局的user name和user email。
具体指令:
git config --global user.name 'your_name'
git config --global user.email 'your_email@xxx.com'
其中,–global是确定指令的作用域,这个是全局,还有–local,只作用于当前版本库。还有–system,不常用。
这两条没有返回,通常即意味着设置完毕。
git config --list --global
返回值为:
user.name=your_name
user.email=your_email@xxx.com
新建版本库
git init
首先制定路径到新工程目录下,最好是空文件夹。语句是:
cd E:/nuts/learn_git
这里需要注意的是,win的路径分隔为‘\’,git的分隔为‘/’。
之后在路径下新建版本库:
git init
新建成功,我们可以看下这个路径下的变化:
ls -al
drwxr-xr-x 1 Administrator 197121 0 8月 12 17:48 ./
drwxr-xr-x 1 Administrator 197121 0 8月 12 17:40 ../
drwxr-xr-x 1 Administrator 197121 0 8月 12 17:40 .git/
多了一个隐藏文件夹git,没有其他变化。
新建文件交版本库管理
git add
git commit -m’text’
在learn_git目录下新建一个文件,这里就新建一个readme.txt文件。
之后使用如下命令将文件加入版本库管理:
git add readme.txt
git commit -m'Add readme'
返回值,添加了一个新文件。
[master (root-commit) 83dcbec] add readme
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
查看目前状态
git status
对已经添加的版本库的文件进行修改后,使用git status来看目前版本库的状态。
git status
#以下为返回值
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
返回值提示有一个文件被修改,但是没有commit。
查看具体修改内容
git diff
为了查看具体修改内容,可以使用git diff命令,这个命令只能查看文本类型文件,包括大部分代码文件的具体修改内容,.doc等是不可查看的。
git diff
#以下为返回值
diff --git a/readme.txt b/readme.txt
index d8036c1..3f49ea3 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,3 @@
Git is a version control system.
-Git is free software.
\ No newline at end of file
+Git is free software.
+我就是试试。
\ No newline at end of file
提交修改
git add file.fmt
git commit -m’text’
提交修改的方法与提交新文件的方法完全相同。
查看日志
git log
git log --all --oneline --graph -n4
经过多次修改后,为了查看历史修改内容,可以使用git log命令。
git log
#以下为返回值
commit 6c9a8c144432e28d57e0d9af7ba9a3bc0a63b0f4 (HEAD -> master)
Author: ZiHuan <wangx_work@126.com>
Date: Tue Aug 13 10:05:37 2019 +0800
add chinese to readme
commit 83dcbec171a5d38a8775309924409a3b95df628a
Author: ZiHuan <wangx_work@126.com>
Date: Tue Aug 13 08:58:09 2019 +0800
add readme
可以看到返回了两个版本,一个是add readme,一个是add Chinese to readme。每次返回值都包含有:commit ID,作者,时间,以及备注。
为了减少返回值内容,可以使用 git log --pretty=oneline命令。或者git log --oneline。
可以控制显示数量git log -n3,就显示最近的三个版本。
git log --pretty=oneline
6c9a8c144432e28d57e0d9af7ba9a3bc0a63b0f4 (HEAD -> master) add chinese to readme
83dcbec171a5d38a8775309924409a3b95df628a add readme
git log --oneline
00b5c5f (HEAD -> master) Add FWM.m
6c9a8c1 add chinese to readme
83dcbec add readme
回退版本
git reset HEAD^
git reset HEAD~5
git reset ID
跳转到制定版本,git提供了两种机制,一种是git reset HEAD^,跳转到上一个状态,HEAD表示当前状态,加一个三角表示上一个版本,加多个三角表示上多个版本,具体也可以用~n来表示。
同时,可以使用reset 到制定ID制定跳转目标。其中,ID可以不写全,当版本不多的时候只需要写开头的几个数字就可以了。
查询历史操作
git reflog
可以看到版本的历史变化和ID,可以进行制定跳转。
git reflog
6c9a8c1 (HEAD -> master) HEAD@{0}: reset: moving to 6c9a
83dcbec HEAD@{1}: reset: moving to HEAD^
6c9a8c1 (HEAD -> master) HEAD@{2}: commit: add chinese to readme
83dcbec HEAD@{3}: commit (initial): add readme
撤销修改
git checkout – file.fmt
git reset HEAD file.fmt
撤销修改分为两种,一种为撤销工作区的修改内容,使用git checkout --file.fmt,注意,file前有空格。
其实,checkout操作使用版本库中的文件替换工作区文件。
另一种是撤销已经add进暂存区的修改内容,使用git reset HEAD file.fmt。这样暂存区的内容就会被退回到工作区,就又可以使用checkout进行撤销了。
删除文件
git rm file.fmt
从版本库中删除指定文件的方法就是用rm,如果误删了,就回退到制定版本,再从版本库中checkout到工作区就可以了。
以上应该就是git本地库管理常用的指令了,以后再遇到新的,我再进一步更新。
重命名文件
git mv file_old.fmt file_new.fmt
直接对工作区文件名进行修改,这种方式比较方便。
也可以在文件管理器中进行修改,那样的话需要删除rm原来的文件,还需要添加add重命名后的文件。但是这样比较复杂。
上述重命名后,直接commit提交到版本库就行了。
新建分支
git branch name
创建dev分支
git chechout -b dev
git checkout name
git checkout -b name
新建分支并命名,然后跳转到这个分支。其中第三句是简便操作,一次创建并跳转。
合并分支
git merge name
合并分支到当前活动的分支。其中,如果在分支中和当前分支都修改了同一个文件的话,会产生冲突,需要手动处理这些冲突。
修改版本messege
git commit --amend
git rebase -i ID
其中用amend修改最新的messege,用rebase修改之前的历史messege,而且,这个里边几乎能修改所有信息。修改messege需要用reword命令,替换弹窗内原来的pick命令。