Git 读音为/git/ ,是一个开源的分布式版本管理系统,是Linux Torvalds为了帮助管理Linux内核开发而开发的一个版本控制软件。
git 和svn的区别:
1 工作原理
1.1 git的四个工作区域
- 远程仓库: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]
来查看指定文件的状态。
1.3 本地工作流
你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录
,它持有实际文件;第二个是 缓存区(Index)
,它像个缓存区域,临时保存你的改动;最后是 HEAD
,指向你最近一次提交后的结果。
1.4 分支
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”。master分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,一般会新建dev分支进行开发,dev分支代码稳定后再将它们合并到master分支上。
1.5 需要记住的命令
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
| git add <filename> git add . git add *
git commit -m "提交信息"
|
2.4 推送改动
1 2 3 4 5 6
| 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
git merge <branch>
git add <filename> git commit
git diff <source_branch> <target_branch>
|
2.7 标签
1 2 3
| git tag 1.0.0 1b2e1d63ff
|
2.8 日志
2.9 diff
1
| git diff ver1..ver2 [filename]
|
2.10 替换本地改动(慎用,未提交的本地修改内容可能丢失)
1 2 3 4 5 6
| git checkout -- <filename>
git fetch origin git reset --hard origin/master
|
2.11 git reset
git reset 的三种模式soft
,mixed
,hard
:
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
*.log
*.ctxt
.DS_Store
*.jar *.war *.nar *.ear *.zip *.tar *.tar.gz *.rar
.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文件并提交