1,.git目录与git命令
1)使用git init命令,将会在当前目录创建一个.git目录,包含了所有git正常工作所需要的信息。
image.png
2)工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。
初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。
3)编辑过文件之后-->modified-->git add变为暂存状态
image.png
image.png
4)git status检查文件的状态
git add开始跟踪新文件
当修改已经git add暂存的状态,
image.png
5)git diff <file>查看尚未暂存的文件更新了哪些部分
git diff --cached <file>查看已缓存的文件更新了哪些部分
image.png
6)提交暂存区里面的更新 image.png
请一定要确认还有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。
7)git log会按提交时间列出所有的更新
image.png
8)git fetch命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,需要你自己手工合并。
9)命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销。(如果已经git add到暂存区,则无法撤销,这时候需要使用git reset HEAD ${file}命令
)
10)git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区。(如果已经git commit到版本库,则只能使用版本回退
)
11)commit在git中被称为快照
,当git commit -m "xx"执行之后就生成。
git log命令显示从最近到最远的提交日志
image.png
每提交一个新版本,实际上git就会把他们串成一条时间线。
image.png
12)版本回退。git reset --hard ${commit_id}
用HEAD(等效于当前版本的commit_id快照id
)表示当前版本,上一个版本就是HEAD,上上一个版本就是HEAD^。
image.png
13)撤消总结。
image.png
14)例子
image.png
image.png
2,git fetch
1)git fetch [origin]
将某个远程主机的更新,全部取回本地
这时候git branch 查看本地分支是没有更新的。只有 remote/origin/xxx(取回的origin分支名)
2)git checkout PT-1156-new-gift
checkout之后,才会将本地分支与origin分支关联。
Branch PT-1156-new-gift set up to track remote branch PT-1156-new-gift from origin.
Switched to a new branch 'PT-1156-new-gift'
3)所取回的更新,在本地主机上要用”远程主机名/分支名”的形式读取。git branch -a(所有) (-r远程)
4)可以先取回远程分支的更新,再git merge origin/master 到本地master分支。相当于 git pull origin master = git fetch origin master + git merge origin master
3,细节
1)正是环境部署前,最好git tag -a "tagname" -m "注释"打一个tag,或者保存一份war文件。
image.png
2)git rev-parse
git rev-parse --git-dir查看.git目录所在的位置
git rev-parse --show-toplevel显示工作区根目录位置
指明一次提交的最直接的方法要求有一个指向它的分支引用。
git rev-parse 分支名查看SHA引用, 某个分支指向哪个特定的 SHA
3)git show commitId = git show 分支名
git show 8825311f72da1f4eaae3fd541eada84c3d45e674
git show branchName
4,分支操作
1)删除本地分支
image.pnggit branch -d <分支名>
强制删除本地分支git branch -D <分支名>
删除远程分支git push origin --delete <分支名>
2)复制文件到另一个分支
5,关联github
image.png
网友评论