1. Windows-Git 下载装置
官网下载地址:点击下载
官网下载太慢的处理方案 :点击下载
2 Git公钥生成与装备办法
2.1 公钥的用处
许多公司的代码库房及第三方代码保管平台,运用的都是根据公钥的SSH认证办法(公钥加密,私钥解密)。
Git引荐运用SSH协议的原因运用SSH协议能够避免每次push
输入暗码。git@github.com最初的便是SSH协议。 运用Https协议则每次都要输入用户名和暗码。
公钥是代码库房服务器验证本地机器的一种身份辨认办法。入职一家新公司后,公司的git服务器办理员,会要求你把你的git公钥通过邮件的办法发给它,装备好之后,今后每次向长途代码库房提交代码,就不必输入用户名和暗码啦。
2.2 生成公钥
这儿插一句,假如感到git bash的窗口太小或许字体太小,能够自己进行调整。调整的办法是,翻开git bash指令窗口后,在指令窗的标题栏,鼠标右键,然后选择options,装置下面的操作进行设置
// 窗口尺度设置
options --> windows -->修正行数(高度)+列数(宽度)
// 窗口字体设置
options --> text -->设置字体大小
2.2.1 装备用户名和邮箱
在公司运用的话,用户名主张装备成自己的真名,这样查看代码修正者的时分,比较好找。git config指令有三种效果域。
# 对当时库房有用
git config --local
# 对当时登录者有用,对一切库房都有用
git config --global
# 对登录这台电脑的人都有用,对一切库房都有用
git config --system
假如装备项比较多,能够在这些指令后边加 -e 参数,翻开装备文件进行装备。修正完先按esc, 然后再按shift+:组合键,最终在指令行输入wq保存退出
这儿明显应该选择git config –global装备指令。
git config --global user.name "用户名"
git config --global user.email "邮箱地址"
2.2.2 生成密钥
ssh-keygen
生成秘钥进程会有三次问询交互。第一次是询问生成秘钥存储途径和称号,默许存储位置是/c/Users/用户名/.ssh/id_rsa
,不想更改的话按回车键。第二和第三次是要求你输入两次私钥暗码。用于查看秘钥时的认证,一次是设置暗码,一次是承认暗码, 假如你不想在运用密钥时输入口令,按回车跳过即可。
ssh-keygen -t rsa -C “上一步的邮箱地址”
2.2.3 查看公钥
cd ~/.ssh && ls
cat id_rsa.pub
2.3 装备公钥
登录个人或企业的git网站,在用户设置–>SSH公钥里边 ,给公钥起个有意义的称号,将生成的公钥粘贴到公钥输入框里(留意要删去公钥末尾的空白或许换行符),点击保存,就能够了。
2.4 Git办理多个SSH密钥,Git多帐号装备
创立步骤:
2.4.1 在每个项目下,独自装备用户名和邮箱地址,为不同项目生成密钥对,生成时指定私钥称号
git config --local user.name "你的姓名"
git config --local user.email "你的邮箱"
ssh-keygen指令生成SSH-KEY密钥对文件时,需求输入文件存储途径,为不同账号起不同的称号
ssh-keygen -t rsa -C "test@126.com”
2.4.2 在~ssh文件夹下,创立一个config文件,装备每个账号域名、用户名 、 验证办法、私钥文件途径
Host github.com
HostName github.com
User test@126.com
PreferredAuthentications publickey
IdentityFile /c/Users/用户名/.ssh/ssh/id_rsa_github
Host oschina.com
HostName oschina.com
User test@126.com
PreferredAuthentications publickey
IdentityFile /c/Users/用户名/.ssh/ssh/id_rsa_github
Host gitee.com
HostName gitee.com
User test@126.com
PreferredAuthentications publickey
IdentityFile /c/Users/用户名/~ssh/id_rsa_gitee
HostName
是服务器的地址,User
是用户名,PreferredAuthentications
是验证办法,IdentityFile是私钥文件途径
3 Git库房创立
分为两种状况,一种是没有库房,一种是已有库房,先看第一种,从零创立库房,然后推送到长途
3.1 从零开始创立本地库,并推送到长途
git init 目录名 新建一个本地库房
git add README.md -- 将README.md文件参加到库房中
git commit -m "提交描绘" -- 将文件提交到本地库房
git remote add origin "长途库房地址" -- 增加长途库房,origin是一个长途主机的别名,称号能够随意取,一个长途主机上能够有多个长途库房
git push -u origin master -- 将本地库房push到长途主机origin的master分支,并将origin设为默许长途主机 -u参数设置默许长途主机,后续push代码,不写主机名的话,便是默许主机
3.2 克隆已有库房到本地
git clone /path/to/repository // 克隆本地库
git clone git/ssh/http[s]/ftp[s]/file/rsync:username@ip/path/to/repository // 克隆远端库
git clone的本质便是把Git目录里边的内容拷贝过来,一般Git目录里有不计其数的各种目标(提交目标,树目标,二进制目标, tag目标……),假如逐一仿制的话,其功率就可想而知。假如通过git、ssh协议传输,服务器端会在传输前把需求传输的各种目标先打好包再进行传输;而http(s)协议则会反复恳求要传输的不同目标。假如库房里边的提交不多的话,前者和后者的功率相差不多;但若库房里有很多提交的话,git、ssh协议进行传输功率更高。不过现在Git对http(s)协议传输Git库房做了一定的优化,http(s)传输现在也能到达ssh协议的功率 。
4 .git目录的组成
5 Git存储区概念
假如你不清楚git add ,git commit ,git push都做了什么,那可能是由于你不知道git库房存储区办理办法。git将本地的代码保存分为三个存储空间。
- 作业区:用户修正保存项目文件的区域,用户直接能够接触的地方。
- 暂存区:保存预备提交的文件列表信息,保存在上文的.git文件夹下的index目录中;
- 版别库:git 之所以快,是由于大多数提交都是对本地库房而言的,不依靠网络也能进行版别办理,需求与长途库房同步的时分才推送到长途库房。
6 分支操作
分支是用来将特性开发绝缘开来的。在你创立库房的时分,master是“默许的”分支。在其它分支上进行开发,完结后再将它们兼并到主分支上。
6.1 查看分支
git branch 查看本地一切的分支
git branch -r 查看长途一切分支
git branch -vv 查看本地分支和长途分支的追寻关系
6.2 切换分支
git checkout 分支名
6.3 新建分支
git checkout -b 新分支名 // 从当时所在的本地分支下,创立一个新分支,分支名主张以 feature-YYYYMMDD-开发功用概述-姓名简称,这样的格式命名
git checkout -b 新分支名 长途主机名/长途分支名 // 从长途分支创立一个新分支,并追寻长途分支
6.4 重命名分支
git branch -m 旧称号 新称号
6.5 删去分支
git branch -D 分支名 // 先切换到其他分支名下,删去本地分支
git push --delete 长途主机 长途分支名 // 删去长途分支
6.6 兼并分支
6.6.1 git merge
git merge 当时分支要兼并的分支名 -m '兼并补白'
git merge --no-ff 当时分支要兼并的分支名 // 保存分支兼并之前的前史提交记载
git merge --squash 当时分支要兼并的分支名 // 将分支兼并之前屡次提交记载兼并为一次
6.6.2 git rebase
git rebase -i [startpoint] [endpoint]
其中-i
的意思是--interactive
,即弹出交互式的界面让用户修正完结兼并操作,[startpoint]
[endpoint]
则指定了一个修正区间,假如不指定[endpoint]
,则该区间的结尾默许是当时分支HEAD
所指向的commit
以兼并最近三次的提交记载为例:
git rebase -i HEAD~3
弹出如下界面:
上面未被注释的部分列出的是咱们本次rebase操作包含的一切提交,下面注释部分是git为咱们供给的指令阐明。每一个commit id 前面的pick
表示指令类型,git 为咱们供给了以下几个指令:
指令 | 阐明 |
---|---|
pick | 保存该commit(缩写:p) |
reword | 保存该commit,但我需求修正该commit的注释(缩写:r) |
edit | 保存该commit, 但我要停下来修正该提交(不仅仅修正注释)(缩写:e) |
squash | 将该commit和前一个commit兼并(缩写:s) |
fixup | 将该commit和前一个commit兼并,但我不要保存该提交的注释信息(缩写:f) |
exec | 履行shell指令(缩写:x) |
drop | 我要丢掉该commit(缩写:d) |
根据需求修正完之后保存即可。
6.6.3 git merge和git rebase 兼并分支的差异
git rebase生成的前史记载线比较好看,merge比rebase有更多的前史记载,一方以为,兼并分支不能仅仅为了好看,而要记载某个分支完整开发前史,一根直线的前史,很难分辨出开发历程和作业分配,假如开发进程跌跌撞撞,要进行照实记载,遍于后期改进。
另一方以为,在开发进程中,假如某个分支功用比较多, commit量比较多时,运用rebase能够将当时分支提交记载整理过后再兼并回骨干,这样骨干的演变轨迹线会看着比较漂亮,比较清晰。假如项目成员对git用得比较熟练,主张运用git rebase,不然主张运用git merge,便于查看提交前史。
6.7 兼并分支抵触
抵触的原因是两个不同的开发者改了相同文件相同位置的代码,抵触提示,
$ git merge conflict-branch
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
文件抵触,HEAD到=======之间的是当时分支,=======到>>>>>>>之间的是抵触分支的内容,最终面是抵触分支名
<<<<<<< HEAD
id=”footer”>contact : email.support@github.com
=======
id=”footer”>please contact us at support@github.com
>>>>>>> conflict-branch
兼并抵触的准则是取最大公约数,一起的部分只保存一份,有差异的地方多方都保存 遇到抵触,难于处理,想回退到未兼并之前的状况,运用
git merge --abort
处理完抵触文件之后,要从头增加文件到暂存区和本地版别库。
另外一种场景是git pull最新的代码后,git stash pop引起抵触,想回退到最新没抵触之前的代码,运用指令
git reset --hard HEAD
6.8 追寻分支
追寻分支主要用来比照当时和长途分支的版别, 比方说origin/master分支比master多提交了两次,意味着你需求将origin/master的分支更新到master。
git branch --set-upstream-to=长途主机名/长途分支名 本地分支名(可不写,不写表示当时分支)
7 设置疏忽文件
7.1 创立疏忽文件
在库房根目录下新建.gitignore
文件,文件名不可更改。在Win体系下,不答应新建以.
最初的文件或文件夹,因而需求在Git Bash中新建,指令如下:
cd 本地代码库房目录
vim .gitignore
7.2 疏忽文件语法
# 以#最初的行都是注释
# 疏忽*.o和*.a文件(常见的编译进程中发生的文件)
*.[oa]
# 疏忽*.c和*.C文件,somefile.c除外,!用于在在某规矩之后增加破例
*.[cC]
!somefile.c
# 疏忽somepath文件和somepath目录
somepath
# 只疏忽somepath目录,不疏忽somepath文件
somepath/ # 只疏忽somepath文件,不疏忽somepath目录
somepath
!somepath/
# 只疏忽当时目录下的somepath文件和目录,子目录的somepath不在疏忽范围内
/somepath
7.3 疏忽文件的准则
- 疏忽操作体系主动生成的文件,比方缩略图等;
- 疏忽主动测试生成的陈述文件,疏忽代码治疗扫描成果文件;
- 疏忽带有灵敏信息的装备文件,比方寄存口令的装备文件。
- 疏忽依靠装置包,疏忽包办理东西生成的过错文件,疏忽打包目录
7.4 疏忽现已增加到长途库房的文件 ( 假如文件重要,要提前备份)
- 删去文件追寻两种办法
git rm –cached xxx
git rm -r –cached
-
在.gitignored中增加需求过滤的文件
-
commit, push提交.gitignore装备这个后其他成员pull后working directory中对应的文件会删去,
8 作业空间操作
8.1 进展暂存
git 切换分支时,假如当时分支的功用没有开发好,不具备提交的条件, 假如不对这些内容做暂存处理,会被带入到切换之后的分支,给代码办理带来不必要的费事。这时就需求对没有开发完结的进展进行存储操作。
git stash save "补白阐明" // 暂存没有开发完结的进展
git stash list // 查看暂存进展
git stash pop stash@{1} // 康复指定进展到作业区,stash_id是通过git stash list指令得到的,假如不指定,康复最新的进展到作业区
git stash drop [stash_id] // 假如不指定stash_id,则默许删去最新的存储进展。
git stash clear // 删去一切暂存内容
8.2 将作业区的改动增加暂存区
git add dir1 # 增加dir1这个目录,目录下的一切文件都被参加
git add f1 f2 # 增加f1,f2文件
git add -u # -u是update的缩写,只监听现已被参加的文件,包含修正和删去,不包含新增的文件和.gitignore中设置的疏忽文件 增加到暂存区
git add . # 监听作业区的状况树,把作业区状况树的一切改动提交到暂存区, 包含新增的和修正的,不包含删去的文件和.gitignore中设置的疏忽文件
git add -A # 等于 git add . + git add -u 不包含.gitignore中要疏忽的文件
git add * # 等同git add -A
8.3 将暂存区的文件提交到本地版别库
git commit -m "代码提交信息"
git commit -a -m "代码提交信息" # -a是把unstaged的文件变成staged(不包含新建的文件),然后commit
git commit --amend # 修正提交的commit(没有push)
git commit --amend -m "comment" # 修正commit注释
8.4将本地版别库推送到长途版别库
git push <长途主机名> <本地分支名>:<长途分支名>
git push -f <长途主机名> <本地分支名>:<长途分支名> // 强制推送
git push指令运用时常见的四种状况:
git push <长途主机名> <本地分支名> | 假如长途分支被省掉,如上则表示将本地分支推送到与之存在追寻关系的长途分支(通常两者同名),假如该长途分支不存在,则会被新建 |
---|---|
git push <长途主机名> :<长途分支名> | 假如省掉本地分支名,则表示删去指定的长途分支,由于这等同于推送一个空的本地分支到长途分支,等同于 git push origin –delete 长途分支 |
git push <长途主机名> | 假如当时分支与长途分支存在追寻关系,则本地分支和长途分支都能够省掉,将当时分支推送到长途主机的对应分支 |
git push | 假如当时分支只有一个长途分支,那么主机名都能够省掉 |
8.5 更新长途版别库的内容到本地版别库
git fetch <长途主机名> <长途分支名>:<本地分支名>
git pull <长途主机名> <长途分支名>:<本地分支名> // 等于git fetch+git merge
git pull 常见的四种省掉参数的状况,与git push比较类似。这儿就不再赘述。git pull除了更新和主动兼并当时代码之外,还有更新库房一切分支的功用,留意是更新分支,不是更新分支上的代码。
8.6 git版别库回滚
回退指令
git checkout -- #吊销作业区修正,省掉filename,便是抛弃作业区一切的改动
git log --pretty=oneline --abbrev-commit #查看version_hash
git reset version_hash --[soft|mixed|hard] #本地库房回退到某个版别
# --soft 回退commit,stage和workspace仍旧保存改动
# --mixed 回退commit和stage,git reset默许的形式,只有作业区保存改动
# --hard 回退commit stage workspace 一切的改动都会丢失
git push -f 长途主机名 长途分支 #强制长途库房回退到本地库房版别
回退流程
1.备份当时分支
git checkout -b the_branch_backup
2.本地库房版别回退
git log --pretty=oneline --abbrev-commit #查看回退版别号
git reset --hard the_commit_id #本地库房版别回退
3.长途库房回退
git push origin :the_branch //删去长途 the_branch
4.用回滚后的本地分支从头树立长途分支
git push origin the_branch
5.回退成功,删去本地备份分支
git branch -D the_branch_backup
Git的版别回退速度非常快,由于Git在内部有个指向当时版其他HEAD
指针,当你回退版其他时分,Git仅仅是把HEAD从指向回退版别
提交代码时提交错了分支的处理办法
git log --pretty=oneline --abbrev-commit #查看 提交之前的commit_id
git reset commit_id #本地版别库回退
git stash #暂存作业区和暂存区改动
git checkout target_branch #切换到正确的分支
git stash pop #康复代码
git add -A && git commit - m '补白'
git revert和git reset的差异
(1)git reset只能针对本地操作,假如本地删去的内容现已推送到长途库房,下一次更新时,被删去的内容会康复。git revert能够对对长途服务器履行回退操作。下一次更新时,本地被删去的文件,不会康复。
(2)git revert会使提交记载增多,git revert是吊销指定版其他提交,会发生一个新的提交记载,git reset会使提交记载削减,git reset是回卷,会吊销指定版别之后的一切提交记载
git revert和get reset的后悔药
revert后假如不想吊销了,看一下log,reset就能够回去了。
git log # 查看commit_id
git reset --hard commit_d # 回退本地库房,暂存区,作业区
reset后后悔了怎么办,没有log了,怎么办? 没关系,用git reflog指令能够查到更多commit_id:
git reflog # 查看一切的指令操作记载,能够查询到git reset之前的commit_id
git reset --hard commit_id # 就能够回退会reset以前状况了。
在git中,总是有后悔药能够吃的,git reflog 记载你操作的每一条指令,HEAD
指向的版别是当时版别,Git答应咱们运用指令git reset --hard commit_id
在前史版别之间穿梭。穿梭前,用git log
能够查看提交前史,以便确定要回退到哪个版别。要重返未来,用git reflog
查看指令前史,以便确定要回到未来的哪个版别。
8.7git提交指定分支
git cherry-pick
指令的效果,便是在当时分支上,把其它分支的提交记载兼并过来,这在两个版别刚开始说要一起上线,后来一个版别不上线了,而代码都搅合在发布分支,要吊销不上线的代码时,合作git reset指令,能够轻松完成发布分支不上线功用的代码下撤。
a1 - a2 - a3 - a4 A
\
b1 - b2 - b3 B
现在将b2提交应用到A
分支。
# 切换到 A 分支
$ git checkout A
# Cherry pick 操作
$ git cherry-pick b2
操作完结今后,代码库就变成:
a1 - a2 - a3 - a4 - b2 A
\
b1 - b2 - b3 B
兼并多个提交的操作指令是:
git cherry-pick <Hash-b1> <Hash-bN>
8.8 git删去
当咱们需求删去暂存区或版别库上的文件, 一起作业区也不需求这个文件了, 能够运用git rm
git rm file_path
git commit -m 'delete somefile'
git push
当咱们需求删去暂存区或版别库的文件, 但本地又需求运用, 只是不期望这个文件被版别操控, 能够运用 git rm –cached
git rm --cached file_path
git commit -m 'delete remote somefile'
git push
8.9 git log
引荐两条简写提交日志格式设置参数,lm-不显现提交记载汇总信息 lms-会现在提交记载汇总信息
# 提交记载hash值是赤色 提交描绘是蓝色 提交日期是绿色 提交者是深蓝色
git config --global alias.lm "log --no-merges --color --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%Cred%h %Creset- %Cblue%s %Cgreen(%cd) %C(bold blue)<%an>'"
# 有提交记载汇总信息 提交记载hash值是赤色 提交描绘是蓝色 提交日期是绿色 提交者是深蓝色
git config --global alias.lms "log --no-merges --color --stat --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%Cred%h %Creset- %Cblue%s %Cgreen(%cd) %C(bold blue)<%an>'"
指令浅析:
--no-merges:不显现分支兼并日志
%h:简短hash提交字符串
%cd:提交日期
%an:提交者
%s:提交阐明
%C+色彩值+内容=给内容设置相应的色彩
9 Tag操作
在软件发布时创立标签,建一个发布版其他里程碑,是被引荐的。
9.1 tag创立
#查询版别号
git log --pretty=oneline --abbrev-commit
#创立tag
git tag v1.0.0 1b2e1d63ff -m '20210123 created'
#推送某个tag到长途库房
git push origin tag_name
# 一次性推送一切tag到长途服务器
git push origin --tags
9.2 查看tag
# 查看某个tag记载
git show tag-name
# 查看一切的tag
git tag -ln # 加-ln,查看tag简略信息
9.3 运用tag
// 取出打过tag的某个版别
git checkout -b branch_name tag_name
9.4 删去tag
#删去本地的tag指令是
git tag -d tag-name
#删去长途tag的指令是
git push origin --delete tag-name
10. .gitlab-ci.yml装备参考示例
#镜像称号不是随意起的,要与docker装备称号对应
image: node:lts
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
- .yarn-cache/
variables:
APP_NAME: 'alp-crm-ng'
stages:
- format
before_script:
- echo "before_script"
- node -v
- yarn -v
- yarn install --cache-folder .yarn-cache
format:
stage: format
script:
- yarn format
11. git杰出的运用习气
- 每次提交前,查看一下所提交代码,是不是真正想修正的内容
- 提交的粒度要细,频率要高,能极大削减代码抵触和重要改动无版别存储问题
- 最好打通gitlab和钉钉,企业微信机器人代码提交告诉,有人提交代码时,能够及时告诉其它人更新,削减代码抵触的概率
- git的主动兼并功用,有瑕疵,有时分文件的一些部分,兼并是对的,一些部分,兼并有抵触,最好逐个文件查看
- 给项目装备husky东西,能够在提交代码的时分,对代码进行格式化,或许查看是否契合lint规矩,假如不符,能够终止提交
- 对于异常操作,一定要保存现场,查明原因,这样记忆更深入。
- 要看一下每条git指令的回显,看看是不是你要履行的操作, 有没有遗失或报错或许履行终止的状况
12. git 常见报错
- error: pathspec ‘branch-xxx’ did not match any file(s) known to git
git checkout 的分支不存在.git文件夹引起的
- 修正了文件的称号,将小写改成大写,提交到git长途库房,发现文件称号没有改动,处理办法是
git rm -r --cached .
3. 兼并代码,引荐用如下指令,比git merge更好用。
git pull origin remote_need_merge_branch_name
- 在VSCode的git指令窗口提交代码时,报如下过错:
git pull --tags origin hotfix/20210707-hide-fund-rate
From gitlab.tengmoney.com:tengmoney-fe/caizhi-minipro-cscb
* branch hotfix/20210707-hide-fund-rate -> FETCH_HEAD
! [rejected] v1.2.0 -> v1.2.0 (would clobber existing tag)
这是由于tag被删去了,又新建了一个如出一辙的tag,处理方案是,强制刷新一下长途的一切tag
git fetch --tags -f
5. .gitignore文件中设置的疏忽文件不收效的处理办法,.gitignore中设置的疏忽规矩,是针对未增加到版别办理的文件而言,对已增加到版别库的文件不收效。处理办法是将一切文件先从版别库删去,再从头增加一遍。
git rm --cached 要删去的xxx文件夹或文件
6. Could not retrieve the pipeline status. —- 无法检索流水线状况。
这种报错是由于没有流水线文件所致。
- error: cannot lock ref ‘xxx’: ‘xxx’ exists; cannot create ‘xxx’
原因:git工程的.git/refs目录下盯梢的某些git分支,在pull时分发现与长途库房对应的分支refs不同,因而导致 git pull 失败
- A同事
$ git push -force
了test这个分支,导致长途库房的分支被覆盖,而你本地的refs则会与长途库房的分支不一致,发生问题; - git分支是不区别大小写,有人删去了长途库房的分支又从头创立一个相同姓名的分支相同也会发生问题。
处理办法:
- 运用git指令
git update-ref -d xxx 删去本地.git下的xxx文件
- 假如不可,强制更新 gitpull -p强制更新
8.The following untracked working tree files would be overwritten by merge,
原因:远端将某个文件参加了库房,本地把这个文件从库房中移除了,就会呈现这样的提示。一般是同名文件,刚开始命名不标准,比方说文件名首字母大写,后边改成了小写文件。window体系不区别文件大小写,就呈现这个问题。
处理办法:
办法1
git rm --cached filename
git push origin remote_branch
办法2
git clean -d -fx "src/httpTypes"
其中 d—-删去未被增加到git的途径中的文件 x—删去疏忽文件 对git来说不辨认的文件 f —强制运行 ,强制兼并的思路走不通。
9. git默许对文件称号大小写不灵敏,假如将本来小驼峰命名的文件改成了大驼峰,会发现本地git的改动文件提示,没有任何修正。处理办法便是履行
git config core.ignorecase false
删去之前小驼峰文件的操作指令是
git mv readme.md README.md
- 已删去的文件,而且本地已暂存,无法在暂存状况下康复删去的文件,将删去文件从暂存库房中移除,才干康复删去的文件。
- 过错: error dst refspec matches more than one ,原因:tags与branch中有重名的分支
处理办法:删去重名分支
参考文章
[1]探秘git隐藏文件夹
[2]图解Git作业区、暂存区、版别库之间的关系
[3]git merge –no-ff是什么意思
[4]Git ignore文件的设置
[5]Git push 常见用法
[6]Git 分支 – 分支的新建与兼并
[7]Git办理多个SSH密钥,Git多帐号装备
[8]Git 作业流程
[9]Git rebase 用法小结
[10]git log指令全解析,打log还能这么随心所欲!