文章目录
上一篇 GIT 版本管理 developer 入门 (一) : https://blog.youkuaiyun.com/hl1986503/article/details/84977791
GIT 常用命令
GIT 拉取远程仓库的最新更改
- 先来理解一下git在本地文件的存储结构
( 注 : 仅是个人理解 , 不是真实结构 , 通过该结构理解各个常用命令而已 , 不要吧这个结构当作真正的git 底层实现 )
当你在本地修改了文件后 , 文件会存储在无保护的快照区
通过 : git add 命令将文件加入缓冲的待提交区
通过 : git commit 命令提交到本地分支存储区
通过 : git push 命令提交到本地分支到远程仓库
通过 : git pull 命令拉取远端仓库中远端分支到本地分支存储区
** 这里有人会问 , 为什么有个 [远端分支存储区] , 这里就涉及了 git fetch 命令的理解了 ** - 使用 git fetch + git merge 拉取远程仓库到本地 [方法1]
(1) git fetch origin <分支名> # 拉取 [远程仓库分支] 到本地的 [远程分支存储区]
(2) git log -p master…origin/<分支名> # 比对 [本地分支存储区] 与 [远程分支存储区] 的差异
(3) git merge origin/<分支名> # 将 [远程分支存储区] 的改变 合并到 [本地分支存储区] - 使用 git fetch + git merge 拉取远程仓库到本地 [方法2]
(1) git fetch origin <分支名> :tmp # 在本地新建一个临时的 [tmp分支] 并将 [远程仓库分支] 拉取到本地 [tmp分支]
(2) git diff tmp # 比对 [本地分支存储区] 与 [tmp分支] 的差异
(3) git merge tmp # 将 [tmp分支] 合并到 [本地分支存储区]
(4) git branch -d tmp # 删除临时的 [tmp分支] - 使用 git pull 拉取远程仓库到本地
直接拉取 [远程仓库分支] 到 [本地分支存储区] 并完成合并
其实就是一个命令直接完成 git fetch + git merge 的功能
相对的 git pull 更简单 , 但还是 git fetch + git merge 更安全
GIT 提交代码
大家看到其他git 相关入门博客时应该是 各种各样的命令的介绍 , 但我觉得应该把需求拿出来一个一个解说一下
- [修改了代码 / 添加了文件] 后 , 想要提交代码
(1) 查看本地修改了的文件 : git status , 此命令会展示出所有在本地有变动的文件
(2) 如图所示 status.txt 就是存在于 [无保护快照区] 的 , add.txt 是存在于 [缓冲待提交区] 的
使用 git add <文件名> 来把指定的文件 , 加入到 [缓冲待提交区]
如果 所有在 [无保护快照区] 的文件都是准备要提交的
使用 git add . 命令 , 用一个 点 代指所有 [无保护快照区] 文件
(3) 使用 git commit 来提交所有 [缓冲待提交区] 的文件 , 需要添加提交注释哦~!
git commit -m “这是本次提交的注释”
这样 所有 [缓冲待提交区] 的文件都 提交到了 [本地分支存储区]
(4) 最后使用 git push 来把所有 [本地分支存储区] 推送到 [远程仓库分支]
这里不是推送到 本地的 [远程分支存储区] , 而是直接 推送到 [远程仓库分支] - 提交代码前 , 一定要先拉取一下 , 不然会有冲突哦~!
有些内容不想提交又该怎么办?
- 如果是经常需要过滤的文件,直接加入到 .gitignore 文件中
# idea 生成文件
*.iml
.idea/
*/target/
/.swp
# eclipse 生成文件
*.project
*.settings/*
*.settings
- 某个文件只在本次提交中过滤:假定未变更
一次假定未变更
git update-index --assume-unchanged <文件path>
或,永久假定未变更
git update-index --skip-worktree <文件path>
如:.gitignore 文件,是基本永久不会需要提交的
git update-index --skip-worktree .gitignore
下一篇 GIT 版本管理 developer 入门 (三) : https://blog.youkuaiyun.com/hl1986503/article/details/84993725