From 6da117d859399fac2b2bc328b34fba352dffa863 Mon Sep 17 00:00:00 2001 From: yinkanglong Date: Wed, 16 Jun 2021 11:05:00 +0800 Subject: [PATCH] =?UTF-8?q?git=20=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Git/1 基本操作.md | 80 ++++++ Git/10 标签管理.md | 61 ++++ Git/4 版本回退.md | 220 +++++++++++++++ Git/7 远程操作.md | 118 ++++++++ Git/8 分支管理.md | 110 ++++++++ Git/9 多人协作.md | 54 ++++ Git/git.md | 451 ------------------------------ Git/github.md | 2 +- Git/image/2021-06-15-11-04-57.png | Bin 0 -> 56755 bytes 9 files changed, 644 insertions(+), 452 deletions(-) create mode 100644 Git/1 基本操作.md create mode 100644 Git/10 标签管理.md create mode 100644 Git/4 版本回退.md create mode 100644 Git/7 远程操作.md create mode 100644 Git/8 分支管理.md create mode 100644 Git/9 多人协作.md delete mode 100644 Git/git.md create mode 100644 Git/image/2021-06-15-11-04-57.png diff --git a/Git/1 基本操作.md b/Git/1 基本操作.md new file mode 100644 index 00000000..c8861f8b --- /dev/null +++ b/Git/1 基本操作.md @@ -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从缓存区恢复这个文件。 diff --git a/Git/10 标签管理.md b/Git/10 标签管理.md new file mode 100644 index 00000000..d5bda1a2 --- /dev/null +++ b/Git/10 标签管理.md @@ -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 +``` + +从远程删除标签,先在本地删除标签,然后将操作推送到远程。 + diff --git a/Git/4 版本回退.md b/Git/4 版本回退.md new file mode 100644 index 00000000..fddd5159 --- /dev/null +++ b/Git/4 版本回退.md @@ -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 \ No newline at end of file diff --git a/Git/7 远程操作.md b/Git/7 远程操作.md new file mode 100644 index 00000000..7c84ae76 --- /dev/null +++ b/Git/7 远程操作.md @@ -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 +``` + +创建一个新的远程连接并添加名字 +``` +git remote rm +``` + +移除远程仓库的链接 + +### **git fetch** + +``` +git fetch +``` + +拉取仓库中的所有分支(包括相关的文件和所有的提交) +``` +git fetch +``` + +拉取制定仓库中的所有分支(包括相关的文件和所欲的提交) + +> 注意,这个步骤知识拉取远程的分支,在本地并没有合并也没有生成本地分支,知识一个可读的远程分支。 +> * 使用git branch -r 命令可以查看所有只读的远程分支。 +> * 使用gitcheckout命令可以创建本地分支,并与远程分支关联。 +> * 使用git merge命令可以将远程分支与本地分支合并。 + +### **git pull** +``` +git pull remote +``` + +拉取当前分支对应的远程副本,并将远程副本的更改写入本地副本。相当于git fetch之后git merge。 + +``` +git pull -rebase \ +``` + +使用git rebase命令合并远程分支与本地分支,不使用git merge + +### **git push** + +``` +git push \ +``` + +将制定分支推送到远程分支。包括所有的文件和提交。 + +``` +git push --force +``` +强制推送 +``` +git push --all +``` + +本地所有的分支推送到远程仓库当中 + +``` +git push --tags +``` + +将本地所有标签推送到远程仓库中 diff --git a/Git/8 分支管理.md b/Git/8 分支管理.md new file mode 100644 index 00000000..7b835483 --- /dev/null +++ b/Git/8 分支管理.md @@ -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 不合并,强制删除 +``` \ No newline at end of file diff --git a/Git/9 多人协作.md b/Git/9 多人协作.md new file mode 100644 index 00000000..742f9403 --- /dev/null +++ b/Git/9 多人协作.md @@ -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 \ \ +``` + +如果Git push失败,说明,当前的版本不是最新的版本。git pull +可以将远程库中的最新版本拉去到本地。 + +``` +git branch --set-upstream dev origin/\ +``` +这样会制定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。 diff --git a/Git/git.md b/Git/git.md deleted file mode 100644 index 12f87de4..00000000 --- a/Git/git.md +++ /dev/null @@ -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 -``` - -创建一个新的远程连接并添加名字 -``` -git remote rm -``` - -移除远程仓库的链接 - -### **git fetch** - -``` -git fetch -``` - -拉取仓库中的所有分支(包括相关的文件和所有的提交) -``` -git fetch -``` - -拉取制定仓库中的所有分支(包括相关的文件和所欲的提交) - -> 注意,这个步骤知识拉取远程的分支,在本地并没有合并也没有生成本地分支,知识一个可读的远程分支。 -> * 使用git branch -r 命令可以查看所有只读的远程分支。 -> * 使用gitcheckout命令可以创建本地分支,并与远程分支关联。 -> * 使用git merge命令可以将远程分支与本地分支合并。 - -### **git pull** -``` -git pull remote -``` - -拉取当前分支对应的远程副本,并将远程副本的更改写入本地副本。相当于git fetch之后git merge。 - -``` -git pull -rebase \ -``` - -使用git rebase命令合并远程分支与本地分支,不使用git merge - -### **git push** - -``` -git push \ -``` - -将制定分支推送到远程分支。包括所有的文件和提交。 - -``` -git push --force -``` -强制推送 -``` -git push --all -``` - -本地所有的分支推送到远程仓库当中 - -``` -git push --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 \ \ -``` - -如果Git push失败,说明,当前的版本不是最新的版本。git pull -可以将远程库中的最新版本拉去到本地。 - -``` -git branch --set-upstream dev origin/\ -``` -这样会制定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 -``` - -从远程删除标签,先在本地删除标签,然后将操作推送到远程。 - diff --git a/Git/github.md b/Git/github.md index 7aac4273..5a01dd3a 100644 --- a/Git/github.md +++ b/Git/github.md @@ -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) diff --git a/Git/image/2021-06-15-11-04-57.png b/Git/image/2021-06-15-11-04-57.png new file mode 100644 index 0000000000000000000000000000000000000000..a6f761e7113d110a12c40640b10292fb16beca10 GIT binary patch literal 56755 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 kM