Git操作
Git操作
作者 |
刘畅 |
时间 |
2023-02-24 |
目录
3.11 分支管理--merged与--no-merged及分支强制删除操作
4.7 本地版本库主动使用remote与远程GITHUB进行关联
1 git语法
1.1 git概念
1 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,不必服务器
端软件支持。
2
Git工作区、暂存区和版本库概念
工作区:就是你在电脑里能看到的目录。
暂存区:英文叫 stage 或
index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以
我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
3 工作区、版本库中的暂存区和版本库之间的关系
1.2 git命令帮助
Git的工作就是创建和保存你项目的快照及与之后的快照进行对比。
workspace # 工作区
staging area # 暂存区/缓存区
local repository # 版本库或本地仓库
remote repository # 远程仓库
$
git --help
usage:
git [-v | --version] [-h | --help] [-C <path>] [-c
<name>=<value>]
[--exec-path[=<path>]]
[--html-path] [--man-path] [--info-path]
[-p
| --paginate | -P | --no-pager] [--no-replace-objects]
[--bare]
[--git-dir=<path>]
[--work-tree=<path>] [--namespace=<name>]
[--super-prefix=<path>]
[--config-env=<name>=<envvar>]
<command>
[<args>]
These
are common Git commands used in various situations:
start
a working area (see also: git help tutorial)
开始工作区域
clone Clone
a repository into a new directory
将存储库克隆到新目录,拷贝一份远程仓库,也就是下载一个项目。
init Create
an empty Git repository or reinitialize an existing one
创建一个空的Git存储库或重新初始化现有存储库。
work
on the current change (see also: git help everyday)
处理当前变化
add Add
file contents to the index
将修改从本地工作区添加至暂存区。
已经纳入版本控制
mv Move
or rename a file, a directory, or a symlink
移动或重命名工作区中的文件、目录或符号链接,同时将改变添加到暂存区(git
mv相当于mv + git
add两个命令)。
restore Restore
working tree files
撤销工作区文件修改的内容。
--staged表示把文件从暂存区恢复到工作区,不会撤销文件修改的内容。
rm Remove
files from the working tree and from the index
删除工作区中的文件,同时将删除的文件添加到暂存区(git
rm相当于rm + git add两个命令)。
--cached
表示保留工作区中的文件,并将此次删除提交到暂存区。
-r 表示删除工作区中的文件夹。
-f 表示强制删除工作区中的文件。
examine
the history and state (see also: git help revisions)
检查历史和状态
bisect Use
binary search to find the commit that introduced a bug
diff Show
changes between commits, commit and working tree, etc
查看比较某文件修改内容的不同之处。
grep Print
lines matching a pattern
log Show
commit logs
查看提交到版本库的修改日志。
show Show
various types of objects
status Show
the working tree status
显示工作区和暂存区的状态。
对空目录不会跟踪。
当工作区和版本库之间存在差异时状态就会发生改变。
grow,
mark and tweak your common history
成长、标记和调整你的共同历史
branch List,
create, or delete branches
列出、创建或删除分支。
commit Record
changes to the repository
将修改从暂存区提交至本地版本库。
-m后加注释,表示注释此次提交的内容。
--amend 表示提交的注释内容需要修改时,此参数可以修改提交的注释内容。
merge Join
two or more development histories together
将两个或多个分支合并在一起。
rebase Reapply
commits on top of another base tip
reset Reset
current HEAD to the specified state
switch Switch
branches
切换分支。
tag Create,
list, delete or verify a tag object signed with GPG
为分支打标签(版本号)。
collaborate
(see also: git help workflows)
合作
fetch Download
objects and refs from another repository
pull Fetch
from and integrate with another repository or a local branch
从远程获取代码并合并本地的版本。
push Update
remote refs along with associated objects
将本地的分支版本上传到远程并合并。
'git
help -a' and 'git help -g' list available subcommands and
some
concept
guides. See 'git help <command>' or 'git help
<concept>'
to read about a specific subcommand or
concept.
See 'git help git' for an overview of the system.
1.3 git状态
1
Git在提交之前,存在的3种状态
(1)
Untracked
files (未跟踪的文件)
工作区中新创建的文件。
(2)
Changes
not staged for commit (未暂存提交的更改)
提交到本地版本库后在工作区中发生修改的文件。
(3)
Changes
to be committed (待提交的变更)
在暂存区中的文件。
2 Git提交后的状态
nothing
to commit, working tree clean (无需提交,工作树干净)
工作区和版本库内容相同,无任何差异。
2 git安装
在" https://git-scm.com/downloads"网站根据需求下载macOS、Windows、Linux/Unix版本的Git。
我这里下载的是Windows版本的Git,下载地址如下。
https://github.com/git-for-windows/git/releases/download/v2.39.2.windows.1/Git-2.39.2-64-bit.exe
下载完成后双击安装,一路回车即可。
安装完成后查看git版本,如下可以正确显示git版本,说明git安装成功。
3 git基本操作
3.1 版本库使用流程
1 配置全局用户名和邮箱(~/.gitconfig)
git
config --global user.email "<your email address>"
git
config --global user.name "<your name>"
补充:
(1)
去除"--global"参数表示设置当前仓库的标识(.git/config)
(2)
查看配置信息
1) 查看全局仓库的配置信息
# git
config --global --list
2)
查看当前仓库的配置信息
# git
config --list
2 从远程仓库克隆你的项目
git clone <项目地址>
3 将修改从本地工作区添加至暂存区
git add <文件名> # 将指定修改的文件从本地工作区添加至暂存区
git add . # 将所有修改从本地工作区添加至暂存区
4 完成工作后将修改从暂存区提交至本地版本库,并使用"-m"选项说明完成的工作
git
commit -m '<describe content>'
5 将本地版本库推送至远程仓库
git push
3.2 在版本库中删除文件
1 删除工作区中的文件,同时将删除的文件添加到暂存区
git
rm index.php
git
status
git
commit -m 'rm index.php'
2 保留工作区中的文件,并将此次删除提交到暂存区
git
rm --cached readme.txt
git
status
git commit -m 'delete readme.txt'
3.3 在版本库中修改文件的名称
1 重命名工作区中的文件,同时将改变添加到暂存区
git
mv test.html index.html
git
status
git commit -m 'test.html rename
index.html'
3.4 使用log查看git提交到版本库的操作日志
1 查看当前分支提交到版本库的修改日志
git
log
2 查看最近2次提交日志并显示文件差异
git
log -p -2
3 显示已修改的文件清单
git
log --name-only
4 显示新增、修改、删除的文件清单
git
log --name-status
5 一行显示并只显示SHA-1的前几个字符
git
log --oneline
6 自定义的精简日志信息
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s
%Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
3.5 使用amend修改最新一次提交到版本库的事件
1 修改提交描述信息
git
log
git
commit --amend
git
log
2 实现将暂存区中的文件跟最新一次提交进行合并提交。
3.6 管理暂存区中的文件
1 将所有修改从本地工作区添加至暂存区
git
add .
2 撤销没有提交到本地仓库且第一次放到暂存区中的文件(保留修改的内容)
git restore --staged <file>
git
status
3 撤销提交到本地仓库后在工作区中修改的文件(不保留修改的内容)
git restore <file>
git
status
4 撤销提交到本地仓库后在工作区中修改后放到暂存区中的文件(保留修改的内容)
git restore --staged <file>
git status
3.7 alias命令别名提高Git操作效率
1 方式一: 在git配置文件中修改
说明: 可以在全局配置文件中修改,也可以在项目的配置文件中修改。
cd
~
subl .gitconfig # 补充: 使用subl命令需要在windows环境变量中添加"Sublime
Text"软件的执行路径。
....(省略的内容)
[alias]
a
= add
c
= commit
l
= log
s
= status
b
= branch
注: 配置后立即生效
2 方式二: 在当前用户的profile文件中修改
cd ~
subl .bash_profile
alias gs="git status"
alias
gc="git commit -m "
alias gl="git log --graph --pretty=format:'%Cred%h%Creset
-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
--abbrev-commit"
alias gb="git branch"
alias
ga="git add -A"
alias
go="git checkout"
alias
gp="git push;git push github"
source ~/.bash_profile
3.8 分支branch基本管理操作
1 分支说明
分支用于为项目增加新功能或修复Bug时使用。大部分情况下不会直接在master分支工作,我
们应该保护该分支,这个分支是最终开发完成代码健康可交付运行的。所以功能和缺陷(bug)修
复都会新建分支完成,除了这个概念外与基本流程使用是一样的。
增加新功能或修复bug时需要先切换到干净的master分支后再创建新的分支并切换到新创建的
分支,完成工作后将新分支合并到master分支,然后再删除新分支。
2 常用命令
#
cd ~/git/
# mkdir
-p hd/ && cd hd/
# git
init
(1)
查看分支
git branch
提示: 此时不会查看到任何分支,因为没有任何的提交,主分支也不存在。
# touch
xj.php && git
add . && git
commit -m 'first'
#
git branch
*
master #
星号(*)表示当前所在分支的指针
#
ls
xj.php
(2)
创建分支
git branch ask
#
git branch
ask
*
master
(3)
切换分支
git checkout ask
#
git branch
*
ask
master
# touch ask.html
#
git add . && git commit -m 'add ask.html'
#
ls
ask.html xj.php
(4)
创建并切换分支
git
checkout master
git checkout -b bbs
#
git branch
ask
*
bbs
master
#
ls
xj.php
(5)
将分支main更新为master
git branch -m main master
(6)
删除远程分支
git push origin :dev
3.9 分支的合并与删除
根据上面"3.8 分支branch基本管理操作"示例进行下面的实验操作。
1 合并ask分支到master
git
checkout master
git
merge ask
2 删除已经合并的ask分支
git branch -d ask
3.10 正确处理分支冲突
1 分支冲突产生的原因
不同分支修改同一个文件或不同开发者修改同一个分支文件都可能造成分支冲突,无法提交代码。
2 解决办法
(1)
使用编辑器修改冲突的文件。
(2)
添加暂存(git add .)表示已经解决冲突。
(3)
git commit -m
'describe content'
提交完成。
3 解决分支冲突示例
(1)
生成master分支
# cd
~/git
# mkdir
-p hd/ &&
cd hd/
# git
init
# echo
"master"
> xj.php
# git
add . && git commit -m 'master'
# git
branch
*
master
(2)
创建ask分支
# git
branch ask
#
git branch
ask
*
master
(3)
创建bbs分支
#
git branch bbs
#
git branch
ask
bbs
*
master
(4)
在ask分支中修改xj.php文件内容
# git
checkout ask
# git
branch
*
ask
bbs
master
# echo
"ask" > xj.php
# git
add . && git commit -m 'ask'
(5)
在bbs分支中修改xj.php文件内容
# git
checkout bbs
# git
branch
ask
*
bbs
master
#
echo "bbs"
> xj.php
# git
add . && git commit -m 'bbs'
(6)
合并ask、bbs分支到master分支
# git
checkout master
可以看到在合并bbs分支到master分支时产生了冲突。
(7)
解决冲突
产生分支合并冲突时git无法自动进行处理,需要人为进行手动处理,因为系统不知道产生冲突
的代码需要保留哪一个。我这里选择将ask、bbs分支的修改内容都进行保留。
3.11 分支管理--merged与--no-merged及分支强制删除操作
根据上面"3.10解决分支冲突"示例进行下面的实验操作。
1 查看已经合并的分支(切换到master)
git checkout
master
git
branch --merged
2 查看未合并的分支(切换到master)
git
checkout master
git branch --no-merged
提示: 生产中删除已经合并到master的分支,没有合并到master的分支不要删除,避免工作重做。
3 删除没有合并的分支(切换到master)
git
checkout master
git
branch -D test
3.12 .gitignore定义忽略提交的文件
1 说明
(1)
所有空行或者以注释符号(#)开头的行都会被Git忽略。
(2)
匹配模式最后跟反斜杠(/)说明要忽略的是目录。
(3)
可以使用标准的glob模式匹配。
2 示例
*.txt #
忽略所有以.txt结尾的文件。
!a.txt #
以.txt结尾的文件中a.txt不会被忽略。
/vendor # 忽略目录vendor。
3.13 windows下git bash中文乱码解决
1 在git bash的终端命令行中,使用git status查看状态时,如果存在中文名称的文件,则展示时
会以中文字符编码的形式展示,如下图所示
2 解决步骤
(1)
设置引用路径的值为false
# git
config --global core.quotepath false
(2)
设置git bash终端的编码为UTF-8
1) 在git bash的空白处右键,选择Options。
2) 将Text(中文是文本)下的Local设置为zh_CN,字符集选中为UTF-8,点击Save保存设置。
(3)
验证,中文乱码问题结局
3.14 windows下git add换行符问题
1 问题说明
windows平台进行git
add时,控制台打印如下警告:
"warning:
in the working copy of 'xx.php', LF will be replaced by CRLF the next time Git
touches it"
警告:在“xx.php”的工作副本中,下次Git接触LF时,LF将被CRLF替换
2 问题分析
Dos/Windows平台默认换行符:回车(CR)+换行(LF),即"\r\n"。
Mac/Linux平台默认换行符:换行(LF),即"\n"。
企业服务器一般都是Linux系统进行管理,所以会有替换换行符的需求。
2 解决方法
(1) git config --global core.autocrlf
true
适用于Windows系统,且一般为Windows默认设置,会在提交时对换行符进行CRLF
- LF的转换,检出时又会
进行LF -
CRLF的转换。
(2) git config --global core.autocrlf
input
适用于Linux系统,会在提交时对换行符进行CRLF
- LF的转换,检出时不会进行LF -
CRLF的转换。
(3) git config --global core.autocrlf
false
适用于Windows系统,且只在Windows上开发的情况,在提交、检出时不会对CRLF/LF换行符进行转换。
3 总结
(1)
如果我们目前是Window平台并出现该警告,啥也别做就行,虽然这个警告难看,但这个警告
能保证我们项目团队正常跨系统git操作代码。
git的Windows客户端基本都会默认设置core.autocrlf=true。
(2)
跨平台文件都有兼容性的问题,为什么只有core.autocrlf参数设置true检出时,会有LF-CRLF
的转换
1) Linux文件在Windows下会显示成一行。
2) Windows文件在Linux下结尾可能多出^M符号。
4 git进阶
4.1 标准的分支操作工作流
1 master分支
干净、稳定、可信赖的分支。
2 develop分支
开发过程中的分支,新增功能和修复功能的分支从该分支创建。
develop分支可以看做是master分支的保镖,起到防火墙的作用。
3 开发者
(1) 把功能分支检出到自己的本地电脑。
(2) 在本地电脑中为功能分支增加新的分支完成开发任务。
(3) 将新增的分支合并到检出的功能分支中。
(4) 提交功能分支到远程仓库。
(5) 合并功能分支到develop分支中。
(6) 在develop分支进行测试。
(7) 将develop分支合并到master分支。
4.2 stash临时储存区
说明:
新建文件git
add之后或git commit之后修改的文件才能使用stash功能,将该文件的变化存储到stash
临时储存区并撤销修改操作,需要时再将stash临时储存区的文件修改进行恢复,然后删除stash临时
储存区。
使用场景:
当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,可以先将自己写好的
代码储存到git栈,然后进行另外一个分支的代码开发,这时候git
stash命令就派上用场了。
4.2.1 纳入到版本库的文件(文件内容变化)
1 环境准备
#
cd ~/git/ && mkdir -p hd/ && cd hd/ && git
init
# touch
master.php && git
add . && git commit -m "master commit"
2 创建分支
# git
branch ask
# git
branch bbs
3 切换到ask分支操作
# git
checkout ask
# 创建文件并提交
# touch
ask.php && git add . && git commit -m 'ask commit'
# 修改文件
# echo
'ask modify' >> ask.php
# 切换到bbs分支进行操作
# git checkout
bbs
注: 因为纳入版本库的ask.php文件修改后,还没有提交到本地仓库,所以不允许切换到其它的
分支。
4 储存ask分支
# 储存当前ask分支
#
git stash
# 查看储存的分支
# git
stash list
注: 切换到bbs分支成功,在bbs分支中完成工作并提交。
5
切换到ask分支恢复分支储存区
# git
checkout ask
# git
stash apply stash@{0} # 0表示最新的操作
注: 恢复分支储存区后分支储存区还依然存在
注: 分支储存区恢复完成,继续修改文件,完成开发工作后提交即可。
6
删除分支储存区
# git stash drop stash@{0}
4.2.2 新创建的文件(文件变化)
1 环境准备
#
cd ~/git/ && mkdir -p hd/ && cd hd/ && git
init
# touch
master.php && git
add . && git commit -m "master commit"
2 创建分支
# git
branch ask
# git
branch bbs
3 切换到ask分支操作
# git
checkout ask
# 创建文件并提交
# touch
ask.php && git add . && git commit -m 'ask commit'
注: 切换到bbs分支成功,在bbs分支中完成工作并提交。
4
切换到ask分支恢复分支储存区
注: 分支储存区恢复完成,但是此时还不能修改文件,因为文件还在暂存区中。
5
恢复暂存区中的文件到工作区
注: 恢复暂存区中的文件到工作区完成,继续修改文件,完成开发工作后提交即可。
6
删除分支储存区
4.3 使用TAG标签声明项目阶段版本
Git可以对分支某一时间点打上标签,用于发布软件版本,如v1.0。
1 在本地仓库中添加标签(任何分支上)
git tag v1.0
2 列出本地仓库中的所有标签
git tag
3 推送本地仓库中新增的标签到远程仓库
git push origin --tags
4 删除本地仓库中的标签
git tag -d v1.0
5 删除远程仓库中的标签
git push origin -d
v1.0
4.4 生成zip代码发布压缩包
对
mster 分支代码生成压缩包供使用者下载使用,--prefix 指定目录名
git archive master --prefix='lc/' --format=zip >
lc.zip
4.5 rebase合理的优化分支合并
参考文档:
https://blog.csdn.net/weixin_42310154/article/details/119004977
总结:
无论是个人单机开发,还是公司协作开发,只要没有特殊需求,用merge准没错!!!
不管是拉代码还是push代码统一都使用merge,虽然会多出无意义的一条提交记录
“Merge … to …”,但至少能清楚地知道主线上谁合了的代码以及他们合代码的时
间先后顺序。
4.6 使用SSH与GITHUB远程服务器进行无密码连接
从github仓库克隆代码,github仓库有提交,github远程仓库作为主角。
1 创建github仓库,有初次提交
2 在GitBash中生成ssh秘钥对
# ssh-keygen
-t rsa # 一路回车即可完成秘钥对的创建
# cd
~/.ssh/
#
ls
id_rsa id_rsa.pub
注: id_rsa是私钥,id_rsa.pub是公钥
3 复制公钥内容到github上
# subl
id_rsa.pub
# 添加步骤
github头像 -> Settings ->
SSH and GPG keys -> New SSH
key
# 添加完成如下
4 使用ssh方式克隆github仓库
# mkdir
-p ~/git/ && cd ~/git/
# git
clone git@github.com:HyjyLc/liuc.git # 本地仓库已经和远程github仓库自动关联了
5 向github仓库推送数据
# cd
~/git/liuc/
# touch
index.html
# git
add . && git commit -m "add index.html"
# git
push
4.7 本地版本库主动使用remote与远程GITHUB进行关联
从本地仓库往github仓库推送代码,github仓库没有任何提交,本地仓库作为主角。
1 创建github仓库,没有初次提交
2 本地仓库关联远程github仓库命令
(1)
…or
create a new repository on the command line
…或在命令行上创建一个新的存储库
1) 创建本地仓库并完成初始提交
git
init
echo
"# liuch" >> README.md
git
add README.md
git
commit -m "first commit"
2)
添加远程仓库
git
branch -M master
git
remote add origin git@github.com:HyjyLc/liuch.git
3) 查看远程仓库
git
remote -v
4)
推送数据到远程仓库
git
push -u origin master
(2)
…or
push an existing repository from the command line
…或从命令行推送现有存储库
1) 添加远程仓库
git
remote add origin git@github.com:HyjyLc/liuch.git
git
branch -M master
2) 推送数据到远程仓库
git
push -u origin master
(3)
说明
1)
git
branch -m | -M oldbranch newbranch
重命名分支,如果newbranch名字已经存在,则需要使用-M强制重命名,否则使用-m进行重命名。
git
branch -m | -M newbranch # 表示重命名当前的分支。
2) git
remote rm origin
删除远程仓库关联
3) cat
~/git/liuch/.git/config
[core]
repositoryformatversion
= 0
filemode
= false
bare
= false
logallrefupdates
= true
symlinks
= false
ignorecase
= true
# 远程仓库配置项
[remote
"origin"] # 远程仓库的标识符
url
= git@github.com:HyjyLc/liuch.git # 远程仓库的ssh连接地址或https连接地址
fetch
= +refs/heads/*:refs/remotes/origin/*
# 本地分支与远程分支关联配置项(本地分支名称必须和远程分支名称相同)
[branch
"master"] #
本地仓库当前所在的分支
remote
= origin # 远程主机标识,可以在命令行被覆盖
merge
= refs/heads/master # 远程主机仓库所在的分支
4.8 本地分支与GITHUB远程分支同步
环境:
1 查看分支命令
(1) git branch
查看本地仓库所有分支
(2)
git branch -r
查看远程仓库所有分支
(3)
git branch -a
查看本地仓库和远程仓库所有分支
2 git pull
在分布式管理系统中,如果两个人同时修改了本地文件,并且其中一人将改动 push 到中央仓库,
那么第二个人在向中央仓库 push 本地文件时就会产生错误。这时可以先将中央仓库的代码下载
到本地仓库然后合并。
但是,对于本地仓库与中央仓库的合并要具体情况具体分析。如果本地仓库与中央仓库在不同的
文件上有区别,那么可以使用 git pull 直接合并。这里要说一下
git pull 这个命令,这个命令可以
简单理解为 git fetch + git merge ,也就是从中央仓库下载代码然后自动合并。
由于同一个文件的冲突在 git 中无法自动合并,所以当中央仓库与本地仓库因为一个文件产生冲
突时,git 无法做到自动合并。这时使用 git pull 命令就会产生如下错误。
Automatic
merge failed; fix conflicts and then commit the result.
这时应该借助其他工具如 git mergetool 对同一个文件的内容冲突进行合并。
命令格式:
git
checkout <本地分支名>
git pull <远程主机名> <远程分支名>
(1) 拉取origin主机的ask分支与当前分支合并
# git pull origin ask
(2) 直接将远程分支拉取到本地(在本地创建分支并拉取数据)
# 会自动将本地分支和远程分支关联
3 git push
git push 命令用于从将本地的分支版本上传到远程并合并。
命令格式如下:
git push <远程主机名>
<本地分支名>:<远程分支名>
如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名>
<本地分支名>
如果本地版本与远程版本有差异,但又要强制推送可以使用 --force
参数(不推荐使用):
git
push --force origin <本地分支名>:<远程分支名>
(1) 将本地bbs分支推送到origin主机上对应同名的分支(远程分支不存在会自动创建)
# git push origin bbs
(2) 将本地bbs分支推送到origin远程主机上的ask分支
# git push origin bbs:ask -f
#强制推送,覆盖服务器端分支仓库(慎用)
正确操作:
# git checkout bbs
# git pull origin ask
# git push origin bbs:ask
4 delete branch
# 删除远程origin主机上的ask分支
# git push origin --delete ask
5 将本地分支与远程分支关联起来
将本地的 ask 分支与远程的 ask 分支关联起来,这样在ask分支下进行推送和拉取操作中,可以直接
使用git push 和 git pull 命令,而无需再指定分支名称和远程仓库。
(1) 添加方式一(推送时进行关联)
# git push --set-upstream origin ask
# git push -u origin ask
注: -u 是 --set-upstream 的缩写。
(2) 添加方式二(只关联不进行推送)
# git branch --set-upstream-to=origin/<branch> ask
4.10 多库提交
我可以将代码提交到多个远程版本库中,比如将代码提交到了 Github 与 Gitee 两个库中。
1 前提
(1) github、gitee 仓库上都添加了本地开发电脑的ssh公钥。
(2) 在 gitee 上将 github 上的仓库进行导入操作。
2 拉取 github 上的仓库
# cd ~/git/
# git clone git@github.com:HyjyLc/liuc.git
# cd liuc/
# cat .git/config
3 增加 gitee 仓库
# git remote add gitee git@gitee.com:liuchang-space/liuc.git
# cat .git/config
注:
origin 用于标识 github 远程仓库(默认)
gitee 用于标识 gitee 远程仓库
4 提交代码到远程仓库
本地分支已经和远程分支进行了关联,可以在本地仓库当前分支使用git pull、git push 进行操作。
可以在 '~/.bashrc' 文件中定义别名,下面是定义的别名。这时使用 gp 将同时提供到 github 与
gitee。alias gp="git push & git push gitee"
5 在远程仓库进行验证
(1) github仓库
(2) gitee仓库
4.11 撤销master的merge操作
# git checkout master # 切换到master分支
# git reset --hard <提交点> # 根据提交日志中的提交点进行还原
4.12 补充
1 在本地仓库的当前分支进行操作时要先执行 git pull 命令进行更新操作。