git使用(上)-----基本的方法

git应该是一项必须要掌握的工具.先简述它和SVN的区别

  • SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了.
  • Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上.既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了.

1. 配置文件

  • 查看配置的方法
    git config --list
  • 用户名和邮箱地址的作用
  • 用户名和邮箱地址是本地Git客户端的一个变量,不随git库而改变。
  • 每次commit都会用用户名和邮箱纪录。
  • github的contributions统计就是按邮箱来统计的。
  • 查看用户名和邮箱地址:
    git config user.name git config user.email
  • 修改用户名和邮箱地址:
    git config --global user.name "username" git config --global user.email "email"

2. 基本使用

  • git中文件的各个状态

    • unstaged - git仓库中没有此文件的相关记录
    • modified - git仓库中有这个文件的记录,并且此文件当前有改动
    • staged - 追加,删除或修改的文件被暂时保存,这些追加,删除和修改并没有提交到git仓库 -------暂存区
    • commited - 追加或修改的文件被提交到本地git仓库(git仓库中大部分都是这种文件,所以git status不显示这些文件)-----仓库
  • 初始化一个仓库
    git init
    在当前文件夹下生成.git目录,完成初始化,此时此文件夹下的所有文件处于unstaged状态

  • 追加文件
    git add <filename>
    文件变为staged状态,其他文件还是unstaged状态

  • 提交到版本库
    git commit -m "your_index"

  • 管理修改
    要随时掌握工作区的状态,使用git status命令。
    如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

  • 撤销修改

    • 放弃工作区的修改------让这个文件回到最近一次git commit或git add时的状态。已经添加到暂存区的执行后恢复到添加到暂存区的状态
      git checkout -- file
    • 将暂存区的修改撤销掉--------执行完后记得工作区的修改并未执行,应该继续按上一条命令修改工作区
      git reset HEAD file
  • 删除文件

    • 误删了工作区的文件
      git status命令会立刻告诉你哪些文件被删除了,接着使用
      git checkout -- filename git checkout
      其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”
    • 确实要删除文件. 版本库中删除该文件,那就用命令删掉,并且git commit:
      git rm <filename> git commit -m "your_index"
  • 版本回退
    - 回退回上一个版本
    git reset --hard HEAD^
    在Git中,用HEAD表示当前版本,也就是最新的提交3,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100.
    - 另一种方法是使用commit id. 使用命令 git log 查看历史记录 , 获取前面的一大串类似3628164...882e1e0的是commit id(版本号)
    使用命令进行任意版本的切换
    git reset --hard commit_id

    • 注对于查询版本号:
      穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
      要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本

3. 远程仓库

  • 测试环境ubuntu
    由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要进行设置
  • 创建SSHkey
    - 第1步
    ssh-keygen -t rsa -C "youremail@example.com"
    此过程中一路回车,使用默认值可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
    - 第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
  • 关联远程仓库
    git remote add origin git@server-name:path/repo-name.git
  • 推送至远程库
    由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来
    git push -u origin master
    从现在起,只要本地作了提交,就可以通过命令:
    git push origin master
  • 从远程库克隆
    git clone git@server-name:path/repo-name.git
  1. 分支管理
  • 查看和切换分支
    git branch (查看所有的分支及当前处于哪个分支) git branch (查看所有的分支及当前处于哪个分支) git branch -v (查看所有的分支的详细信息) git branch --merged (查看已经合并的分支) git branch --no-merged (查看还没合并的分支) git checkout [branch-name] (切换到某个分支)
  • 新建分支
    git branch [branch-name] (新建一个分支) git checkout -b [branch-name] (创建+切换分支)
  • 删除分支
    git branch -d [branch-name] 或者 git branch -D [branch-name] (强制删除某个还未合并的分支)
  • 远程分支管理
    查看远程仓库:git remote -v //查看你当前项目远程连接的是哪个仓库地址。
    添加远程仓库:git remote add [name] [url]
    删除远程仓库:git remote rm [name]
    修改远程仓库:git remote set-url --push [name] [newUrl]
    拉取远程仓库分支:git pull [remoteName] [localBranchName]
    推送分支到远程仓库:git push [remoteName] [localBranchName]
    git push origin newline (origin是我本地的远程仓库的名字,对远程仓库的称呼, newline是本地将提交到远程的分支的名字)
    查看远程分支: git branch -r
  • 删除远程分支命令
    git push origin :remote_branch 或者 git push origin --delete remote_branch
  • 合并分支
    git merge [branch-name] git merge [branch-name]
    ex. 将分支btest合并到主分支master
    git checkout master git merge btest
欢迎关注我的专属博客http://dyleaf.cn/
原文地址:https://www.cnblogs.com/Dyleaf/p/7191332.html