• 小白笔记:Git入门之常见命令


    安装

    这里就不介绍安装了,度娘一大堆,找不到可以去找谷爹(前提是你能找到)。安装好就跟着笔记进行下一步

    准备工作

    首先我们需要一个可以 git 的东西,所以我们需要一个文件夹和一个文件

    创建文件夹 test:mkdir test

    切换到 test 目录:cd test

    新建 a.md 文件:touch a.md


    git命令

    有了可以操作的东西,我们就开始使用 git 命令了,首先让我们看看文件夹当前的状态

    查看状态:git status

     git status 
    位于分支 master
    未跟踪的文件:
      (使用 "git add <文件>..." 以包含要提交的内容)
    
        ./
    
    提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)

    初始化git库:git init

     git init
    已初始化空的 Git 仓库于 /home/bubao/test/git/test/.git/

    提交到git「暂存区」:git add

    刚刚我们执行 git status 时有个 git add ,我们试试这个命令

     git add      
    没有指定文件,也没有文件被添加。
    也许您想要执行 'git add .' 
     git add a.md

    可以看到,直接用git add 命令,后面还需加文件名,但是第二次加了文件名后面啥都不出现呢?啥都不出现就说明正确了,和Linux一个德性。

    提交到git 仓库:git commit -m "first"

    刚刚的git add a.md 是把文件放到暂存区,这次才是提交到仓库,commit 是提交的意思,-m 代表是提交信息,后面的 "first" 是提交描述,不填写会报错的。

     git commit
    error: cannot run vi: 没有那个文件或目录
    error: unable to start editor 'vi'
    请使用 -m  -F 选项提供提交说明。
    
     git commit -m "first"
    [master(根提交) ef2edb7] first
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 a.md

    git status查看状态

     git status           
    位于分支 master
    无文件要提交,干净的工作区

    日志:git log

    想看我们之前干了什么?我们就需要这个命令了

    commit ef2edb769366c1dfef2030293c517b4c27698205
    Author: bubao <这里是邮箱,就不曝了>
    Date:   Sun Mar 12 16:39:51 2017 +0800
    
        first
    (END)

    这个就是日志了,记录着hash值,作者,时间,提交描述。我的git好像是在我玩hexo的时候绑定了我的github,居然显示我的邮箱和用户名,不要在意这些细节了。

    查看、创建分支:git branch

    一般我们默认是一个分支master,用git branch 查看一下分支情况

     git branch
    * master

    前面的*指的是我们在操作哪个分支,当然我们也可以新建一个分支。创建一个分支a,这时候分支 a 跟分支 master 是一模一样的内容。

     git branch a
    
     git branch  
      a
    * master

    切换分支:git checkout

    这个命令用来切换到我们已有的分支

     git checkout a
    切换到分支 'a'

    是不是觉得创建和切换分开很不爽,下面这个命令帮你一步到位

    创建、并切换到a分支:git checkout -b a

     git checkout -b a  
    切换到一个新分支 'a'

    合并分支:git merge

    当我们在a分支上的工作完了,我们需要把a分支合并到主分支(master)上。务必要记得先切换到master 分支,把a分支的代码合并过来

     git checkout master 
    切换到分支 'master'
    
     git merge
    fatal: 当前分支没有对应的远程仓库。
    
     git merge a
    已经是最新的。

    git merge后面要加上要合并的分支名,否则它会提示你合并的是远程仓库哦。

    删除分支:git branch -d a

    既然有创建分支,那么也会有删除没有用的分支了。现在我们有一个a分支和一个主分支,我们合并了分支后a分支就没用了,so 我们要对 a分支下手了,哦对了,删除前要切换到master分支哈

     git checkout master 
    切换到分支 'master'
    
     git branch -d a    
    已删除分支 a(曾为 7367efd)。

    查看远程分支列表:git branch -r

    如果我们有远程分支,那么我们可以用这个命令来查看我远程分支的列表,不过我们还没有远程分支呀,到时候有再用。

    强制删除分支:git branch -D

    有些时候可能会删除失败,比如如果a分支的代码还没有合并到master,你执行 git branch -d a 是删除不了的,它会智能的提示你a分支还有未合并的代码,但是如果你非要删除,那就执行 git branch -D a就可以强制删除a分支。


    创建版本标签tag:git tag v1.0

     git tag v1.0

    查看tag:git tag v1.0

     git tag     
    v1.0

    切换tag:git checkout v1.1

     git tag v1.1     
    
     git checkout v1.1
    HEAD 目前位于 7367efd... first

    Github

    生成SSH

    ssh-keygen -t rsa

    指定 rsa 算法生成密钥,接着连续三个回车键(不需要输入密码),然后就会生成两个文件 id_rsa 和 id_rsa.pub ,而 id_rsa 是密钥,id_rsa.pub 就是公钥。把 id_rsa.pub 的内容添加到 GitHub 上,这样你本地的 id_rsa 密钥跟 GitHub 上的 id_rsa.pub 公钥进行配对,授权成功才可以提交代码。

    查看公钥

    cd ~/.ssh
    cat id_rsa.pub

    添加SSH key

    这里就不演示了,gihub有详细说明(其实是我懒得截图,Linux用户你们懂的)。

    测试SSH key

      ssh -T git@github.com
    Hi bubao! You've successfully authenticated, but GitHub does not provide shell access.

    设置用户名和用户邮箱

    git config global user.name "bubao"
    git config global user.email "asd565586630@gmail.com"

    Push & Pull

    把本地代码推到远程 master 分支:git pull origin master

    把远程最新的代码更新到本地。一般在 push 之前都会先 pull ,这样不容易冲突。

    关联本地已有项目:git remote add 远程仓库名字 github地址

    查看当前项目有哪些远程仓库:git remote -v

    命令别称:alias

    git config --global alias.co checkout  # 别名
    git config --global alias.ci commit
    git config --global alias.st status
    git config --global alias.br branch
    git config --global alias.psm 'push origin master'
    git config --global alias.plm 'pull origin master'
    git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --"

    其他配置

    git config --global core.editor "vim"  # 设置Editor使用vim
    
    git config --global color.ui true #给 Git 着色
    
    git config --global core.quotepath false # 设置显示中文文件名

    默认这些配置都在 ~/.gitconfig 文件下的,你可以找到这个文件查看自己的配置,也可以输入 git config -l 命令查看。

    diff

    git diff #查看修改变动

    直接输入 git diff 只能比较当前文件和暂存区文件差异,什么是暂存区?就是你还没有执行 git add 的文件。

    stash

    把当前分支所有没有 commit 的代码先暂存起来:

    git stash

    暂存区记录:

    git stash list

    暂存区代码还原:

    git stash apply

    清除暂存区记录:

    git stash drop

    暂存区代码还原并清除暂存区记录:

    git stash pop

    清空所有暂存区的记录:

    git stash clear

    drop 是只删除一条,当然后面可以跟 stash_id 参数来删除指定的某条记录,不跟参数就是删除最近的,而 clear 是清空。

    merge & rebase

    rebase 跟 merge 都是合并分支,区别是merge 暴力合并,能知道代码来自哪个分支;rebase 比较合并,按代码的时间来给它重新排序,然后重新放置好,看起来很有逻辑,却不能得知哪个代码来自哪个分支。

  • 相关阅读:
    servlet配置restful
    Servlet异步上传文件
    JQuery全选Prop(“check”,true)和attr("attr",true)区别
    登录FTP,下载并读取文件内容
    Get请求中文乱码的几种解决方式
    系统架构概念及思想2
    系统架构概念及思想1
    Harbor高可用
    Harbor基础
    Docker原理及使用
  • 原文地址:https://www.cnblogs.com/xuzhongtao/p/11127020.html
Copyright © 2020-2023  润新知