1. github
1.1 配置用户的名称和邮件
//设置
git config --global user.name 张三
git config --global user.email zhangsan@163.com
//查看
git config --list
1.2 初始化仓库
命令
git init
设置忽略上传文件
git相关配置文件是被隐藏的,,,mac中:command+shift+. 显示默认隐藏的文件
- 创建.gitignore文件,配置需要忽略的文件
.gitignore文件配置规则 (原文:https://blog.csdn.net/qq_35077107/article/details/111319351)
添加-提交
这里就略了。。。都用烂了
git add .
git commit -m "log"
1.3 将仓库发布到github
github上新建仓库后,页面会提示几种上传仓库的方法命令行
看第一种:...or create a new repository on the command line
前面几步创建仓库的走完了本地仓库的操作,,最后需要将本地仓库同远程仓库绑定
git remote add origin ...
git push -u origin master
github上创建仓库其实是远程仓库,需要仓库源,就是对应远程仓库的本地仓库作为文件源,就是开发人员用的。绑定之后,以后再将本地仓库提交到远程仓库就只用git push
就可以了
github提示几种创建仓库的方法,可以看看
注:Git是分布式的,Git跟Svn一样有自己的集中式版本库和Server端,但Git更倾向于分布式开发,因为每一个开发人员的电脑上都有一个Local Repository,所以即使没有网络也一样可以Commit,查看历史版本记录,创建项 目分支等操作,等网络再次连接上Push到Server端
2. 开发流程
先来张图,感受一下git的分布式:
WechatIMG15.jpeg2.1 克隆代码
上面步骤已经创建好一个仓库,协同开发的第一步,要先clone一份远程仓库代码到本地作为本地仓库
//定位到你要放该仓库的目录
cd ~
//协同开发,多版本开发,不能直接在master开发,最好事先在远程仓库基于master创建个分支,如:demo_2021。clone的仓库名建议跟远程的开发分支一样
git clone 远程仓库url demo_2021
cd demo_2021
//查看分支
git branch -a
注意:
*号表明当前本地代码指向的分支
带remotes表明是远程的分支
如果本地没有到最新的分支信息,可用git pull拉取更新git仓库的信息
2.1.1 创建分支
分支开发,作用就是不影响主干进度,多条工作线进行不同功能的开发。提高协同的灵活性。。
所以,克隆主干代码后,一般都要创建分支进行本次任务开发的
创建分支也有两种方式,一是直接在远程仓库,如果公司自己搭建了gitlab的话,操作很方便了。。。二是用命令行的方式。。如下:
- 命令行创建分支,流程如下:
//1:创建分支。。。这里只是创建了分支,当前还在master,需要切换到开发分支上
git branch 分支名
//2:切换分支
git checkout 分支名
//注:上两步合为一步
git checkout -b 分支名
- 远程创建分支,流程如下:
//远程创建分支的话,尽量在clone代码之前先创建。。如果是克隆代码后,又在远程创建了分支,本地需要拉去一下分支数据:
git fetch
//检出 分支
git checkout -b [本地分支名称] 远程分支节点
如:git checkout -b demo_2021 origin/demo2021
//检查检出的分支
git branch -a
大致是这样的:
master
* demo_2021
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/demo_2021
上面说了,* demo_2021 本地当前所在的分支
2.1.2 删除分支
git branch -d 分支名
注意几种情况:
不能删除当前所在分支
如果要删除的那个分支,有commit未push到远程,是不允许删除的,只能通过强制删除
git branch -D 分支名
2.1.3 切换分支
切换分支,也需要保证分支干净。意思就是也需要同步代码。把修改的文件commit到本地仓库
//1:切换分支
//git checkout 本地分支名称
git checkout master
2.1.4 合并分支
场景:demo_2021开发完了,进入测试阶段了。这时候需要将主干的代码合并过来。。因为你开发demo_2021的同时,master可能提交新的代码了。这部分代码是之前demo_2021基于master创建的时候新增的
//1:切换到需要合并的代码分支
//2:切换到master了。需要将master远程代码拉到本地,同步到最新的代码
git pull
//3:这时候本地的master是最新的了,可以合并到开发分支了:demo_2021..需要先切回分支
git checkout demo_2021
//养成习惯,勤pull
git pull
//合并:合并:合并:~~~~表示将master的代码合并过来
git merge master
2.2 最基本的常用命令
//查看当前状态
git statuts
//添加文件
git add .
//拉取文件
git pull
//提交文件
git commit -m ""
//上传文件
git push
注:建议操作前查看当前状态,并拉取代码
2.3 撤销文件修改
手动 c+z
手动撤销😂
命令
git checkout 文件path
当然,谨慎使用,这个撤销是一下回退到根远程分支一致的代码,即add前的所有修改被撤销
2.4 拉取&提交&上传代码
协同开发,如你的demo_2021,开发中需要经常拉取&提交代码,小伙伴间要经常同步代码,不要等到最后,太多了,很容易冲突。操作如下:一波常规操作,注意,日常开发中也建议这样,提交前,先拉取
//1:拉取代码
git pull
//建议协同开发的时候经常使用这个命令,跟同事保持一致。
//注:
//1.1 如果跟同事修改到了同一个地方,git会给出提示:Your local changes to the following files would be overwritten by merge
//这时候,需要先提交本地或stash本地,再pull代码,如下:
//2:提交代码
//先把修改提交到本地仓库,或者先临时存储
//2.1:查看当前状态
git status
//有修改的文件,新加的文件,删除的文件,未合并冲突的文件等状态
//2.2:添加修改到git管理
git add .
//比如有新建的文件,未添加到git管理,或者删除的文件,修改的文件等,需要先执行add命令
//2.3:提交到本地仓库
git commit -m "log"
//或者add和commit的结合体:
git commit -a -m "log"
//2.4:临时存储
git stash
或者:
git stash save "备注"
//git stash list 能查看存储过哪些了
//2.5:上面提交或存储后,再拉取代码
git pull
//2.4.1:弹出存储
git stash pop
//这时候,demo_2021开发分支已经同步到最新代码了,有冲突的解决冲突,没冲突的下一步:
//3:上传代码
git push
2.5 操作失误~撤销命令
开发中,可能涉及很多文件,一不小心也有操作错误的时候,这时候需要撤销。。。
//1:对应git add的撤销。。添加了修改,撤销
git reset HEAD [path]
如:git reset HEAD 你要撤回的文件的路径
//2:对应git commit的撤销。。提交到本地仓库,撤销
//2.1:先查看提交记录
git log
//2.2:找到要回退到的commit的id:58a8d3eda10469e0197c6b836613abc0e36c12aa 另外:这个id可以不用全部复制,前几位就行,当然全复制更稳妥
git reset --hard 58a8d3eda10469e0197c6b836613abc0e36c12aa
//2.3:或者挨个版本回退..这个^个数表示回退版本个数
git reset --hard HEAD^
//3:对应git push的撤销。。提交到远程了,撤销
//3.1:提交远程的前提是本地commit了。所以,先本地回退,再提交远程就ok了
//同上面的git commit的撤销
//3.2:然后提交远程
git push origin HEAD --force
2.5.1 某一文件回退到某一版本
该需求单独说。
因为提交一次版本,很大可能不是只改了某一个文件,当提交了几个版本后,某个文件需要用之前某个版本的实现,如果回退的时候,整个修改都回退了,,,那如何只将某个文件回退到指定版本呢?
git checkout commit-id -- 文件path
2.6 添加标签
一个版本开发完成,要添加一个tag,tag就相当于是一个标签。tag默认添加到最新的commit上,意义就是添加一个备注,表示该commit后,是一个版本。。有了这个版本标记,一是可以通过tag找到commit的位置,二是可以直接根据tag检出指定版本的代码,在该版本上继续开发,而不是默认的检出最新的代码,三是在远程仓库可以直接根据tag找到具体的版本代码
GIT中打标签(tag)的意义(原文:https://blog.csdn.net/Jason_Lee155/article/details/115280687)
3. 拓展命令
//git add 命令
git add . //是添加所有修改
git add 文件名/或文件path //提交具体文件
git add 文件 文件 文件 //同上,是同时提交多个指定的文件
//查看某个人的提交记录
git log --author="他的名字"
//重命名文件的命令
git mv 现在的名字 改为后的名字
//移动文件到其他位置
git mv 现在的名字 目的名字目的目录
//查看文件修改的细节。。。
//注:未提交的时候,现在开发工具都能看到修改地方,,如果已经提交了,,,远程仓库能看到,或者用命令行查看。。。
//第一种方式
git log --pretty=oneline Demo/NetWork/UrlConst.h //使员工文件path
git show 你要查看的commit id
//第二种方式
git log -p Hnxxt/NetWork/UrlConst.h //直接查看该文件修改的内容
//查看提交记录
git log
//简版
git log --oneline
//查看分支合并路线
git log --oneline --graph
4. 客户端工具 、插件
带用户界面的Git管理库工具
- Mac端推荐使用Tower
http://www.zhinin.com/tower-mac.html
-
github desktop
-
谷歌插件Octotree
谷歌上查看仓库的文件很方便
- 谷歌插件enhanced github
显示单个文件的大小,以及下载
- 谷歌插件gitzip for github
仓库内下载某个文件夹,在文件夹右边空白区域双击即可
网友评论