Git

作者: captainluck | 来源:发表于2020-03-12 11:31 被阅读0次

git

git基本操作

获取与创建项目命令

  1. git init : 初始化一个Git仓库,执行完后会生成一个.git

    创建一个项目(空文件夹或者已有的项目),在终端中打开这个项目,执行仓库初始化。

    $mkdir runoob
    $cd runoob/
    $git init
    Intialized empty Git repository in /user/tuanqixin/www/.git/
    # 在/www/runoob/.git/目录初始化空 Git仓库完毕
    
  2. git clone : 拷贝一个Git仓库到本地,可以查看并修改。或者复制一个项目,查看代码

    $git clone [url(远程仓库)]
    

基本快照

  1. git add : 可将创建的文件从工作区添加到暂存区,如果添加后的文件有所改动,会自动回到工作区,需要再次添加到暂存区,然后再提交。

    • git add . 命令来添加当前项目的所有文件(新项目中添加所有文件很普遍)
  2. git status 命令用于查看项目的当前状态(如果没有需要添加或者提交的文件,或者没有改动的文件则会显示nothing to commit, working tree clean。)

  3. git diff 来查看执行git status 的结果的详细信息

  4. git commit :将想要快照的内容写入缓存区,而执行命令(add)后将缓存区内容添加到仓库中。Git为你的每一个提交都记录你的名字与电子邮箱地址,第一步要配置用户名和邮箱地址

    git config --global uesr.name "your name"
    git config --global user.email "your email"
    git conmmit -m
    # -m选项在命令行中提交注释
    git commit -am
    # 添加和提交文件合并成一步
    
  5. git reset HEAD : 用于取消已缓存的文件,文件回到工作区

  6. git rm : 从Git中移除某个文件,将该文件提交以后执行此项命令即可删除。

    • git rm <file>
      
    • 如果提交文件以后,对文件进行修改,文件自动回到工作区,在add到暂存区,如果此时想要删除文件用强制删除选项 -f

     git rm -f <file>
    
    • 如果把文件从暂存区域移除,但仍希望保留在当前工作目录中,即:仅从跟踪清单中删除,使用--cached选项即可。

      git rm --cached <file>
      
  7. git mv : 用于移动或重命名一个文件、目录、软连接。

    git mv
    

Git分支管理

1. 创建分支命令

  • git branch (branchname)
    

2.切换分支命令

  • git checkout (branchname)
    git checkout -b (branchname)
    # 创建并切换到分支branchname
    

3.合并分支:

  • 一旦某分支有了独立的内容,希望将它合并回到主分支,可以使用该命令。

  • 可以多次合并到统一分支,也可以选择在合并之后直接删除被并入的分支。

  • git merge
    

4.列出分支

  • git branch
    * master
    # 没有参数时,git branch会列出你在本地的分支
    # *号显示当前所在的分支
    # 当执行git init的时候,默认情况下Git就会创建master分支
    

4.删除分支命令:

  • git branch -d (branchname)
    

合并冲突:

  • 合并并不仅仅是简单的文件添加、移除的操作,Git也会合并修改。

  • $ git branch
    * master
    $ cat hello.py
    $ git branch yyp
    $ vim hello.py
       hello yyp!
    $ git commit -am 'change the hello.py'
    $ git checkout master
    Switched to branch 'master'
    $ cat hello.py
    $ vim hello.py
    $ cat hello.py
      hello python!
    $ git commit -am "修改代码"
    $ git merge yyp
    $ cat hello.py
     hello python!
     ============
     hello yyp!
    $ vim hello.py
    $ cat hello.py
     hello yyp!
    $ git status -s
    D hello.php
    AA hello.py
    $ git commit
    [master 7732186] Merge branch 'yyp'
     
    

