Merge branch 'master' of gitee.com:Eyestorm/notes

This commit is contained in:
Estom
2021-06-17 15:54:36 +08:00
9 changed files with 644 additions and 452 deletions

80
Git/1 基本操作.md Normal file
View File

@@ -0,0 +1,80 @@
Git的本地操作
> 参考文献
> * [git使用教程](https://github.com/geeeeeeeeek/git-recipes/wiki)
## 1 git安装
- Linux上通过命令行能够很轻松的部署好git
- Windows上需要安装GitBash模拟linux命令行
- 安装完成后需要配置全局信息的命令
```
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
```
## 2 创建版本库
```
git init
```
生成.git文件将这个目录初始化为一个版本的仓库。
```
git add readme.txt
```
将文件添加到缓冲区,可以连续多次向缓冲区中添加东西
```
git commit -m "wrote a message"
```
将缓冲区的文件提交到历史记录当中当中,可以一次提交对缓冲区的多次修改。
## 3 时光穿梭机
```
git status
```
用来查看当前仓库的状态。主要有changes not staged for
commit状态工作区有变化没有提交chages to be
committed状态缓存区有变化等待提价
```
git diff readme.txt
```
用来对比工作区和历史记录内容的差别。
## 5 工作区和暂存区
### **概念理解**
- 工作区Wording Directory在电脑中能够看到的目录是工作区
- 版本库Repository工作区有一个隐藏的目录.git是版本库
- 版本库中有Stage暂存区和master等分支以及一个纸箱master的指针HEAD
- git跟踪管理的是对文件的修改而并非文件本身
### **撤销修改**
```
git checkout --readme.txt
```
把readme.txt在工作区的修改全部撤销掉。如果缓存区有readme.txt的中间状态则从缓存区恢复如果缓存区没有readme.txt的中间状态则从版本库中恢复。
```
git reset HEAD readme.txt
```
把readmen.txt在缓存区的修改全部撤销掉。但是依然会保留工作区的修改。
### **删除文件**
```
git rm test.txt
```
把某个文件从缓存区删掉然后commit之后会从版本库删掉。如果删错了可以通过checkout从缓存区恢复这个文件。

61
Git/10 标签管理.md Normal file
View File

@@ -0,0 +1,61 @@
## 10 标签管理
### **创建标签**
```
git tag v1.0
```
对当前版本打标签为v1.0
```
git tag
```
查看所有已经创建的标签
```
git tag v0.9 6.225
```
对指定id的版本打标签
```
git show v0.9
```
查看标签信息
```
git tag -a v0.1 -m "version 0.1 released" 3628164
```
创建带有标签说明的标签
### **操作标签**
```
git tag -d v0.1
```
删除制定版本的标签
```
git push origin v1.0
```
推送某个标签到远程
```
git push origin --tags
```
一次性推送所有标签。
```
git tag -d v0.9
git push origin :refs/tags/v0.9
```
从远程删除标签,先在本地删除标签,然后将操作推送到远程。

220
Git/4 版本回退.md Normal file
View File

@@ -0,0 +1,220 @@
# 4 版本回退
## 1 git的工作流
### 提交工作流
* 工作区即自己当前分支所修改的代码git add xx 之前的!不包括 git add xx 和 git commit xxx 之后的。
* 暂存区:已经 git add xxx 进去,且未 git commit xxx 的。
* 本地分支已经git commit -m xxx 提交到本地分支的。
![](../Git/image/2021-06-15-11-04-57.png)
### 回滚工作流
在上传代码到远程仓库的时候,不免会出现问题,任何过程都有可能要回滚代码:
git reset的作用是修改HEAD的位置即将HEAD指向的位置改变为之前存在的某个版本。
```
git reset --hard HEAD^
```
即往前回退一个版本回退完了后工作区就是上一个版本的代码了并且是clean的。
```
git reset --soft HEAD^
```
往前回退一个版本,并且将这次错误的提交的代码改动,放在暂存区里。
```
git reset --mixed HEAD^(和不带参数是一样的)
```
往前回退一个版本,并且将这次错误的提交的代码改动,放在工作区里。
## 2 Git撤销&回滚操作(git reset 和 get revert)
### 在工作区的代码
```
git checkout -- a.txt # 丢弃某个文件,或者
git checkout -- . # 丢弃全部
```
* 注意git checkout . 丢弃全部也包括新增的文件会被删除、删除的文件会恢复回来、修改的文件会回去。这几个前提都说的是回到暂存区之前的样子。对之前保存在暂存区里的代码不会有任何影响。对commit提交到本地分支的代码就更没影响了。当然如果你之前压根都没有暂存或commit那就是回到你上次pull下来的样子了。
### 代码git add到缓存区并未commit提交
```
git reset HEAD . 或者
git reset HEAD a.txt
```
* 这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化
### git commit到本地分支、但没有git push到远程
```
git log # 得到你需要回退一次提交的commit id
git reset --hard # 回到其中你想要的某个版
```
或者
```
git reset --hard HEAD^ # 回到最新的一次提交
```
或者
```
git reset HEAD^ # 此时代码保留,回到 git add 之前
```
### it push把修改提交到远程仓库
1. 通过git reset是直接删除指定的commit
```
git log # 得到你需要回退一次提交的commit id
git reset --hard
git push origin HEAD --force # 强制提交一次,之前错误的提交就从远程仓库删除
```
2. 通过git revert是用一次新的commit来回滚之前的commit
```
git log # 得到你需要回退一次提交的commit id
git revert # 撤销指定的版本,撤销也会作为一次提交进行保存
```
3. git revert 和 git reset的区别
- git revert是用一次新的commit来回滚之前的commit此次提交之前的commit都会被保留
- git reset是回到某次提交提交及之前的commit都会被保留但是此commit id之后的修改都会被删除
## 3 场景
### 场景一:
糟了我刚把不想要的代码commit到本地仓库中了但是还没有做push操作
### 场景二:
彻底完了,刚线上更新的代码出现问题了,需要还原这次提交的代码!
### 场景三:
刚才我发现之前的某次提交太愚蠢了,现在想要干掉它!
## 4 操作
### 针对场景一
在未进行git push前的所有操作都是在“本地仓库”中执行的。我们暂且将“本地仓库”的代码还原操作叫做“撤销”
* 情况一文件被修改了但未执行git add操作(working tree内撤销)
```
git checkout fileName
git checkout .
```
* 情况二同时对多个文件执行了git add操作但本次只想提交其中一部分文件
```
$ git add *
$ git status
# 取消暂存
$ git reset HEAD
```
* 情况三文件执行了git add操作但想撤销对其的修改index内回滚
````
# 取消暂存
git reset HEAD fileName
# 撤销修改
git checkout fileName
````
* 情况四修改的文件已被git commit但想再次修改不再产生新的Commit
```
# 修改最后一次提交
$ git add sample.txt
$ git commit --amend -m"说明"
```
* 情况五已在本地进行了多次git commit操作现在想撤销到其中某次Commit
```
git reset [--hard|soft|mixed|merge|keep] [commit|HEAD]
```
### 针对场景二
已进行git push即已推送到“远程仓库”中。我们将已被提交到“远程仓库”的代码还原操作叫做“回滚”注意对远程仓库做回滚操作是有风险的需提前做好备份和通知其他团队成员
如果你每次更新线上都会打tag那恭喜你你可以很快的处理上述场景二的情况
```
git checkout
```
如果你回到当前HEAD指向
```
git checkout
```
* 情况一:撤销指定文件到指定版本
```
# 查看指定文件的历史版本
git log
# 回滚到指定commitID
git checkout
```
* 情况二:删除最后一次远程提交
* 方式一使用revert
* 方式二使用reset
```
git revert HEAD
git push origin master
```
```
git reset --hard HEAD^
git push origin master -f
```
二者区别:
revert是放弃指定提交的修改但是会生成一次新的提交需要填写提交注释以前的历史记录都在
reset是指将HEAD指针指到指定提交历史记录中不会出现放弃的提交记录。
* 情况三:回滚某次提交
```
# 找到要回滚的commitID
git log
git revert commitID
```
删除某次提交
```
git log --oneline -n5
```
Git撤销&回滚操作(git reset 和 get revert)2
```
git rebase -i "commit id"^
```
注意:需要注意最后的^号意思是commit id的前一次提交
```
git rebase -i "5b3ba7a"^
```
Git撤销&回滚操作(git reset 和 get revert)3
在编辑框中删除相关commit如pick 5b3ba7a test2然后保存退出如果遇到冲突需要先解决冲突
```
git push origin master -f
```
通过上述操作如果你想对历史多个commit进行处理或者可以选择git rebase -i只需删除对应的记录就好。rebase还可对 commit 消息进行编辑以及合并多个commit

118
Git/7 远程操作.md Normal file
View File

@@ -0,0 +1,118 @@
## 7 Git的远程操作
远程操作主要是指在不同的仓库之间进行提交和代码更改。是一个明显的对等的分布式系统。其中本地个仓库与远程仓库不同的远程仓库之间都可以建立这种关系。这种关系之间的操作主要有pull和push。
### **远程仓库**
创建SSH key远程仓库和本地仓库一般是通过ssh通信的需要ssh通信的加密钥匙。
id_rsa是私钥id_rsa.pub是公钥可以告诉别人。
```
ssh-keygen -t rsa -C 'yinkanglong@163.com'
```
登录github添加公钥内容。建立本地与远程仓库的通信协议
### **添加远程仓库**
github的界面操作可以很轻松的创建一个远程仓库。但如果想要直接上传自己本地的完整git库必须创建一个没有lisence和readme的空库。
```
git remote add origin git@github.com:michaelliao/learngit.git
```
将本地仓库和远程仓库进行关联。一般都叫远程关联仓库为origin本地的主干分支一般名为master
```
git push -u origin master
```
将本地的主干分支master推送到远程的origin分支上。-u参数实现了两个分支的关联将远程的git仓库的master和本地的master进行了分支管理当再次执行时只需要使用git
push origin master命令。
### **从远程仓库克隆**
```
git clone git@github.com:michaelliao/gitskills.git
```
### **git remote**
```
git remote
```
列出你和远程仓库之间的远程连接
```
git remote -v
```
列出每个连接的名字和url
```
git remote add <name> <url>
```
创建一个新的远程连接并添加名字
```
git remote rm <name>
```
移除远程仓库的链接
### **git fetch**
```
git fetch <remote>
```
拉取仓库中的所有分支(包括相关的文件和所有的提交)
```
git fetch <remote> <branch>
```
拉取制定仓库中的所有分支(包括相关的文件和所欲的提交)
> 注意,这个步骤知识拉取远程的分支,在本地并没有合并也没有生成本地分支,知识一个可读的远程分支。
> * 使用git branch -r 命令可以查看所有只读的远程分支。
> * 使用gitcheckout命令可以创建本地分支并与远程分支关联。
> * 使用git merge命令可以将远程分支与本地分支合并。
### **git pull**
```
git pull remote
```
拉取当前分支对应的远程副本并将远程副本的更改写入本地副本。相当于git fetch之后git merge。
```
git pull -rebase \<remote\>
```
使用git rebase命令合并远程分支与本地分支不使用git merge
### **git push**
```
git push <remote> \<branch\>
```
将制定分支推送到远程分支。包括所有的文件和提交。
```
git push <remote> --force
```
强制推送
```
git push <remote> --all
```
本地所有的分支推送到远程仓库当中
```
git push <remote> --tags
```
将本地所有标签推送到远程仓库中

110
Git/8 分支管理.md Normal file
View File

@@ -0,0 +1,110 @@
## 8 分支管理
这里主要体现的git的功能的分离这才是真正的git吧。每一个分支都是一个单独的可以分离的工作单位。每个用户可以建立不同的分支进行工作最终提交到同一个开发分支上。一个用户可以建立不同的分支实现不同的功能最终提交到同一个用户分支上。分支的灵活性可以让我们很容易的实现不同分工的分割。
### **创建分支**
```
git checkout -b dev
```
创建分支并且将工作目录切换到dev的工作目录上。
```
git branch dev
```
使用当前版本分支创建新的分支(即添加一个分支指针)。
```
git checkout dev
```
将工作区切换到某一个分支指针所指的版本上。
```
git branch
```
会列出所有的分支目录。
### **分支合并**
```
git merge dev
```
将dev分支合并到当前工作目录下的分支上不一定是产生他的父分支
```
git branch -d dev
```
用来删除一个已经无效的分支指正,但是在这个分支指针上左右的操作都会保留。
### **解决冲突**
- 当合并过程中出现冲突,会进入长途解决工作区,手动解决后提交,就会退出。
- 关于一点,提交后的分支有必要继续工作吗,都行。完全可以提交后删掉重新创建一个分支,获取主干分支上集成的最新内容,然后继续工作。也可以直接在分支上合并一次主干分支,然后得到最新的内容,继续在原来的分支上进行工作。
```
git log --graph
```
可以查看分支合并图。
### **分支合并方式**
```
git merge --no-ff -m "merge messge" dev --no-ff
```
不适用fastfoward方式进行合并会产生一个新的版本节点。加上-m参数是因为这种方式合并过程中会自己提交合并后的版本。
### **分支管理**
- 团队合作的分支管理组图就是你们要的方式
![clipboard.png](media/202749bd52950c0c839d73190cd2fd9d.png)
### **BUG分支**
- 因为总会在自己工作的过程中出现紧急的需要更改的bug但是现在工作区中的内容还不能提交所以必须生成现在工作区的一个快照等处理完紧急的bug之后再来回复工作区的内容。
```
git stash
```
将当前的工作现场储存起来等到修复完成bug之后可以再次进行更改。工作现场包括工作区和stage缓存区。然后可以清空工作区和缓存区的内容新建bug分支进行工作。
```
git stash list
```
用来查看保存中的工作区。
```
git stash apply stash@{0}
```
恢复stash内容但并不清楚stash列表中的内容。
```
get stash drop
```
用来删除stash列表中的内容。因为已经恢复或者没有必要恢复
```
git stash pop
```
可以用来弹出stash列表中的内容。
### **Feature分支**
- 当添加一个新的功能的时候,因为是一些实验性的代码,所以要创建一个单独的分支进行处理。
- git checkout -b feature-vulcan
创建一个新的功能分支
```
git status
git add vulcan.py
git commit -m "add feature vulcan"
git checkout dev
git merge vulcan.py
git branch -D feature-vulcan 不合并,强制删除
```

54
Git/9 多人协作.md Normal file
View File

@@ -0,0 +1,54 @@
## 9 多人协作
通过远程库的push和pull操作实现夺人合作
### **推送分支或分支内容**
- 当从远程库进行克隆的时候实际上已经将本地master分支和远程的master分支进行乐关联。
```
git remote [-v]
```
可以显示与远程库关联的信息
```
git push origin master
```
推送分支,吧分支上的所有本地内容提交到远程库中的相同分支当中。
### **哪些分支需要推送**
- mater分支是主分支需要实时推送
- dev是开发分支所有成员都要在上面工作。也需要与远程同步。
- bug分支只需要在本地修复bug没有必要推送到远程。
- feature分支可以不用推送到远程。单人开发不用夺人开发要推送到远程。
### **抓取分支或者分支的内容**
```
git checkout -b dev origin/dev
```
可以用来抓取远程分支dev这样会建立一个本地的本地的dev分支与远程的dev分支进行关联可以直接实现dev分支的控制push
```
git pull \<remote\> \<branch\>
```
如果Git push失败说明当前的版本不是最新的版本。git pull
可以将远程库中的最新版本拉去到本地。
```
git branch --set-upstream dev origin/\<branch\>
```
这样会制定git的本地分支与远程的分支之间的链接。
- 如果git pull有冲突与分支合并中解决冲突的方法一直。
### **多人协作的协作模式通常是这样:**
1. 首先可以试图⽤git push origin branch-name推送自己的修改
2. 如果推送失败则因为远程分支比你的本地更新需要先用git pull试图合并
3. 如果合并有冲突,则解决冲突,并在本地提交;
4. 没有冲突或者解决掉冲突后再用git push origin branch-name推送就能成功
5. 如果git pull提“no tracking information”则说明本地分支和远程分支的链接关系没有创建用命令git branch --set-upstream branch-name origin/branch-name。

View File

@@ -1,451 +0,0 @@
Git的本地操作
> 参考文献
> * [git使用教程](https://github.com/geeeeeeeeek/git-recipes/wiki)
## 1 git安装
- Linux上通过命令行能够很轻松的部署好git
- Windows上需要安装GitBash模拟linux命令行
- 安装完成后需要配置全局信息的命令
```
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
```
## 2 创建版本库
```
git init
```
生成.git文件将这个目录初始化为一个版本的仓库。
```
git add readme.txt
```
将文件添加到缓冲区,可以连续多次向缓冲区中添加东西
```
git commit -m "wrote a message"
```
将缓冲区的文件提交到历史记录当中当中,可以一次提交对缓冲区的多次修改。
## 3 时光穿梭机
```
git status
```
用来查看当前仓库的状态。主要有changes not staged for
commit状态工作区有变化没有提交chages to be
committed状态缓存区有变化等待提价
```
git diff readme.txt
```
用来对比工作区和历史记录内容的差别。
## 4 版本回退
```
git log
```
用来查看版本的历史记录
```
git log --pretty=oneline
```
在一行显示历史记录
```
git reset --hard HEAD\^
```
回退到上一次的历史记录
```
git reset --hard id
```
回退到指定id的版本
```
git reflog
```
用来查看所有操作的历史记录可以使用reset命令去定位到任何版本
## 5 工作区和暂存区
### **概念理解**
- 工作区Wording Directory在电脑中能够看到的目录是工作区
- 版本库Repository工作区有一个隐藏的目录.git是版本库
- 版本库中有Stage暂存区和master等分支以及一个纸箱master的指针HEAD
- git跟踪管理的是对文件的修改而并非文件本身
### **撤销修改**
```
git checkout --readme.txt
```
把readme.txt在工作区的修改全部撤销掉。如果缓存区有readme.txt的中间状态则从缓存区恢复如果缓存区没有readme.txt的中间状态则从版本库中恢复。
```
git reset HEAD readme.txt
```
把readmen.txt在缓存区的修改全部撤销掉。但是依然会保留工作区的修改。
### **删除文件**
```
git rm test.txt
```
把某个文件从缓存区删掉然后commit之后会从版本库删掉。如果删错了可以通过checkout从缓存区恢复这个文件。
## 7 Git的远程操作
远程操作主要是指在不同的仓库之间进行提交和代码更改。是一个明显的对等的分布式系统。其中本地个仓库与远程仓库不同的远程仓库之间都可以建立这种关系。这种关系之间的操作主要有pull和push。
### **远程仓库**
创建SSH key远程仓库和本地仓库一般是通过ssh通信的需要ssh通信的加密钥匙。
id_rsa是私钥id_rsa.pub是公钥可以告诉别人。
```
ssh-keygen -t rsa -C 'yinkanglong@163.com'
```
登录github添加公钥内容。建立本地与远程仓库的通信协议
### **添加远程仓库**
github的界面操作可以很轻松的创建一个远程仓库。但如果想要直接上传自己本地的完整git库必须创建一个没有lisence和readme的空库。
```
git remote add origin git@github.com:michaelliao/learngit.git
```
将本地仓库和远程仓库进行关联。一般都叫远程关联仓库为origin本地的主干分支一般名为master
```
git push -u origin master
```
将本地的主干分支master推送到远程的origin分支上。-u参数实现了两个分支的关联将远程的git仓库的master和本地的master进行了分支管理当再次执行时只需要使用git
push origin master命令。
### **从远程仓库克隆**
```
git clone git@github.com:michaelliao/gitskills.git
```
### **git remote**
```
git remote
```
列出你和远程仓库之间的远程连接
```
git remote -v
```
列出每个连接的名字和url
```
git remote add <name> <url>
```
创建一个新的远程连接并添加名字
```
git remote rm <name>
```
移除远程仓库的链接
### **git fetch**
```
git fetch <remote>
```
拉取仓库中的所有分支(包括相关的文件和所有的提交)
```
git fetch <remote> <branch>
```
拉取制定仓库中的所有分支(包括相关的文件和所欲的提交)
> 注意,这个步骤知识拉取远程的分支,在本地并没有合并也没有生成本地分支,知识一个可读的远程分支。
> * 使用git branch -r 命令可以查看所有只读的远程分支。
> * 使用gitcheckout命令可以创建本地分支并与远程分支关联。
> * 使用git merge命令可以将远程分支与本地分支合并。
### **git pull**
```
git pull remote
```
拉取当前分支对应的远程副本并将远程副本的更改写入本地副本。相当于git fetch之后git merge。
```
git pull -rebase \<remote\>
```
使用git rebase命令合并远程分支与本地分支不使用git merge
### **git push**
```
git push <remote> \<branch\>
```
将制定分支推送到远程分支。包括所有的文件和提交。
```
git push <remote> --force
```
强制推送
```
git push <remote> --all
```
本地所有的分支推送到远程仓库当中
```
git push <remote> --tags
```
将本地所有标签推送到远程仓库中
## 8 分支管理
这里主要体现的git的功能的分离这才是真正的git吧。每一个分支都是一个单独的可以分离的工作单位。每个用户可以建立不同的分支进行工作最终提交到同一个开发分支上。一个用户可以建立不同的分支实现不同的功能最终提交到同一个用户分支上。分支的灵活性可以让我们很容易的实现不同分工的分割。
### **创建分支**
```
git checkout -b dev
```
创建分支并且将工作目录切换到dev的工作目录上。
```
git branch dev
```
使用当前版本分支创建新的分支(即添加一个分支指针)。
```
git checkout dev
```
将工作区切换到某一个分支指针所指的版本上。
```
git branch
```
会列出所有的分支目录。
### **分支合并**
```
git merge dev
```
将dev分支合并到当前工作目录下的分支上不一定是产生他的父分支
```
git branch -d dev
```
用来删除一个已经无效的分支指正,但是在这个分支指针上左右的操作都会保留。
### **解决冲突**
- 当合并过程中出现冲突,会进入长途解决工作区,手动解决后提交,就会退出。
- 关于一点,提交后的分支有必要继续工作吗,都行。完全可以提交后删掉重新创建一个分支,获取主干分支上集成的最新内容,然后继续工作。也可以直接在分支上合并一次主干分支,然后得到最新的内容,继续在原来的分支上进行工作。
```
git log --graph
```
可以查看分支合并图。
### **分支合并方式**
```
git merge --no-ff -m "merge messge" dev --no-ff
```
不适用fastfoward方式进行合并会产生一个新的版本节点。加上-m参数是因为这种方式合并过程中会自己提交合并后的版本。
### **分支管理**
- 团队合作的分支管理组图就是你们要的方式
![clipboard.png](media/202749bd52950c0c839d73190cd2fd9d.png)
### **BUG分支**
- 因为总会在自己工作的过程中出现紧急的需要更改的bug但是现在工作区中的内容还不能提交所以必须生成现在工作区的一个快照等处理完紧急的bug之后再来回复工作区的内容。
```
git stash
```
将当前的工作现场储存起来等到修复完成bug之后可以再次进行更改。工作现场包括工作区和stage缓存区。然后可以清空工作区和缓存区的内容新建bug分支进行工作。
```
git stash list
```
用来查看保存中的工作区。
```
git stash apply stash@{0}
```
恢复stash内容但并不清楚stash列表中的内容。
```
get stash drop
```
用来删除stash列表中的内容。因为已经恢复或者没有必要恢复
```
git stash pop
```
可以用来弹出stash列表中的内容。
### **Feature分支**
- 当添加一个新的功能的时候,因为是一些实验性的代码,所以要创建一个单独的分支进行处理。
- git checkout -b feature-vulcan
创建一个新的功能分支
```
git status
git add vulcan.py
git commit -m "add feature vulcan"
git checkout dev
git merge vulcan.py
git branch -D feature-vulcan 不合并,强制删除
```
## 9 多人协作
通过远程库的push和pull操作实现夺人合作
### **推送分支或分支内容**
- 当从远程库进行克隆的时候实际上已经将本地master分支和远程的master分支进行乐关联。
```
git remote [-v]
```
可以显示与远程库关联的信息
```
git push origin master
```
推送分支,吧分支上的所有本地内容提交到远程库中的相同分支当中。
### **哪些分支需要推送**
- mater分支是主分支需要实时推送
- dev是开发分支所有成员都要在上面工作。也需要与远程同步。
- bug分支只需要在本地修复bug没有必要推送到远程。
- feature分支可以不用推送到远程。单人开发不用夺人开发要推送到远程。
### **抓取分支或者分支的内容**
```
git checkout -b dev origin/dev
```
可以用来抓取远程分支dev这样会建立一个本地的本地的dev分支与远程的dev分支进行关联可以直接实现dev分支的控制push
```
git pull \<remote\> \<branch\>
```
如果Git push失败说明当前的版本不是最新的版本。git pull
可以将远程库中的最新版本拉去到本地。
```
git branch --set-upstream dev origin/\<branch\>
```
这样会制定git的本地分支与远程的分支之间的链接。
- 如果git pull有冲突与分支合并中解决冲突的方法一直。
### **多人协作的协作模式通常是这样:**
1. 首先可以试图⽤git push origin branch-name推送自己的修改
2. 如果推送失败则因为远程分支比你的本地更新需要先用git pull试图合并
3. 如果合并有冲突,则解决冲突,并在本地提交;
4. 没有冲突或者解决掉冲突后再用git push origin branch-name推送就能成功
5. 如果git pull提“no tracking information”则说明本地分支和远程分支的链接关系没有创建用命令git branch --set-upstream branch-name origin/branch-name。
## 10 标签管理
### **创建标签**
```
git tag v1.0
```
对当前版本打标签为v1.0
```
git tag
```
查看所有已经创建的标签
```
git tag v0.9 6.225
```
对指定id的版本打标签
```
git show v0.9
```
查看标签信息
```
git tag -a v0.1 -m "version 0.1 released" 3628164
```
创建带有标签说明的标签
### **操作标签**
```
git tag -d v0.1
```
删除制定版本的标签
```
git push origin v1.0
```
推送某个标签到远程
```
git push origin --tags
```
一次性推送所有标签。
```
git tag -d v0.9
git push origin :refs/tags/v0.9
```
从远程删除标签,先在本地删除标签,然后将操作推送到远程。

View File

@@ -14,7 +14,7 @@
* Github主页仓库主页——仓库相关的信息和相关操作
## 2 pull request
## 2 fork sycnize
## 2 fork syncize
> 参考文献
> * [https://blog.csdn.net/qq_22918243/article/details/89642445](https://blog.csdn.net/qq_22918243/article/details/89642445)

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB