赞
踩
目录
三、git submodule update --init --recursive
查看分支:git branch
列出所有的Git标签:git tag
查看当前标签:git describe [--tags]
查看标签的详细信息:git show <tag-name>
创建分支:git branch <name>
切换分支:git checkout <name>
可以是标签也可以是分支,比如我们想要它的某一个发行版本git checkout v5.0.2
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
Windows安装:可以从Git官网直接下载安装程序,然后按默认选项安装即可。安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
配置:每个机器都必须自报家门:你的名字和Email地址。
- $ git config --global user.name "Your Name"
- $ git config --global user.email "email@example.com"
注意git config
命令的--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置。
在使用Git将本地仓库推送到远程仓库的时候,发生了如下错误:“fatal: Could not read from remote repository.”
可能的原因:
为解决以上问题,我们需要重新生成一次ssh key ,并重新配置一下仓库账户即可。
0.运行上述git config的命令设置名字和邮箱
1.生成公钥:ssh-keygen -t rsa
2.将id_rsa.pub公钥内容复制到仓库网页中的ssh-setting中
3.上面两步就可以使用git clone正常拉去=取,如果不行,则参考将SSH key 添加到 ssh-agent
4.如果出现对master分支不能进行git push,做法是不能直接push master分支,而是要兴建分支,在该分支上进行push
https://blog.csdn.net/you18131371836/article/details/110404967
2021年7月29日更改
git branch -a 查看当前分支是否是目标分支
git checkout 远程分支 切换成目标分支,比如上面查看当前分支是master分支,因为master分支权限不能提交,要提交代码到jupy分支,应该是本地-远程对应的都是jupy分支,所以这里应该执行git checkout jupy,就切换到了jupy分支。
git pull
git add .
git commit -m "message"
git push
2021年9月29日更新
master分支和jupy分支,后者滞后前者。需要将master分支的内容拉取到本地的jupy分支,然后从本地分支上传到jupy分支,完成jupy分支同步master分支的作用。
git pull
git pull origin master 将master分支的内容拉取到本地的jupy分支
git add . 将jupy本地分支的内容提交到远程jupy分支(它们之间已经做了映射关系)
git push 完成jupy分支同步master分支。即真正的提交
当从远程仓库拉取代码的时候一般都是使用git clone <url>命令来获取,这样我们是将项目整个都克隆到我们本地仓库,包括了分支和主分支maser。有时候我们只需拉取远程仓库指定的某一个分支,那么用git命令该怎么拉取指定某一个分支呢?
1.git clone命令获取
格式:
git clone -b <分支名称> <ssh url>
可以将指定的某一个远程分支拉取到我们本地,而且拉取的本地分支自动和远程同名分支建立追踪关系,它不会将新创建的HEAD指向克隆仓库中HEAD指向的maser主分支,而是指向我们刚拉取下来的分支。
2.git fetch命令获取
和方法一有区别,此方法先将远程的仓库克隆到本地,然后在执行git fetch命令。该命令执行完以后还是处在master主分支的,如果进去目录没有发现想要拉取的仓库文件。此时并不是git fetch命令没有执行,而是我们还没有切换到我们想要拉取的分支上,需要我们执行git checkout命令切换到我们想要拉取的分支上。
格式:
1. git clone <ssh url> // 将整个远程仓库代码克隆到本地仓库
2. cd <项目目录> // 进入项目目录,即进入master主分支
3. git fetch // 将远程仓库的所有分支拷贝到本地仓库
4. git checkout <分支名称> // 切换到想要拉取的指定某一分支的本地分支
3.git checkout -b命令获取
格式:
1. git clone <ssh url> // 将整个远程仓库代码克隆到本地仓库
2. cd <项目目录> // 进入项目目录,即进入master主分支
3. git branch -a // 查看所有分支名称,*表示当前分支
4. git checkout -b <本地分支名称> origin/<远程分支名称> // 拉取远程仓库指定的某一分支,并在本地起名,同时切换到本地分支名称。如果没有指定本地分支名称则默认就是和远程分支名称一样,该命令将本地分支和远程分支建立起一一对应的关系
5. git pull origin <远程分支名称> // 拉取该分支的最新代码。
转自git submodule的使用_--init --recursive-CSDN博客
开发过程中,经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用,而公共代码库的版本管理是个麻烦的事情。今天无意中发现了git的git submodule命令,之前的问题迎刃而解了。
添加
为当前工程添加submodule,命令如下:
git submodule add 仓库地址 路径
仓库地址是指子模块仓库地址,路径指将子模块放置在当前工程下的路径 注意:路径不能以 / 结尾(会造成修改不生效)、不能是现有工程已有的目录(不能順利 Clone)
命令执行完成,会在当前工程根路径下生成一个名为“.gitmodules”的文件,其中记录了子模块的信息。添加完成以后,再将子模块所在的文件夹添加到工程中即可。
删除
submodule的删除稍微麻烦点:首先,要在“.gitmodules”文件中删除相应配置信息。然后,执行“git rm –cached ”命令将子模块所在的文件从git中删除。
下载的工程带有submodule
当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行如下命令:
git submodule update --init --recursive
即可将子模块内容下载下来后工程才不会缺少相应的文件。
【Git】pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
这种情况下,如何保留本地的修改同时又把远程的合并过来呢?
先取决于你是否想要保存本地修改。
1.想要保存则分别在项目中的git bash界面中执行下面语句
- git stash
- git pull origin master
- git stash pop
git stash
的时候会把你本地快照,然后git pull
就不会阻止你了,pull完之后这时你的代码并没有保留你的修改。这时候执行git stash pop
你去本地看会发现发生冲突的本地修改还在。就是说保留了。
2.既然不想保留本地的修改,那好办。直接将本地的状态恢复到上一个commit id 。然后用远程的代码直接覆盖本地就好了。
- git reset --hard 节点SHA
- git pull origin master
错误:bash: $'\302\226git': command not found
解决方案:此种情况常出现在复制、粘贴命令时,命令开头往往会有多余的空格。检查命令中是否有多余的空格,去除多余的空格即可。
如何提交修改过的几个文件
git branch -a // 查看所有分支名称,*表示当前分支,结果自己所在的分支为master主分支中,并显示所有的分支包含dev分支
git checkout dev // 看所有分支名称后发现自己在master分支,你需要提交到dev分支,那么该命令就是切换到dev分支的意思
git status -s // 查看状态,如果使用git status 可以查看详细信息,就是字母标记对应的意思。
如果用 git status -s 或 git status --short 命令,会得到更为紧凑的格式输出。新添加的未跟踪文件前面有
??
标记,新添加到暂存区中的文件前面有A
标记,修改过的文件前面有M
标记。M
有两个可以出现的位置,出现在右边的M
表示该文件被修改了但是还没放入暂存区,出现在靠左边的M
表示该文件被修改了并放入了暂存区。输出标记会有两列,第一列是对staging区域而言,第二列是对working目录而言。
A(绿色):
你本地新增的文件(服务器上没有,Changes to be committed )。C:
文件的一个新拷贝。D:
你本地删除的文件(服务器上还在)。M:
文件的内容或者mode被修改了(两种颜色,绿色表示:modified file;红色表示Changes not staged for commit)。R:
文件名被修改了。T:
文件的类型被修改了。U(红色):
文件没有被合并(你需要完成合并才能进行提交,Unmerged paths)。X:
未知状态(很可能是遇到git的bug了,你可以向git提交bug report)。??(红色):
未被git进行管理,可以使用git add file1把file1添加进git能被git所进行管理(Untracked files)。综上:Changes not staged for commit(M):也就是说文件被修改了,但是还没有在提交(commit)前进行存储(staged)。并且给了相关的提示,可以使用 "git add <file>..." 命令进行存储,或者使用 "git restore <file>..." 命令放弃在工作目录中的修改。
Untracked files(??): 表示创建的文件处于Untracked (未被跟踪的状态),可使用"git add <file>..."命令将这些新创建的文件添加到可以被提交(commit)的内容当中去。
Unmerged paths(U):表示文件不在暂存区但是没有被合并,你需要完成合并才能进行提交。可以使用"git restore --staged <file>..."将暂存区的文件从暂存区撤出,但不会更改文件;使用"git add <file>..."表示将该文件放进暂存区。
Changes to be committed(A):表示新添加到暂存区的文件,但服务器上还没有。使用
Changes not staged for commit(M):"git add <file>..." 命令进行存储, "git restore <file>..." 命令放弃在工作目录中的修改
Untracked files(??):"git add <file>..."
Unmerged paths(U):"git restore --staged <file>..." 从暂存区撤出, "git add <file>..."表示将该文件放进暂存区。
1.GitHub中的基本概念
1).repository:仓库,约等于项目
2).star:收藏仓库即点亮,显示被收藏人数。
3).fork:复制克隆repository,别人的项目就会在自己的项目主页上存在,类似于你在线下载了其分支。
4).pull request :发送请求。基于fork的基础上,优秀的你修改了项目,想把更优秀的代码和功能合并入原有的项目,一起分享给大家,就可以向原始项目创建人发送PR,接受与否就取决于别人了。
5).watch:关注以及收到更新通知。
6).issue:问题提出讨论并且解决的地方。问题解决了可以close。
git创建repository:一个git库对应一个开源项目,通过git管理git库。
1.文件的三种状态:
commited:已提交。表示该文件已经被安全的保存在本地数据库中。
modified:已修改。表示已经修改了某个文件,但是还没有提交保存。
staged:已暂存。表示把已修改的文件放在下次提交时要保存的清单中。
git管理项目的三个区域
工作目录:从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。
暂存区域:放在git目录下的简单文件
本地仓库
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。