Git的操作原理
一个gitlib服务器有远程的分支以及存储设备,客户端操作,首先是从远端分支将数据下载到本地分支,然后进行修改、添加、删除的相关操作,随后在本地的分支中进行一次添加暂存提交的操作,再将分支推送上传到远端服务器,最后进行多分支合并操作。
对于分支,可以理解为创建一个账户,每个不同的分支都是不同的修改进度,但最后都要进行合并操作,合并到主线中,也就是master分支,这个分支在大部分情况下会有push限制,不允许进行push覆盖操作,只可以合并操作。
在本地git仓库中,HEAD是一个指针,他指的就是当前用户所在的分支,下面的所有操作在不具体的指定情况下,全部是在修改这个分支的内容。
大体逻辑就是:
远程分支下载到本地分支 --> 本地文件修改 --> 本地暂存并提交 --> 上传到远端并请求合并 --> 远端合并分支
所以用户在操作的时候,一般是在远端开创一个自己的分支,然后下载到本地进行修改,然后通过一系列操作推送到远端,远端进行数据整合,最后回归主线。
Git的基本操作
####克隆远端的git仓库到本地
git clone .../*.git
这一般是第一步操作,把远端数据拷贝到本地,然后进行相关操作。
####查看文件状态
git status
出现如下,代表发现有个未暂存本地的文件
Untracked files:
(use "git add <file>..." to include in what will be committed)
出现如下,代表发现文件已经暂存到本地了
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
####比较简单的查看文件状态
git status -s
这个比较简单:
看到??
代表一个新的文本,还没有暂存本地分支。
看到A
代表已经暂存到本地分支了,但是没有提交。
看到M
说明没有暂存到本地分支。
看到D
说明文件以及被删除或被移到分支存储位置外。
看到R
说明文件修改了位置或者修改了名字
如果有AM
那么说明是暂存后又发生了修改,需要再次暂存该文件。
####文件暂存和取消
git add 文件名 # 将文件暂存
git reset 文件名 # 取消文件的暂存
文件暂存是每次必须进行的操作,新建文件或者修改文件都需要先暂存文件。
####查看文件修改情况
查看没有暂存到本地的文件和现在的文件有哪些修改的部分
git diff
查看当前暂存到本地的文件和远端存储的原件有哪些修改部分
git diff --staged
####提交更新
这是将文件提交到本地磁盘完成存储
git commit -m '提交的相关信息'
可以跳过 add 步骤,直接编辑文件后提交到本地
git commit -m '提交的相关信息' -a
添加后就会发现文件状态没了,因为已经存到磁盘中了。
Git修改文本内容
增删改都属于修改文本,赠包括新建文本、文本添加内容,删包括删除文本、删除文本内容,改包括修改文本位置、修改文本内容。
在此提醒一个注意事项,在修改了git分支的操作后必须要提交,只有当status
没有数据的时候才算写完了。
####增删改文本内容、新建文本
修改完文件,需要先暂存add
本地,再提交commit
到本地分支。
####删除文本
删除本地文本后,我们会发现status
得到的结构是 D ,那么我们就需要从git体系中删除
git rm 文件名
git rm -f 文件名 # 将暂存区中的文件内容也会删除
要注意,本地文件修改存储位置,以及重命名都会当做是删除了一个文本,创建了一个新的文本,git中移动文件和修改文件名,需要用特殊的方法。
除了我们手动产出本地文件外,也可以通过git rm 文件
的方法,这样本地文件,和git本地分支文件都会被删除
####移动文本、修改文本名
这个是根据linux的操作特点,移动文本,可以指定移动后的文件名,这样也就可以实现修改文本名,不过需要进行提交操作
git mv 原文件地址/名字 新文件地址/名字
git commit -m '提交修改位置(名字)'
Git查看历史消息
####查看提交历史
git log
git log -p # 显示历史提交对文件的变化情况
git log -p -数字n # 查看最近的n次提交中的文件变化情况
查看所有分支的提交历史 (注意最新的提交在上面)
git log --oneline --decorate --graph --all
####进行撤销操作
git reset HEAD 文件 # 将上一次的git操作撤回
git checkout -- 文件 # 真正对文件有作用的撤销操作
这里建议,通git status
查看该如何撤销,一般在文件上方都会写如何撤销该操作
Git分支操作
####查看当前所在分支
git branch
* + 绿色字体 的那个分支就是当前所在分支
####查看各个分支的同步情况
git branch -vv
查看每个分支现在的情况,如果需要同步远端的文件使用git pull origin master
####创建分支
git branch 分支名 # 注意这只是创建新的分支,不会切换分支
git checkout -b 分支名 # 创建新的分支并且切换到新分支
####切换分支
git checkout 分支名
这就是将HEAD指针指向新的分支,然后下面的所有操作都是对该分支进行的操作
####删除分支
git branch -d 分支名
注意:这里删除分支的前提必须是,该分支已经合并到了master中
####指定分支跟踪
当克隆一个仓库时,它通常会自动地创建一个跟踪origin/master
的master
分支
git checkout -b 创建到本地的分支 origin/远程分支
创建一个本地分支,一直跟踪一个远端分支,这个的主要作用是git pull
后面不用跟参数了而已
Git远端的相关操作
####查看远端仓库的相关信息
git remote -v
git remote show origin # 查看当前如果和远端进行推送、拉取等操作的缩写命令的含义
####将本地分支推送至远端分支
git push origin 分支名
####将远端分支同步到本地
git pull origin master(或者其他分支)
一般同步数据都是同步master的文件内容