git 详细介绍各种命令行(含合并冲突解决)

一、上传本地项目到gitLab

1.先记录个人信息

git config --global user.name "xxx"
git config --global user.email "xxx@xxx"

2.上传

// 1. git add : 添加到暂存区
git add xxx文件
git add -A // 添加所有文件(通常改动较多可以直接使用这句命令)

// 2. git commit -m "备注信息":添加到数据仓储
git commit -m "备注信息"  // 添加 -m 选项,将提交信息与命令放在同一行
git commit -a -m "备注信息"// 加上 -a 选项,就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤(但是未经过git add步骤的新增的文件,就不可以,需要先git add)

// 3. git push 推送到远程服务器 gitLab
git push [地址] master

// 推送本地分支到远程
git push origin <分支名>
git status  // 显示工作目录和暂存区的状态
// 可以看见,执行 git add 前后的状态对比

二、下载远程服务器的项目到本地

1.将其他仓库克隆到本地

包括被clone仓库的版本变化

git clone <版本库的url>
// HTTPS
git clone https://github.com/tensorflow/tensorflow.git
// SSH
git clone git@github.com:tensorflow/tensorflow.git
 // 如果本地目录不想与远程仓库同名:
git clone <版本库的网址> <本地目录名>

2.拉取远程分支更新到本地仓库

比如远程仓库里的学习资料有了新内容,需要把新内容下载下来的时候,就可以使用git pull命令。事实上,git pull是相当于从远程仓库获取最新版本,然后再与本地分支merge(合并)

即:git pull = git fetch + git merge

注:git fetch不会进行合并,执行后需要手动执行git merge合并,而git pull拉取远程分之后直接与本地分支进行合并。更准确地说,git pull是使用给定的参数运行git fetch,并调用git merge将检索到的分支头合并到当前分支中。

git pull <远程主机名> <远程分支名>:<本地分支名> // 使用
// 举例:将远程主机origin的master分支拉取过来,与本地的 master 分支合并。
git pull origin master

以上的git pull操作如果用git fetch来表示:

git fetch origin master:tmp  // 本地新建temp分支,并将远程的master分支下载到temp
git diff tmp  // 可以比较本地代码与刚刚从远程下载下来的代码的区别
git merge tmp  // 合并temp分支到本地的master分支
git branch -d temp // 最后可删除temp分支

三、本地分支的创建、切换、删除

1.查看分支信息

git branch  // 查看本地分支
git branch -r // 查看远程分支
git branch -a // 查看所有分支(本地+远程),只有分支名称
git branch -v -a // 查看所有分支,有分支名称+备注信息

2.新建分支,并切换到新的分支

git checkout -b develop
// 相当于下面两步:
git branch develop // 创建 develop
git checkout develop  // 切换到 develop

问:如何切换分支而又不用带上刚刚修改的文件?

在使用 git 的时候,我们往往使用 branch 解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码,如果发现原有的分支上有个不得不修改的 bug,我们往往会把完成一半的代码 commit 提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。这样的话往往 log 上会有大量不必要的记录。

其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急 Bug,那么使用' git stash ' 命令就可以将你当前未提交到本地(和服务器)的代码推入到 Git 的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修 Bug,等到修完 Bug,提交到服务器上后,再使用 ' git stash apply ' 将以前一半的工作应用回来。

也许有的人会说,那我可不可以多次将未提交的代码压入到栈中?答案是可以的。当你多次使用 'git stash' 命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑。

git stash list  // 将当前的 Git 栈信息打印出来
git stash apply stash@{1}  // 应用指定版本的工作 stash@{1}
git stash drop stash@{1}  // 移除指定版本
git stash clear  // 清空栈信息

3.合并分支

3.1 修改文件后,保存修改

git commit -a -m "修改一些细节" // 自动把所有已经跟踪过的文件暂存起来一并提交

3.2 转换到master,合并develop

// 切换到 master分支
git checkout master
// 对 develop 分支进行合并
git merge --no-ff develop  // --no-ff 执行正常合并

解释一下 --no-ff 参数。默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支

使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰,我们希望采用这种做法。

  • git merge –no-ff 可以保存你之前的分支历史。能够更好的查看 merge历史,以及branch 状态。
  • git merge 则不会显示 feature,只保留单条分支记录

3.3 查看未合并工作的分支

git branch --no-merged

4.删除分支 -d

git branch -d <branchName>
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值