1.
gitflow
修改 .git/config 配置文件
Git~
为啥要学Git?答:不学Git,无法参与满足大公司代码开发功能(版本管理、提交代码)。
本文不讲解任何不同代码控制软件的不同,也不讲解可视化版本控制的使用。 为什么?答:大家都用这玩意,你别折腾上古工具(SVN)这些东西。
-
设置Git默认选项(email&nickname)
git config --global user.email "[your email address]" git config --global user.name "[your nickname]" git config -l history
-
初次使用Git简单管理文件
git init [git status](<https://www.notion.so/Git-9d51502375d5407faf246cb1caf1b16a>) git add [filename.filetype] //添加到缓存区 git add . git commit git commit -m "[version name]"
git status color:
red 🔴:not add
green 🟢:had added
-
版本添加tag
git tag -a [tag name] -m "[tag message]" git tag -d [tag name] git tag -l [*0*] //显示所有包含"0"的tag git push origin --tags git push origin --delete [tag name] git show [tag name]
-
修改commit的信息
git rebase -i [commit id] git rebase -i --root
具体操作为,修改需要更改commit那行的首个单词(pick)改为reword(r)。退出后,会再次打开一个文件,在这里对首行的信息(message)进行修改。
这里简单诠释一下,以便理解后文。 工作区缓存,是git自动获取的状态也就是git status之后的红字文件。 缓存在后文实际上指工作区的改动,工作区缓存回滚到工作区。就是从工作区缓存(红字)到工作区(无)。从缓存区回滚到工作区缓存则是,从缓存区(绿字)到工作区缓存(红字)。 [last commit id]指的是前一个版本的identification。
tips:命令的参数中,一个杠(-)通常是指缩写,两个杠(- -)通常是指全写,例如上文中的-m实际上就是- -message。
-
Git操作之回滚(reset)版本
git log git reset --hard [commit id] //回滚版本 git reflog git reset --hard [commit id] //回滚参考日志版本(无任何当前工作缓存) git checkout -- [filename.filetype] //工作区缓存回滚到工作区 git reset HEAD [filename.filetype] //缓存区回滚到工作区缓存 git reset --soft [last commit id] //从版本库回滚到缓存区(添加文件之后(绿)) git reset --mixed [last commit id] //从版本库回滚到工作区缓存(添加文件之前(红))
-
Git操作之分支(branch)版本
git branch //展示分支 git checkout [branch name] //切换分支 git checkout -b [branch name] //切换并且创建分支 git branch -m [old branch name] [new branch name] //分支改名 git merge [branch name] //合并到哪,切换哪的分支。 git log --oneline //单行显示日志 git log --graph //图形显示日志 git log --graph --pretty=format:"%h %s" //简洁显示日志 git rebase -i --root //显示根日志 git branch -d [branch name] //删除分支 git cherry-pick [branch a name] [branch b name] //合并俩个分支
建议:在开发的时候就生产多个工作流,例如:线上版本(master)、开发功能(dev-[current version])、测试版本(beta-[current version]、漏洞修复(bugfix-[current version])。当测试版本运行没有问题时,可以将其合并到master。
-
拉取和推送在码云
git remote add [alias] [remote address]/[project name].git git push -u [alias] [branch name] //-u设置默认提交 git clone [remote address]/[project name].git git push [alias] [branch name] //推送新内容到远程分支 git push [alias] -d [branch name] //删除远程分支 git pull [alias] [branch name] //拉取远程分支新内容到本地直接合并到分支 git fetch [alias] [branch name] //拉取分支新内容到本地版本库[origin/branch name]
可以自己去设置别名(alias),但是我推荐你写origin。否则你推送下来的文件即有可能默认是origin,而不是你自己写的别名。当你下你自己的文件,很有可能查找分支只有master。你可以查看.git文件夹下的config,查询到底有什么分支。
-
合并本地日志记录
git rebase -i HEAD~5 //从最上面开始五条记录 git rebase -i [commit id] //所选记录开始所有记录 git rebase -i --root //从根记录开始所有记录
已经到仓库的记录,最好不要进行合并操作。 改打开文件的pick为s,其下有释义。
-
分支记录合并进主线记录
git checkout [branch name] git rebase master git checkout master git merge [branch name]
-
拉取远程文件不产生分叉
git fetch [alias] [branch name] git rebase origin/[branch name]
-
解决rebase导致的冲突
git rebase [branch name] git add [filename.filetype] git rebase --continue
很多IDE软件都自带冲突解决显示,不太需要自己再去下载研究了。并且使用冲突工具解决冲突,很容易使自己写的项目产生致命错误。所以,没事这用这个。
-
Git克隆分支
git checkout -b [branch name] [remote address]
例如测试人员可以先拉取,beta分支的文件。然后进行测试之后,如无问题创建pull request。向管理者发起合并到主线的请求,通过之后就算是正式发布了。
-
通过SSH实现免密码登入
ssh-keygen git remote add origin [ssh remote address] git push origin master
在不设置的情况下,ssh文件都放置在用户文件夹下.ssh里面,文件名带pub的文件。是公钥,需要将其添加到用户设置中。设置之后,会自动默认验证对配钥匙对。不过新版本下的Git中,有默认帮忙管理权证的功能。
-
忽略文件
ni .gitignore /* input: [filename.filetype] //忽略特定文件 [*.filetype] //忽略所有同类文件 [dirname]/ //忽略特定目录 *.py[c|d] //忽略后缀为pyc、pyd为文件类型的文件 */
-
相关内容
issues:对项目产生问题提问。
wiki:对项目进行解释诠释。
指南过后就可以去了解那些图形化工具。