Git 教程
Git
Git 安装配置
配置环境变量
右击此电脑 → 属性 → 高级系统设置 → 环境变量 → 在系统变量中找到 path,添加 安装目录 \ cmd\git.exe
-
进入到 GIT 安装目录下双击 git-bash.exe,打开 git 命令行窗口,依次输入以下命令
# 配置提交代码时的签名和绑定全局邮箱 git config --global user.name "shukaiYoung" git config --global user.email "1184590995@qq.com"
-
生成 ssh-key
输入以下命令生成 ssh-key,输入后连续按 3 次回车
ssh-keygen -t rsa -C "1184590995@qq.com"
进入目录
C:\Users\YangShuKai\.ssh
,可以看到生成的 id_rsa 以及 id_rsa.pub,前者是私钥最好不要泄露,后者是公钥可以告诉别人。 -
将客户端与
Github
进行连接进入到
Github
首页,依次点击进入用户头像 → setting → SSH and GPG keys → New SSH key
title 可以自定义,用文本编辑器打开 id_rsa.pub 将里面的内容复制到 key ,Add SSH key。
连接完毕
Git 工作流程图
-
git fetch 是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
-
git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
git merge 和 git rebase 的区别
git rebase
和 git merge
一样都是用于从一个分支获取并且合并到当前分支,但是他们采取不同的工作方式,采用 git merge
和 git rebase
后,git log
的区别,merge 命令不会保留 merge 的分支的 commit
如图所示:假如你在一个 feature 分支进行新特性的开发,与此同时,master 分支的也有新的提交。
为了将 master 上新的提交合并到你的 feature 分支上,你有两种选择:git merge
or git rebase
。
merge
执行命令:
git checkout feature (切换当前分支到 feature 分支)
git merge master(将 master 分支合并到当前分支)
或者执行更简单的:
git merge master feature(将 master 分支合并到 feature 分支)
那么此时在 feature 上 git 自动会产生一个新的 commit(merge commit)
git merge :
-
特点:自动创建一个新的 commit,如果合并的时候遇到冲突,仅需要修改后重新 commit
-
优点:记录了真实的 commit 情况,包括每个分支的详情
-
缺点:因为每次 merge 会自动产生一个 merge commit,所以在使用一些 git 的 GUI tools,特别是 commit 比较频繁时,看到分支很杂乱。
使用 git merge
命令合并分支只有在解决完冲突时才会自动产生一个 commit,如果想在没有冲突的情况下也自动生成一个 commit,记录此次合并就可以用:git merge --no-ff
命令,如果不加 --no-ff 则被合并的分支之前的 commit 都会被抹去,只会保留一个解决冲突后的 merge commit。
rebase
本质时变基 变基 变基
执行以下命令:
git checkout feature
git rebase master
rebase 特点:会合并之前的 commit 历史
优点:得到更简洁的项目历史,去掉了 merge commit
缺点:如果合并出现代码问题不容易定位,因为 re-write 了 history
合并时如果出现冲突需要按照如下步骤解决
- 修改冲突部分
- git add
git rebase --continue
- (如果第三步无效可以执行
git rebase --skip
)
也可以:
- (一股脑)使用
merge
命令合并分支,解