Git查看提交历史

  • git log:在使用Git提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,使用git log 命令查看。

  • git log --oneline:查看历史记录的简洁的版本。(项目的开发历史)

  • git reflog :简洁显示所有的提交记录

  • git log --graph :查看历史中什么时候出现了分支、合并。开启了拓扑图选项。(何时工作分叉、又何时归并)

  • git log --reverse 参数来逆向显示所有日志。

  • git log --author :查找指定用户的提交日志

  • git log --since和--before

  • git reset --hard 版本号(42cb617)(HEAD{0})

    git log --onelinr --before={3.weeks.ago} --after={2010-04-18} -- no merges
    # 查看Git项目中三周前在四月十八日之后的所有提交,——no merges 选项以隐藏并提交
    

Git标签

  • git tag -a : 创建一个带注解的标签,指定标签信息
  • git lag --decorate:查看标签
  • git show v1.0:查看v1.0标签的注释
  • git tag -a v0.9 85fc7e7: 给85fc7e7追加标签v 0.9
  • git tag :查看所有标签
  • git tag -s <tagname> -m ’runoob.com标签‘:PGP签名标签

Github

  • git remote add [shorttime] [url]:添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用

  • ssh-keygen -t rsa -C 'yourmain@example.com'(Github注册的邮箱)

  • cat ~/.ssh/id_rsa.pub : 查看ssh

  • ssh -T git@github.com : 验证是否成功连接Github

  • 本地的内容推送到GitHub仓库

    $ mkdir yyp-git-test      #创建测试目录
    $ cd yyp-git-test/        #进入测试目录
    $ echo '#yyp' >>README.md  #创建README.md文件,并写入内容
    $ ls                       #查看目录下的文件
    README.md
    $ git init                #初始化
    $ git add README.md       #添加文件
    $ git commit -m "添加README.md文件" #提交并备注信息
    #提交到Github
    $ git remote add origin git@github.com.yyp-223/yyp.git
    $ git push -u origin master
    
    • # 远程命令  添加  远程仓库的别名 远程仓库的地址
      git remote add origin 远程仓库地址
      
    • 推送master分支到远程仓库

       向origin 仓库上推送 master分支
      git push -u origin master 
      #-u指定默认,以后git push 默认推送mast分支(不建议使用-u)
      
  • 拉取远程仓库

    git clone 远程地址
    git branch
    # 此时本地只显示master地址,但所有的分支都已经拉取下来了
    git pull origin dev 
    # 只拉取dev分支
    
  • 拉取最新的仓库代码时如果与本地冲突

    • 先将发生冲突的本地代码提交后再拉取,手动处理冲突。

    • git pull origin dev 
      #等同于
      git fetch origin dev(避免产生分叉)
      git merge origin/dev
      

变基

  • 场景一:多个记录整合成一个记录

    git rebase -i #某一次的提交记录信息,合并到当期那提交记录
    git rebase -i HEAD~3 #最近的三次提交记录合并
    #出现 Vi 编辑区域
    根据下面提示选择
    一般我们会将 pick 修改为 s
    # 保存退出 再次出现 vi 的编辑区
    列出要合并的提交记录
    例如修改为 v1 & v2 & v3
    # 保存
    git log #查看提交记录
    注意:尽量不要合并已经提交到远程仓库的(提交记录)
    
  • 场景二:

master c1 - c2 -c4 -c5

dev c3

Mater c1 -c2 -c3 -c4-c5

将c3在其他分支上的提交记录 合并到master分支上

git checkout dev
git rebase master # 变更当前dev分支的基
git checkout master
git merge dev
  • 场景三:远程拉取代码,会有合并冲突,产生分叉

     git pull origin dev
    #可能产生记录分叉
    git fetch origin dev
    git rebase origin/dev
    #不产生记录分叉
    
  • 注意事项

    • git rebase 产生冲突怎么办?
    • 会提示
      • 1、解决冲突
      • 2、git add
      • 3、Git rebase --contine

相关文章

网友评论

      本文标题:Git

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