标签:文件 教程 git 本地 仓库 branch 分支
本文转自:git教程 | GeekHour
Git 读音为/git/ ,是一个开源的分布式版本管理系统,是Linux Torvalds为了帮助管理Linux内核开发而开发的一个版本控制软件。
git 和svn的区别:
1 工作原理
1.1 git的四个工作区域
image-20210409050441248
- 远程仓库:Github、Gitee、GitLab,存储在远程服务器上的仓库。
- 本地仓库:git clone或者git init之后存储在本地的仓库,HEAD指向最新放入仓库的版本。
- 暂存区:也叫待提交更新区,存放临时变动,本质上是文件,保存即将提交的文件列表。
- 工作区:也叫工作目录,本地工作目录
1.2 git的文件状态
-
未跟踪(Untracked):文件在本地,未添加到git仓库,不参与版本控制,执行git add
后 状态变为 Staged
。
-
未修改(Unmodified):文件已入库,未修改,即版本库中的快照内容与本地文件一致。修改后转为Modified
,执行git rm
后移出版本库,变为Untracked
-
已修改(Modified):文件已入库,已修改,即版本库中的快照内容与本地文件不一致。使用git checkout
则丢弃修改,返回Unmodified
状态,git add
后进入暂存Staged
状态。
-
暂存(Staged):暂存状态,执行git commit
则修改同步到本地库中,文件变为Unmodified
状态,执行git reset HEAD filename
取消暂存,文件变为Modified
状态
可以使用git status [filename]
来查看指定文件的状态。
image-20210409050404549
image-20210409042142708
image-20210409042214715
image-20210409042230437
1.3 本地工作流
你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录
,它持有实际文件;第二个是 缓存区(Index)
,它像个缓存区域,临时保存你的改动;最后是 HEAD
,指向你最近一次提交后的结果。
image-20210409043232427
1.4 分支
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”。master分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,一般会新建dev分支进行开发,dev分支代码稳定后再将它们合并到master分支上。
image-20210409043607480
1.5 需要记住的命令
image-20210409044451952
2 常用操作
全局配置:
1 2 3
|
git config --global user.name "username" git config --global user.email "xxxx@gmail.com"
|
新建仓库:
1 2 3 4 5 6 7 8 9 10
|
mkdir vuecli_sample cd vuecli_sample git init touch README.md git add README.md git commit -m "first commit" git remote add github git@github.com:geekhall/vue2cli.git git remote add gitee git@gitee.com:sjdt/vue2cli.git git push -u github master git push -u gitee master
|
已有仓库
1 2 3 4
|
cd existing_git_repo git remote add github git@gitee.com:sjdt/vuecli_sample.git git branch -M main git push -u github main
|
2.1 配置
1 2 3 4 5 6
|
# 设置 git config --global user.name yiny git config --global user.email yinyang007@gmail.com
# 查看 git config -l / git config --list
|
2.2 创建仓库
两种方式:
1 2 3 4 5
|
# 创建一个新的仓库 git init
# 创建一个远端仓库的本地克隆版本 git clone username@host:/path/to/repository
|
2.3 本地提交
1 2 3 4 5 6 7
|
# 添加到Stage git add <filename> git add . git add *
# 提交到本地仓库 git commit -m "提交信息" # 现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库!
|
2.4 推送改动
1 2 3 4 5 6
|
# 将本地改动提交到远端仓库,origin和master分别为默认的仓库名和分支名称 git push origin master
# 如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加: git remote add origin <server>
|
2.5 分支操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
# 列出所有本地分支 git branch
# 列出所有远程分支 git branch -r
# 创建分支,但依然停留在当前分支 git branch [branch-name]
# 创建一个分支,并切换过去: git checkout -b [branch-name]
# 合并指定分支到当前分支: git merge [branch-name]
# 切换回主分支: git checkout master
# 删除分支: git branch -d [branch-name]
# 除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的: git push origin <branch>
# 删除远程分支 git push origin --delete [branch-name] git branch -dr [remote/branch]
|
2.6 更新与合并
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
# 要更新你的本地仓库至最新改动,执行: git pull # 在你的工作目录中 获取(fetch) 并 合并(merge) 远端的改动。
# 要合并其他分支到你的当前分支(例如 master),执行: git merge <branch>
# 两种情况下,git 都会尝试去自动合并改动。不幸的是,自动合并并非次次都能成功,并可能导致 冲突(conflicts)。 # 这时候就需要你修改这些文件来人肉合并这些 冲突(conflicts) 。改完之后,你需要执行如下命令以将它们标记为合并成功并重新提交: git add <filename> git commit
# 在合并改动之前,也可以使用如下命令查看: git diff <source_branch> <target_branch>
|
2.7 标签
1 2 3
|
# 在软件发布时创建标签,是被推荐的。这是个旧有概念,在 SVN 中也有。可以执行如下命令以创建一个叫做 1.0.0 的标签: git tag 1.0.0 1b2e1d63ff # 1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。
|
2.8 日志
2.9 diff
1
|
git diff ver1..ver2 [filename]
|
2.10 替换本地改动(慎用,未提交的本地修改内容可能丢失)
1 2 3 4 5 6
|
# 假如你做错事,你可以使用如下命令替换掉本地改动: git checkout -- <filename> # 此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到缓存区的改动,以及新文件,都不受影响。
# 假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它: git fetch origin git reset --hard origin/master
|
2.11 git reset
git reset 的三种模式soft
,mixed
,hard
:
image-20210409042413736
image-20210409042427204
image-20210409042439298
2.12 gitignore
在.gitignore文件中配置不需要提交到版本库进行管理的文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
# Class file *.class
# Log file *.log
# BlueJ file *.ctxt
# Mac file .DS_Store
# package file *.jar *.war *.nar *.ear *.zip *.tar *.tar.gz *.rar
# config file .idea/
|
删除远程仓库文件
如果要删除的文件已经被git跟踪,那么即使添加到.gitignore也是没有用的,
具体操作步骤:
- 预览将要删除的文件
加上 -n
表示只是展示,不会删除任何文件
1
|
git rm -r -n --cached filename
|
- 确定无误后删除文件:
1
|
git rm -r --cached filename
|
- 提交到本地并推送到远程服务器
1 2
|
git commit -m "提交说明" git push origin master
|
- 修改本地.gitignore文件并提交
标签:文件,
教程,
git,
本地,
仓库,
branch,
分支
From: https://www.cnblogs.com/freeliver54/p/18061759