git基本使用

作为程序员的宝库,GitHub的认识和使用毋庸置疑。

而作为一个强大,出色的版本管理工具,git可以使我们更好的使用GitHub。

基本概念

1571217540880.png

1
2
3
4
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
创建仓库
  • git init, 建立一个空的本地仓库
  • git clone,可以克隆别人的项目到本地

    git init 和 git clone都会在文件夹下创建一个.git文件,该文件用来储存历史信息和配置信息

查看Repo状态
  • git status,每次修改完东西后,可以查看一下状态,看看改了哪些东西
  • git pull,根据status显示,如果项目更新,可重新拉取代码;(建议每次修改代码前直接pull一次)
操作Statge状态
  • git add,添加需要的改变(加路径),提交到缓存区
    • git reset path, 可以取消已经add过的操作
操作commit状态
  • git commit,提交代码到本地库
    • git reset HEAD^ –soft
      可以用于取消刚刚的commit,但保留修改过的文件或项目
    • git reset HEAD^ –hard
      回到上一次commit时的状态(即从上次commit到这次所有的修改都不保存)
上传到服务器
  • git push,将本地仓库修改推送到服务器上的仓库中
版本回退
  • git log ,输出提交日志,查看历史commit,进而选择回退到哪一个
  • git reset (commit,log打印出的commit项) –hard,回退,且不保存这段时间内的代码修改
筛选协作者的 commit
  • git log
    输出所有的commit
  • git shortlog
    按提交者字母排序,列出所有commit的简述
  • git shortlog -s -n
    按commit多少排序,只列出姓名
    -s 仅显示 commit 的数量;以及用 -n 来按数量排序
  • git log --author=xxx
    仅显示xxx所做出的commit
分支管理
  • 建立分支

    1
    git checkout -b firstBranch
  • 查看分支

    1
    git branch

(此时已在新建分支下,有标记)

  • 切换分支

    1
    git checkout master
  • 分支合并

    1
    git merge firstBranch
  • 删除某个分支

    1
    git branch -d firstBranch
分支合并过程中的冲突

当两个分支都对一个文档进行了修改,并产生冲突时,不能进行快速合并

解决方法:

1.打开冲突文件,文件内会有类似内容

1
create new branch feature1..

2.’=====’ 上下分别表示不同的分支内容,这时需要我们手动修改,保留我们想要的部分。
3.修改完成后,保存退出。
4.查看状态,会提示这个文件被修改,之后执行下面代码提交即可

1
2
3
git add .
git commit -m 'a'
git push
添加另一个远程仓库
  • 添加

    1
    git remote add myrepo 自己的GitHub仓库地址

    这里myrepo是新建远程仓库的名字,可任起

  • 验证是否成功

    1
    git remote -v

    成功时会输出:

    图片加载错误

  • 使用

    • 1

      1
      2
      # 提交代码时,指定要提交的远程仓库名字即可
      * git push myrepo
    • 当发现上游仓库由更新时,可以进行拉取

      1
      git pull origin
    • 当然,再写的过程中有了好的idea,可以直接向上游仓库提交

      1
      2
      3
      git add README.md
      git commit -m 'xxx'
      git push origin

    我们之前经常用git add .表示添加所有更改,不用点,而用文件路径,表示只添加某个文件的更改

git rebase
  • 应用场景一: 合并多次提交记录(commit)

    有时候,我们可能会产生了多次commit,且可能多数无用,这样会为以后回滚代码带来不便

  1. 我们来合并最近2次的提交记录
    1
    git rebase -i HEAD~2