更新记录 2021.8.18 增加git基本配置信息
Git 与 SVN
文章 SVN 和 Git 区别
最大的区别就是git是去中心化的,打个比方当没有网络的情况下,我依旧可以提交自己的代码。但是svn当没有网络的时候就无法提交,所以git本地就是一个存储库。
git合并操作保留原有的提交过程
git可以修正提交,在自己的分支上修正提交不会影响到大家,svn没有干净的提交,影响 code Review.
基本概念
github 中相关概念
- 复制克隆项目 (Fork)
- 该fork的项目是独立存在的 复制过来自己用
- 发起请求 (Pull Request)
- 你新增了功能,觉得不错,想和原本项目一起
- 关注(Watch)
- 关注项目,当项目更新可以接受到通知
- 事务卡片(Issus)
- 发现代码bug 但是目前没有成型代码 需要讨论时用
git 常见操作
远程仓库的使用
管理远程仓库包括了解如何添加远程仓库、移除无效的远程仓库、管理不同的远程分支并定义它们是否被跟踪等等
查看远程仓库
$ git remote
-v 显示需要读写远程仓库使用的git保存的简写与其对应的url
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
添加远程仓库
git remote add <shortname> <url> //同时指定一个方便使用的简写
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
pb https://github.com/paulboone/ticgit (fetch)
pb https://github.com/paulboone/ticgit (push)
现在你可以在命令行中使用字符串 pb 来代替整个 URL。 例如,如果你想拉取 Paul 的仓库中有但你没有的信息,可以运行 git fetch pb:
$ git fetch pb
从远程仓库中抓取和拉取
$ git fetch <remote>
这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
如果你使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。 所以,git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。 必须注意 git fetch 命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。
如果你的当前分支设置了跟踪远程分支, 那么可以用 git pull 命令来自动抓取后合并该远程分支到当前分支。
推送到远程仓库
git push <remote> <branch>
当你想要将 master 分支推送到 origin 服务器时(再次说明,克隆时通常会自动帮你设置好那两个名字)
$ git push origin master
查看某个远程仓库
git remote show <remote> 命令
$ git remote show origin
远程仓库的重命名与移除
你可以运行 git remote rename 来修改一个远程仓库的简写名。 例如,想要将 pb 重命名为 paul,可以用 git remote rename 这样做:
$ git remote rename pb paul
$ git remote
origin
paul
删除
git remote remove
或
git remote rm :
$ git remote remove paul
$ git remote
origin
新建分支
//创建 develop 本地分支
git branch develop
//创建本地分支并切换
git checkout -b develop
//创建远程分支 (创建本地分支并进行推送)
git checkout -b develop
git push origin develop
删除分支
# 删除远程分支
git push origin :<branchName>
git push origin --delete <branch-name> # >= 1.7.0
合并分支
# 将 develop 分支代码合并到 master
git checkout master //先切换到master分支
git merge develop //合并分支
解决冲突
情景:git 发现本地文件在远端做了修改,需要进行git pull
先暂存本地代码 在拉取远端
git pull
强制拉取覆盖本地
场景 本地有进行修改并进行保存,拉取的文件有冲突
git fetch --all
git reset --hard origin/master
git pull
git相关命令
查看当前配置 git config —list
第一次使用git配置用户信息
配置用户名 git config —global user.name “your name”
配置用户邮箱 git config —global user.email “youremail@github.com”
工作区与暂存区的交互
- 新建仓库 ```javascript
- git init
2.git clone
- 提交
```javascript
1.提交工作区所有文件到暂存区 git add . (常用)
2.提交工作区指定文件到暂存区 git add <file1> <file2> ...
3.提交工作区某个文件夹中所有文件到暂存区 git add [dir
撤销
1.删除工作区文件 并且也从暂存区删除对应文件的记录 git rm <file1> <file2>
2.取消暂存区已经暂存的文件 git reset HEAD <file> ...
3.隐藏当前变更,以便能够切换分支 git stash
查询信息
1.查询当前工作区所有文件的状态 git status
2.比较工作区中当前文件和暂存区之间的差异 git diff
暂存区上的操作命令
提交文件到版本库
1.暂存区->本地仓库 git commit -m "info"
2.撤销上一次提交 git commit --amend
查看信息
1.比较暂存区与上一版本的差异 git diff --cache
2.查看提交历史 git log
分支管理
1.创建分支 git branch <branch-name> 如 git branch testing
2.切换分支 git checkout <branch-name> 如 git checkout testing
3.新建并切换到新建分支上 git checkout -b <branch-name>
4.删除分支 git branch -d <branch-name>
5.将当前分支与指定分支进行合并 git merge <branch-name>
本地仓库上的操作
1.查看本地仓库关联的远程仓库 git remote -v 显示远程仓库的url地址
2.添加远程仓库 git remote add [remote-name] [url]
忽略文件 .gitignore
本地文件夹上传到github
https://github.com/doraemon00/wx-mall/tree/master
See git-config(1) for details.
I learned that I can make it work with:
git branch —set-upstream my_branch origin/my_branch
注意,推送到远程分支后,默认也不是跟踪snsconnct:mater分支,你只要没有显示指定,git pull的时候,就会提示你。
丢弃本地所有的改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它
git fetch origin
git reset --hard origin/master
[
](https://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html)
本地文件夹关联远程仓库
在github上新建一个文件夹
关联仓库
git remote add origin https://github.com/doraemon00/git-test.git
git push -u origin master
分支
回滚历史版本
git reset --hard 版本号
git reflog 查看所有版本
创建分支
注意:需要有一次提交记录
git branch 分支名
git branch 查看分支
切换分支
git checkout 分支名
删除分支
git branch -D 分支名
创建并切换分支
git checkout -b 分支名
添加文件到历史此时两个分支就没关系了
删除分支时 当前用户不能在当前要删除的分支上
文件修改 切换分支
git stash 暂存文件
git stash pop 还原暂存的内容
分支有更改不能直接切换 可以提交更改或者暂存更改,暂存使用过渡区覆盖掉工作区
合并分支
git merge 分支名
其它命令
创建一个有内容的文件
往文件中写入
echo hello(内容) > 1.txt 一个大于号
往文件中追加内容
echo hello(内容) >> 1.txt 两个大于号
问题报错:
git 错误 fatal: Not a valid object name: ‘master’.
问题场景:新建git项目或刚为已存在项目创建了git仓库,想用git branch dev创建dev分支或用git checkout -b dev创建并切换到dev分支时报错。
原因:刚创建的git仓库默认的master分支要在第一次commit之后才会真正建立,否则就像你声明了个对象但没初始化一样
解决办法:先git add .添加所有项目文件到本地仓库缓存,再git commit -m “init commit”提交到本地仓库,之后就可以随心所欲地创建或切换分支了。(这里给出的是可以直接操作成功的,add和commit可以按自己需要写)。
删除分支报错
Cannot delete branch ‘dev’ checked out at ‘F:/Html-Test/vue/8.29/git/git-project’
切换分支 两个分支之间切换
原因是因为不可以有两个工作区
标签
https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E6%89%93%E6%A0%87%E7%AD%BE
列出标签git tag
创建标签
- 附注标签
- 轻量标签
git tag v1.0
git show v1.0
共享标签**git push origin v1.0**
git 提交规范
feat 新功能
fix 修补 bug
docs 文档
style 格式
refactor 重构
test 增加测试
chore 构建过程、辅助工具
perf 提高性能
文章
https://juejin.im/post/5afc5242f265da0b7f44bee4
https://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html
其它操作
携带账号密码进行下载
git clone http://doraemon:doraemon@gitlab.yuanxiatech.com/xgj/website.git
git clone http://账号:密码@项目地址
文章索引
https://blog.csdn.net/weixin_41413511/article/details/105073305