远程操作

142 阅读4分钟

远程分支基本操作

# git remote --- 表示这是操作远程仓库的一个指令
# add --- 表示要添加一个远程仓库
# <remote_alias> --- 远程仓库的名称 一般默认的远程仓库名为origin(约定俗成)
# <remote_address> --- 远程仓库的地址(是一个以git结尾的URI地址)
# 当执行下述指令后, git将在本地使用<remote_name>代指<remote_address>
git remote add <remote_alias> <remote_address>

# 更新远程仓库的remote_address
git remote set-url <remote_alias> <remote_address>

# 将当前所在的分支的修改推送到<remote_name>所对应的<remote_address>的<remote_branch_name>分支
git push <remote_alias> <remote_branch_name>

# -u 表示将当前所处的分支(如main) 和 <remote_name/remote_branch_name>(如origin/main) 进行关联
# 下次再推送的时候,如果依旧处于同一个本地分支的时候,即依旧处于main分支的时候
# 执行git push 命令 会自动推送到<remote_alias/remote_branch_name>(origin/main)中
# 即设置本地分支的默认关联的远程分支
# 在 Git 中,如果没有特别指定,默认的远程分支就是 origin/master
git push -u <remote_alias> <remote_branch_name>

# 设置当前分支的上游分支,也就是当前分支默认的远程推送分支
git push --set-upstream <remote_alias> <remote_branch_name>

# 查看所有的远程分支别名
# show 是可以省略的
git remote [show]

# 查看远程分支别名的详细信息(即推送和拉取地址)
git remote -v
# origin <remote_address> (fetch) --- 拉取地址
# origin <remote_address> (push) --- 推送地址

# 查看某一个分支的具体信息
git remote show <remote_name>
# * remote origin # 远程分支是origin
#  Fetch URL: git@www.example.com:CoderTest/git-demo.git # 拉取分支的地址
#  Push  URL: git@www.example.com:CoderTest/git-demo.git # 推送分支的地址(推送地址一般等于拉取地址)
#  HEAD branch: master # git clone后, 项目默认分支
#  Remote branch: # 远程仓库所拥有的对应分支
#    master tracked
#  Local branch configured for 'git pull': # 拉取的时候,会从远程的master分支进行拉取操作
#    master merges with remote master
#  Local ref configured for 'git push': # 推送会推送到远程master分支
#    master pushes to master (up to date) # up to date 所有信息都是最新的

Gitflow

GitFlow是一种Git代码管理工作流程的模式, 它定义了一系列团队中的标准工作流程,如开发、发布、维护等

ssh key

对于远程git仓库地址,一般有两种

分类说明
httpsHTTPS 地址的远程 Git 仓库需要每次输入用户名和密码
ssh在远程仓库配置私钥后,再次推送的时候,就不需要每次输入用户名和密码
对于ssh公钥的设置,有两种级别的权限,分别为仓库级别(deploy key)账号级别(ssh key)
# 生成公钥和私钥
# ssh-keygen 是unix和linux自带的系统密钥工具库
# 可以使用ssh-keygen自动生成对应的公钥和私钥
ssh-keygen

# 1. 默认情况下(也就是ssh-keygen后直接回车) 所使用的加密算法是RSA
# 2. 一般公钥和私钥会被放置到 ~/.ssh 也就是系统用户目录下的.ssh文件夹中
# 3. id_rsa --- 使用RSA生成的私钥文件
#    id_rsa.pub --- 使用RSA生成的公钥文件 --- 也就是需要被存放在远程git服务器的key

协作

在实际协作开发中,我们需要先pull远程分支,保证当前分支和远程分支保存一致后,才可以再推送所做的修改

# 查看分支 --- 不包括远程分支
git branch

# 查看所有的分支 --- 包括远程分支
git branch -a
# dev --- 本地的dev分支
# * master --- 本地分支  *表示当前所在的分支 即当前所在的分支为master
#  remotes/origin/master 
#  --- master对应的远程分支,也就是origin/master
#	 --- 注意 origin/master 是存在于本地的
#	 --- 在推送的时候,会先检测orgin/master和远程master分支的提交是否一致,即是否同步
#	 --- 如果不同步,则要求推送者先拉取远程最新的提交,并合并可能存在的冲突,后再重新提交
#  --- 所以 origin/master 主要是git用来判断自上次拉取后,远程是否有新提交的方法
#  --- 同理在git pull的时候 不但但会同步本地分支,同时也会同步<remote_alias>/<remote_branch_name>

# 查看所有的分支 并显示最新一次提交记录
git branch -av

# 克隆(拷贝)远程仓库到本地
# <local_repositry_name> 可以省略
# 如果省略 则采用远程仓库名 作为本地文件名,如果没有省略 使用自定义文件名作为本地仓库名
# 克隆下来的本地仓库的默认分支为master
git clone <remote_repositry_address> [<local_repositry_name>]

# 拉取远程分支
git pull

# 历史节点和在本地的远程节点都是只读的
# 如果切换到上述节点,并需要进行修改,只能从对应节点切换出一个新的分支
# 修改完成后,再将新切出的分支和原分支的最新一次commit进行合并
git branch -a
# master
#  remotes/origin/HEAD -> origin/master
#  remotes/origin/dev
#  remotes/origin/master

冲突