git命令一般使用

作者: DaZenD | 来源:发表于2021-04-28 00:17 被阅读0次

    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

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

    相关文章

      网友评论

        本文标题:git命令一般使用

        本文链接:https://www.haomeiwen.com/subject/aoemrltx.html