git命令一般使用

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.jpeg

2.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

仓库内下载某个文件夹,在文件夹右边空白区域双击即可

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容