Git 工作流及其上传远程库的一些操作(基于git -bash 命令行)
一,创建本地库并提交文件(如下图):
1. 在f盘下新建gitdemo文件夹,以下所有操作基于该文件夹
2. 建demo1文件夹,并新建test.txt,里面加一行git repo1文字
3. cd gitdemo1 进入该文件目录,git init 初始化该文件目录为git 管理的仓库。
4. 然后git add 文件名 添加到暂存区,git commit -m "commit message" 提交到本地仓库。

二, 工作流(如下图)
1. 工作目录下新建demo2
2. 初始化本地库demo2
3. 在demo2下新建一个bash_demo.txt(表示第一天需求)并提交



4. 现在修改bash_demo中的需求,并添加到本地库暂存区
5. 可是现在面临一问题:上一步修改的需求不需要啦,回到第一步的bash_demo的需求,这时就需要其他操作(如下)
6. git reset HEAD bash_demo 回退暂存区的添加到上一次commit
7.这时git status 就会发现在master主分支上,no staged for commit >> 暂存区没有提交,这就表明暂存区已经没有上一次改动的需求啦, 但是此时的工作区还是第二次修改的需求,那怎么回退工作区的内容呢?(看下一步)
8. git checkout -- bash_demo.txt >> 回退工作区的改动

9. 上一步中是仅仅把工作区的修改提交到暂存区,如果提交到本地库怎么办呢?

10. git log >> 查到各个commit 的唯一id
11. 得到第一次提交的commit id
12. git reset --hard commit id >> 回退到你指定的commit版本

13. 这时git status 就可以发现本地库已经回退到第一次需求中
14. 如果此时你的PM跟你说这次的需求不用做啦(该死的PM), 你需要在你的本地库中删掉所有的提交包括需求文档
15. git rm bash_demo.txt >> 删除demo2下的bash_demo.txt文档(可是并没有删除本地git库中的提交)
16. git commit -m "commit message" >> 提交删除,这样本地库中的bash_demo.txt 提交就已经被删除啦
17. OK 简单的工作流模拟完成

三, 提交到远程仓库(github为例)
1. 首先你需要在注册一个github账号 链接
2. 因为git本地库和github远程库传输需要SSH协议(或者Http),所以在github中配置你的SSH Key ,而git安装完成后在C/Users/Administrator/ 下,有一个文件夹 .ssh/ , .ssh下有一个叫 id_rsa.pub , 复制里面的内容,放在自己github配置中。


3. gitdemo下新建demo3工作目录,添加一个README.md ,并初始化为git仓库
4. t添加提交到本地库
5. 关联远程库 >> git remote add origin git@github.com:*******/***.git,注意在关联之前,你需要在github中new 一个仓库,并得到它的地址,不然无法关联
6. git push -u origin master >> git push 表示提交到远程库,-u origin master 表示提交同时关联本地库master分支和远程库master分支(origin 一般表示远程仓库名,你也可以取其他名字)


7. vim README.md >> 修改readme.md文件,加上一句second commit
* 注意vim 命令 进入命令页面,按下(i ,l)切换到插入界面,按下esc,回到命令界面,按下shift输入命令行 , :wq 保存并退出,回到git 命令行
8. 提交修改,并push到远程库,这是就不需要 -u 后面的一串东西啦

四,克隆和标签
1. git clone 远程仓库地址 >> 从远程仓库clone到本地目录(注意是本地目录,就是没有经过git init的干净文件目录,如果不是干净的目录,则会有错误,因为该本地库并不和远程库相互关联并同步)
2.新建sc_clone 目录并初始化,echo "new code " >> test 并向test中追加一些东西,提交并push到远程库。



3. git tag name >> 为该本地库打标签,git tag 查看所有标签
4. git push origin tagname 提交到远程库

五, 分支
1. 新建branch_demo 目录,并初始化,echo "first branch demo" 到branch.txt中,并提交




2. 此时所有的工作都是在master主分支上,正常工作,我们需要自己新建一个分支,在上面工作,然后合并到主分支上(这就是git的强大之处)
3. git branch feature_x >> 新建分支feature_x
4. git branch >> 查看分支可以发现此时还在master上 ,,git checkout feature_x 切换到某一点分支。

5. 修改内容并在feature_x分支上提交修改。
6. 切换到master分支,并把刚才feature_x合并 >> git merge feature_x
7. 此时查看txt文件的内容,发现已经修改

8. git branch -d feature_x >> 删除无用分支(该分支已经做完工作,可以删掉)

该文章只是在学习中的一些小见解和积累,如有错误请见谅
引用视频及文章:https://www.imooc.com/learn/1052
网友评论