- 开发流程
- 注意事项
- 本地项目关联远程仓库
- Git建议开发流程
- 拉取远程分支到本地
- 版本回退
- 远程分支覆盖本地分支
- 更新远程分支列表
- 异常处理
- 常用命令整理
- root账户下pull文件拥有者被修改问题
- 本地分支与远程分支关联
- 取消文件追踪
- 更换项目的远程仓库
- 参考资料
开发流程
一般的开发流程是:从master拉取dev测试分支、pre预发布分支,再从master新拉版本分支ver1.0,从ver1.0拉取自己的开发分支dashi_0514, 然后在自己的分支dashi_0514开发,提交到自己的远程分支dashi_0514,拉取远程项目分支ver1.0,提交合并到自己的远程分支dashi_0514, 再把自己的修改提交到远程版本分支ver1.0,切换到dev分支,拉取dev变动,再拉取ver1.0变动,提交到远程dev分支。如此循环。 直到测试无问题,再切到pre预发布分支,拉取远程ver1.0分支,然后推送到远程pre分支,测试预发布,持续修订到无问题。 该版本开发结束,master拉取合并ver1.0分支,并推送到远程master分支,删除自己的开发分支dashi_0514, 删除版本分支ver1.0(也可以保留封版),dev、pre保留继续作后续版本开发的测试、预发布分支。结束。准备下个版本ver2.0的开发。
git clone 分支地址 (自己可命名本地项目名)
如:
git clone https://github.com/lang/test.git lianxi
查看所有分支:
git branch -a
创建dev新分支:
git branch dev
切换到dev分支:
git checkout dev
或者这样创建新分支并切换过去:
git checkout -b dev
推送本地dev分支更新到远程dev分
git push origin dev:dev
也可以不用指定远程分支名,git会自动补齐
git push origin dev
新建分支并推送到远程:
git checkout master
git checkout -b ver1.0
git push origin ver1.0
git checkout -b dashi_0514
git push origin dashi_0514
查看远程分支情况:
git remote show origin
自己本地分支开发并提交到自己的开发远程分支
git add .
git commit -m “修改”
git push -u origin dashi_0514
第一次用-u自动绑定,以后 只要git push
就可以
git push origin dashi_0514
也可以用git branch -u dashi_0514:dashi
把本地 dashi_0514 分支绑定到远程 dashi 分支,以后就可以直接使用git pull
和git push
了
git branch -u dashi_0514:dashi
从远程版本分支ver1.0拉取最新代码到自己本地开发分支dashi_0514
git pull origin ver1.0:dashi_0514
版本分支的变动推送到自己远程分支
git push origin dashi_0514
自己本地分支的变动推送到版本远程分支
git push origin dashi_0514:ver1.0
( 最好合并操作:)
git checkout ver1.0
git merge dashi_0514
git push origin ver1.0
在本地dev分支拉取远程master分支变动:
git pull origin master:dev
可能会有提示:
! [rejected] master -> dev (non-fast-forward)
这种情况下可以用git merge
合并远程分支到本地所在分支
git merge origin/master
在本地ver1.0合并远程master分支变动:
git checkout ver1.0
git pull origin master:ver1.0
推送到远程ver1.0分支
git push origin ver1.0
在本地dashi_0514合并远程ver1.0分支
git checkout dashi_0514
git merge origin/ver1.0
推送到远程dashi_0514分支
git push origin dashi_0514
切换到本地dev分支
git checkout dev
拉取dev远程分支最新代码
git pull origin dev
拉取版本远程分支到本地dev分支
git pull origin ver1.0:dev
(最好合并 git merge origin/ver1.0
)
本地dev再推送到远程dev分支
git push origin dev
如此循环反复开发,直至这个版本的开发任务结束, 合并到master
git checkout master
git merge origin/ver1.0
git push origin master
git fetch 细细对比研究
然后删除相关分支
删除自己的本地分支
git branch -d dashi_0514
删除自己的远程分支
git push origin --delete dashi_0514
打版本标签:
// 查看有哪些版本
git tag
// 显示所有标签,并显示其标签注释
git tag -l -n
// 添加版本标签
git tag -a 1.0.6 -m "注释信息"
// 将本地所有tags提交到远程仓库中
git push --tags
注意事项
里面注意区分各分支的协同:
master只作为项目主干分支,目的是站点正式构建的基础。不接受其他各分支的推送,只拉取成熟版本分支的代码。
git checkout master
git pull origin ver1.0:master (或者 git merge origin/ver1.0)
git push origin master
dev作为项目测试分支,目的是测试环境构建的基础。因为可能有多个版本在多个小组手中同时开发, 所以本地dev分支只拉取各版本分支变动(不拉取master分支),然后推送到远程dev分支。
git checkout dev
git pull origin dev:dev
git merge origin/ver1.0
git push origin dev
ver1.0只作为众多版本中的一个开发分支,目的是版本小组协同开发的基础。 只接受版本开发小组成员的推送(不拉取master代码,而是交给一个负责人去合并master。 如果这里ver1.0拉取master的教训就是ver1.0只作为版本分支开发地位的丢失和复杂化)。
git checkout ver1.0
git pull origin ver1.0
dashi_0514是自己在一个版本下的开发分支,只拉取特定版本分支,和向该版本分支推送自己的修改, 还有就是自己的修改;另外,拉取master最新代码,这样自己就有责任维护ver1.0分支。
git checkouk dashi_0514
git merge origin/master (合并master变化)
git push
git add . (添加自己的修改)
git commit -m “具体修改”
git push
git merge origin/ver1.0
git push
git push origin dashi_0514:ver1.0
本地项目关联远程仓库
附一个gitlab的例子:
Command line instructions
Git global setup
git config --global user.name "白杨"
git config --global user.email "baiyang@google.com"
Create a new repository
git clone http://baiyang@git.com/php/tmk.git
cd tmk
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Existing folder
cd existing_folder
git init
git remote add origin http://baiyang@git.com/php/tmk.git
git add .
git commit -m "Initial commit"
git push -u origin master
Existing Git repository
cd existing_repo
git remote add origin http://baiyang@git.com/php/tmk.git
git push -u origin --all
git push -u origin --tags
还有如果你在github创建一个项目,可以看到如下提示:
Quick setup — if you’ve done this kind of thing before
https://github.com/iBaiYang/PictureWareroom.git
Get started by creating a new file or uploading an existing file. We recommend every repository include a README, LICENSE, and .gitignore.
…or create a new repository on the command line
echo "# PictureWareroom" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/iBaiYang/PictureWareroom.git
git push -u origin master
…or push an existing repository from the command line
git remote add origin https://github.com/iBaiYang/PictureWareroom.git
git push -u origin master
…or import code from another repository
You can initialize this repository with code from a Subversion, Mercurial, or TFS project.
Git建议开发流程
文件的状态变化周期,四个状态:未跟踪、未修改、已修改、暂存区
三个区域:工作区、暂缓区、历史记录区
工作区是我们能看到的区域,我们在工作区修改增加代码; 完成编辑后,我们用git add 将工作区文件添加到暂存区,也叫索引区; 然后利用git commit 提交文件到我们自己的分支,也就是到本地数据仓库,写入历史记录。
版本负责人 新建版本分支
git checkout master
git pull origin master
git checkout -b ver3.10.0
git push origin ver3.10.0
开发工程师 新建开发分支
git checkout ver3.10.0
git checkout -b dragon190828
git push origin dragon190828
开发工程师 开发细节
git checkout dragon190828
git add .
git commit -m ‘add menu to project’
git push origin dragon190828
git pull origin ver3.10.0
git push origin dragon190828
git checkout dev
git pull origin dev
git pull origin dragon190828
git push origin dev
git checkout dragon190828
git pull origin ver3.10.0
git push origin dragon190828
git push origin dragon190828:ver3.10.0
版本负责人 新建上线分支
git checkout master
git pull origin master
git checkout -b upline190920055
git pull origin ver3.10.0
git push origin upline190220055
项目负责人 版本上线
git checkout master
git pull origin master
git pull origin upline190920055
git pull origin upline190920132
git push origin master
开发工程师 删除开发分支
git branch -d dragon190828
git push origin --delete dragon190828
版本负责人 删除上线分支
git branch -d upline190920055
git push origin --delete upline190920055
拉取远程分支到本地
情况一:本地没有分支关联远程分支
git checkout ver3.42.0
git 会自动把远程分支ver3.42.0拉取到本地并新建对应本地分支ver3.42.0
或者也可以执行下面这句,效果一样,不过可以指定本地分支名
git checkout -b ver3.42.0 origin/ver3.42.0
或者
git branch --track ver3.42.0 origin/ver3.42.0
情况二:本地有一个开发分支,但没有关联远程分支
这种情况,我们只需要把本地分支关联到远程想对应的分支就可以
git branch -u origin/ver3.42.0 ver3.42.0
或者
git branch --set-upstream-to=origin/ver3.42.0 ver3.42.0
关联后,我们可以查看确认一下,有三个命令可用,任选其一
git branch -vv
cat .git/config
git remote show origin
情况三:本地分支已关联到远程分支
这种情况,本地分支已经关联到远程分支,我们就不需要做关联操作了。
版本回退
有三种情况:自己的本地分支版本回退、自己的远程分支版本回退、公共远程分支版本回退, 前两种情况用reset命令,公共远程分支版本回退使用revert命令。下面举例分析一下。
情况一:自己的本地分支版本回退
本地分支开发,发现提交了一个错误的版本,我们可以使用:
git reflog // 查看要回退的版本的commit id
git reset --hard c0deab25 // 回退版本
有时在你git reset后发现本地出现未追踪文件,这该怎么办呢?我们需要把这些未追踪文件从本地移除,看一下命令:
git clean -di
可以交互式选择清理的文件。
情况二:自己的远程分支版本回退
如果你的错误提交已经推送到自己的远程分支了,那么就需要回滚远程分支了。
首先要回退本地分支:
> git reflog // 查看要回退的版本的commit id
> git reset --hard c0deab25 // 回退版本
紧接着强制推送到远程分支:
git push -f // 强制推送
情况三:公共远程分支版本回退
回滚公共远程分支和回滚自己的远程分支有区别吗? 答案是,当然有区别啦。
一个显而易见的问题:如果你回退公共远程分支,把别人的提交给丢掉了怎么办?
所以需要用到revert命令,只撤销指定一次版本提交。
git log // 查看要回退的版本的commit id
git revert -n 7f213b383d120066fae44931313b447de3ca9255 // revert操作
有时可能提示出现冲突,那我们就去把冲突文件解决掉,然后git add命令添加文件到缓存区,接下来继续操作
git commit -m ‘撤销 指定历史提交,如修改搜索条件’ // 提交文件到本地历史仓库
git push // 推送到远程仓库
如此版本回退成功。
下面说一下特殊情况的处理。
如果有人使用reset命令把你的提交在远程分支也回退了怎么办呢,已经造成了代码丢失。如果你的本地分支还在, 未删除,那么我们可以通过下面的方式找回自己丢失的代码。
假如你的远程master分支情况是这样的:
A1–A2–B1
其中A、B分别代表两个人,A1、A2、B1代表各自的提交。并且所有人的本地分支都已经更新到最新版本,和远程分支一致。
这个时候你发现A2这次提交有错误,你用reset回滚远程分支master到A1,那么理想状态是你的队友一拉代码git pull,他们的master分支也回滚了, 然而现实却是,你的队友会看到下面的提示:
$ git status
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
(use "git push" to publish your local commits)
nothing to commit, working directory clean
也就是说,你的队友的分支并没有主动回退,而是比远程分支超前了两次提交,因为远程分支回退了嘛。
你的队友Tony看到后,知道远程分支被人回退的以前的版本了,他需要把自己的B1提交找回来。他会冷静的如下执行操作:
> git checkout tony_branch // 先回到自己的分支,因为之前在master分支pull的
> git reflog // 接着看看当前的commit_id,例如:0bbbbb
> git reset --hard 31313b447 // 回到被覆盖的那次提交B1,B1那一次的commit_id是31313b447
> git checkout -b tony_backup // 拉个分支,用于保存之前因为回退版本被覆盖掉的提交B1
> git checkout tony_branch // 拉完分支,迅速回到自己分支
马上回到自己分支的最前端:
git reset --hard 0bbbbbb
通过上面一通敲,Tony暂时舒了一口气,还好,B1那次提交找回来了,这时tony_backup分支最新的一次提交就是B1, 接着Tony要把自己的本地master分支和远程master分支保持一致:
git reset --hard origin/master
执行了上面这条命令后,Tony的master分支才真正的回滚了,也就是说你的回滚操作才能对Tony生效,这个时候Tony的本地maser是这样的:
A1
接着Tony要再次合并那个被丢掉的B1提交:
git checkout master // 切换到master
git merge tony_backup // 再合并一次带有B1的分支到master
好了,Tony终于长舒一口气,这个时候他的master分支是下面这样的:
A1 – B1
终于把丢掉的B1给找回来了,接着他push一下,你一拉也能同步。
如果队友的操作没有使你的提交丢失,那么你拉完代码git pull之后,只需要强制用远程master覆盖掉本地master就可以了:
git reset --hard origin/master
远程分支覆盖本地分支
自己本地代码改了,但现在想用远程分支覆盖本地分支,保留新增文件,覆盖修改文件。
拉取远程版本库:
> git fetch --all
如用远程master分支覆盖本地个人分支
> git reset --hard origin/master
拉取代码,更新分支:
git pull
这种情况可用在生产环境代码部署中。
不过更倾向于切换到master分支,然后拉取最新代码:
git checkout master
git pull
更新远程分支列表
有时远程分支有些已经删了,但本地不能及时看到,可以执行命令:
> git remote update origin --prune
简写:
> git remote update origin --p
查看前后变化:
git branch -a
异常处理
fatal: Pathspec 'xxx' is in submodule 'xxx'
异常的解决方案
在一次用composer更新 phpoffice/phpspreadsheet 软件包时,发现这个包依赖的包 psr/simple-cache
和 markbaker/complex
,
git添加时丢失了, 发现无论怎么改.gitignore
文件都无法添加文件到版本控制,在 /vendor/psr/simple-cache
文件夹内git add
时报了错:
Pathspec '/vendor/psr/simple-cache' is in submodule '/vendor/psr/simple-cache'
,
搜索后找到方案,要删除git缓存,然后重新添加:
git rm -rf --cached vendor/psr/simple-cache
常用命令整理
git config
git initgit clone
git add
git commit
git diff
git reset
git status
git rm
git log
git show
git tag
git branch
git checkout
git merge
git remote
git push
git pull
git stash
下面让我们逐一介绍。
Git 命令
git config
用法:git config –global user.name “[name]”
用法:git config –global user.email “[email address]”
该命令将分别设置提交代码的用户名和电子邮件地址。
git init
用法:git init [repository name]
该命令可用于创建一个新的代码库。
git clone
用法:git clone [url]
该命令可用于通过指定的URL获取一个代码库。
图片
git add
用法:git add [file]
该命令可以将一个文件添加至stage(暂存区)。
用法:git add *
该命令可以将多个文件添加至stage(暂存区)。
git commit
用法:git commit -m “[ Type in the commit message]”
该命令可以在版本历史记录中永久记录文件。
用法:git commit -a
该命令将提交git add命令添加的所有文件,并提交git add命令之后更改的所有文件。
git diff
用法:git diff
该命令可以显示尚未添加到stage的文件的变更。
用法:git diff –staged
该命令可以显示添加到stage的文件与当前最新版本之间的差异。
用法:git diff [first branch] [second branch]
该命令可以显示两个分支之间的差异。
git reset
用法:git reset [file]
该命令将从stage中撤出指定的文件,但可以保留文件的内容。
用法:git reset [commit]
该命令可以撤销指定提交之后的所有提交,并在本地保留变更。
用法:git reset –hard [commit]
该命令将丢弃所有的历史记录,并回滚到指定的提交。
git status
用法:git status
该命令将显示所有需要提交的文件。
图片
git rm
用法:git rm [file]
该命令将删除工作目录中的文件,并将删除动作添加到stage。
git log
用法:git log
该命令可用于显示当前分支的版本历史记录。
用法:git log –follow[file]
该命令可用于显示某个文件的版本历史记录,包括文件的重命名。
git show
用法:git show [commit]
该命令经显示指定提交的元数据以及内容变更。
图片
git tag
用法:git tag [commitID]
该命令可以给指定的提交添加标签。
git branch
用法:git branch
该命令将显示当前代码库中所有的本地分支。
用法:git branch [branch name]
该命令将创建一个分支。
用法:git branch -d [branch name]
该命令将删除指定的分支。
git checkout
用法:git checkout [branch name]
你可以通过该命令切换分支。
用法:git checkout -b [branch name]
你可以通过该命令创建一个分支,并切换到新分支上。
git merge
用法:git merge [branch name]
该命令可以将指定分支的历史记录合并到当前分支。
git remote
用法:git remote add [variable name] [Remote Server Link]
你可以通过该命令将本地的代码库连接到远程服务器。
git push
用法:git push [variable name] master
该命令可以将主分支上提交的变更发送到远程代码库。
图片
用法:git push [variable name] [branch]
该命令可以将指定分支上的提交发送到远程代码库。
图片
用法:git push –all [variable name]
该命令可以将所有分支发送到远程代码库。
图片
用法:git push [variable name] :[branch name]
该命令可以删除远程代码库上的一个分支。
git pull
用法:git pull [Repository Link]
该命令将获取远程服务器上的变更,并合并到你的工作目录。
图片
git stash
用法:git stash save
该命令将临时保存所有修改的文件。
用法:git stash pop
该命令将恢复最近一次stash(储藏)的文件。
图片
用法:git stash list
该命令将显示stash的所有变更。
用法:git stash drop
该命令将丢弃最近一次stash的变更。
root账户下pull文件拥有者被修改问题
问题描述,个人开发经常在root账户下执行git pull,文件拥有者老是被改成root
# git pull
这种是会把修改、添加的文件都添加到root账户组下的。
1、查看执行文件所在的linux账号及分组,我的这里是 www:www
2、查看账号的是否可执行bash,在/etc/passwd
中查看
www:x:1001:1001::/home/www:/sbin/nologin
用户名:密码:用户ID:组ID:用户描述:家目录:登录Shell
/sbin/nologin
,代表是伪用户,没有登录和执行bash的权限,修改成下面
www:x:1001:1001::/home/www:/bin/bash
注意这里显示www的“根目录”是/home/www
3、使用如下命令
# sudo -H -u www bash -c '/usr/bin/git pull'
如果你配置的git登录方式时证书登录,还要将root下的证书复制一份到/home/www/.ssh
下执行
# cp ~/.ssh/id_rsa /home/www/.ssh/
# cp ~/.ssh/id_rsa.pub /home/www/.ssh/
# chown www:www /home/www/.ssh -R // 这个需要设置,否则文件还是root账户的
再次执行
# sudo -H -u www bash -c '/usr/bin/git pull'
这样拉去就不会被改变文件拥有者了。
4、为了方便下次拉取可以制作一个简单的shell脚本
touch git.sh chmod 711
写入内容:
#/bin/bash
sudo -H -u www bash -c '/usr/bin/git pull'
本地分支与远程分支关联
有时会碰到远程仓库的分支在自己本地不存在的情况,我们需要拉取远程分支在本地自动创建并关联:
git checkout -b ver1.0 origin/ver1.0
这样就不需要每次git pull
、git push
时带远程分支名了。
如果是本地一个分支在远程仓库不存在,我们需要把本地分支推送到远程并自动创建远程分支和建立关联:
git push -u origin tom:tom
关于 -u
看到一篇评论:
upstream不是针对远程仓库的,而是针对branch的。但是upstream和有几个远程库没有必然联系。
比如远程库A上有3个分支branch1、branch2、branch3。远程库B上有3个分支branchx、branchy、branchz。
本地仓库有2个分支local1和local2。那么当初始状态时,local1和local2和任何一个分支都没有关联,也就是没有upstream。
当通过git branch --set-upstream-to A/branch1 local1
命令执行后,会给local1和branch1两个分支建立关联,
也就是说local1的upstream指向的是branch1。这样的好处就是在local1分支上执行git push(git pull同理)操作时不用附加其它参数,
Git就会自动将local1分支上的内容push到branch1上去。同样,local2分支也可以和远程库A和远程库B上的任何一个分支建立关联,
只要给local2分支设置了upstream,就可以在local2分支上用git push(git pull同理)方便地与目标分支推拉数据。
综上所述,upstream与有几个远程库没有关系,它是分支与分支之间的流通道。
再来说说git push -u
和git branch --set-upstream-to
指令之间的区别。
举个例子:我要把本地分支mybranch1与远程仓库origin里的分支mybranch1建立关联。
两个途径:
git push -u origin mybranch1
git branch --set-upstream-to=origin/mybranch1 mybranch1
这两种方式都可以达到目的。
如果使用下列途径1的话,首先,你要切换到mybranch1分支上(git checkout mybranch1
)。
但是1方法更通用,因为你的远程库有可能并没有mybranch1分支,这种情况下你用2方法就不可行,
连目标分支都不存在,怎么进行关联呢?
所以可以总结一下:git push -u origin mybranch1
相当于
git push origin mybranch1 + git branch --set-upstream-to=origin/mybranch1 mybranch1
还有另一篇评论:
git push -u origin test
在指定完-u
之后,去到根目录的 .git/
目录下,找到config,可以看到下面有了branch "test"
的分支的记录:
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "test"]
remote = origin
merge = refs/heads/test
这样git才能知道当前test下的remote和merge的信息,如果你在git push
的时候没有带入-u
参数,
那么config中就不会有branch "test"
这一项。
git push -u
就是维护一条本地分支和远程分支之间的映射关系。
但是有没有想过这样添加
git push -u origin1 test
git push -u origin2 test
是什么结果,其实第2条语句会将第一条语句覆盖,实验证明对于一个本地分支只能建立到一个远程分支的跟踪关系(track branch),
就是在./git/config
文件里面只能维护一条记录,重复添加后面把前面的覆盖。
下次在test分支可以使用git push 直接提交(git 2.0后默认是simple模式),git从config里面自动找到映射关系, 不需要再写后面的远程仓库名 本地分支名和远程分支名了。
取消文件追踪
有时一些文件已经在git中追踪了,如何取消追踪呢?
// 删除readme.txt的跟踪,不过保留本地文件。
git rm --cached readme1.txt
// 删除readme.txt的跟踪,并且删除本地文件。
git rm --f readme.txt
// 删除test目录,并保留在本地。
git rm -r --cached test
然后在.gitignore
文件中写入不追踪的文件或目录。
更换项目的远程仓库
要修改一个Git项目的origin
库(即远程仓库的URL),你可以使用git remote
命令。以下是如何做到这一点的步骤:
1、查看当前远程仓库信息:
首先,你可以使用git remote -v
命令来查看当前项目配置的远程仓库信息。这将显示所有的远程仓库(通常至少有一个名为origin
)以及它们的URL。
git remote -v
输出可能类似于:
origin https://github.com/username/old-repo.git (fetch)
origin https://github.com/username/old-repo.git (push)
2、修改远程仓库的URL:
使用git remote set-url
命令来修改origin
远程仓库的URL。
git remote set-url origin <new_repository_url>
将<new_repository_url>
替换为你想要设置的新远程仓库的URL。
例如:
git remote set-url origin https://github.com/username/new-repo.git
3、再次验证远程仓库信息:
使用git remote -v
命令再次查看远程仓库信息,以确保你已经成功修改了URL。
git remote -v
输出现在应该显示新的URL:
origin https://github.com/username/new-repo.git (fetch)
origin https://github.com/username/new-repo.git (push)
4、推送或拉取:
现在你可以使用git push
或git pull
命令与新的远程仓库进行交互了。
请注意,如果你之前已经在旧的远程仓库中有提交,并且你想将这些提交推送到新的远程仓库,
你可能需要设置上游分支(使用git push -u origin <branch_name>
),或者在新仓库中创建一个与旧仓库相同的分支结构。
5、处理分支和提交:
如果你已经在新仓库中创建了与旧仓库相同的分支结构,并且想要推送特定的分支,你可以使用以下命令:
git push origin <branch_name>
如果你只是想推送所有分支和标签,可以使用:
git push --all origin
git push --tags origin
6、注意:
- 修改远程仓库URL只会影响你本地的Git配置。其他协作者仍然会指向旧的远程仓库,除非他们也执行了相同的操作。
- 在推送更改到新仓库之前,请确保你有权限向该仓库推送,并且该仓库是空的或者其结构与你的本地仓库相匹配,以避免合并冲突。
- 如果你之前已经配置了SSH密钥或其他身份验证机制来访问旧的远程仓库,并且新的仓库需要不同的凭据,你可能需要更新这些设置。
参考资料
https://git-scm.com/book/zh/v2
git 函参 官方文档 https://git-scm.com/docs/
root账户下git pull用户被修改问题 https://zhuanlan.zhihu.com/p/545197436
git push 的 -u 参数具体适合含义? https://www.zhihu.com/question/20019419
git取消文件或文件夹追踪 https://blog.csdn.net/white_rabbit_2/article/details/124984375
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
20 个最常用的 Git 命令,码住! https://mp.weixin.qq.com/s/5bryj1dilLyi5AcsglKNkQ
https://www.yiibai.com/git/git_basic_concepts.html
远程仓库版本回退方法 http://www.hzhcontrols.com/new-335876.html
https://www.jianshu.com/p/c12203116c48
https://mp.weixin.qq.com/s/2mDnInFnfZPIk7bT-NZPmA
https://mp.weixin.qq.com/s/Vm3yLzm2T67jOY6NoHlLWA
http://www.runoob.com/w3cnote/git-guide.html
https://www.yiibai.com/git/git_push.html
https://blog.csdn.net/a19881029/article/details/42245955
https://blog.csdn.net/bin622/article/details/69948525
https://marklodato.github.io/visual-git-guide/index-zh-cn.html
https://blog.csdn.net/qq_15037231/article/details/77937402
https://blog.csdn.net/litianze99/article/details/52452521
https://zhuanlan.zhihu.com/p/28321740
http://wowubuntu.com/markdown/basic.html
http://wowubuntu.com/markdown/#autoescape
https://daringfireball.net/projects/markdown/dingus
https://www.zhihu.com/question/30018945?sort=created
https://www.jianshu.com/p/6cabb41495c8
https://www.jianshu.com/p/3f355c7872d5
http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html
Git出现 fatal: Pathspec ‘xxx’ is in submodule ‘xxx’ 异常的解决方案 https://www.cnblogs.com/ailhc/p/9252431.html
git 远程分支覆盖本地分支 https://jingyan.baidu.com/article/e9fb46e1c67bc83520f7664a.html
Git 更新远程分支列表命令 https://blog.csdn.net/qq_37858386/article/details/111386170