常用命令

初初始化仓库

1
git init

添加文件,把文件添加到缓冲区

1
git add .

提交

1
git commit -m '提交日志说明'

查看当前仓库状态

1
git status

查看修改了什么内容,就是文件对比

1
git diff

版本回退

查看最近提交的版本。版本号是用SHA1计算出的十六进制数字。

1
git log --pretty=oneline

执行回滚

1
git reset --hard 版本号

查看记录你的操作命令

1
git reflog	

工作区和暂存区

工作区(Working Directory)

EhtJQFWSmDcewVA

版本库(Repository)

工作区中的隐藏目录 .git 就是 git 的版本库
Git的版本库里存了很多东西,其中最重要的就是称为 stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支 master,以及指向 master的一个指针叫 HEAD。

vy4m62bT1sBpkFI

给版本库添加文件分两步执行 git add 和 git commit

  • git add 就是把修改文件添加到版本库缓存区;
  • git commit 实际上就是把暂存区的所有内容提交到当前分支。

管理修改

每次修改,如果不用git add到暂存区,那就不会加入到commit中。
就是说 git commit 不提交暂存区以外的修改。

撤销修改

  1. 直接丢弃工作区的修改时,用命令git checkout – file(这种情况是还没提交到暂存的情况)
  2. 添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。
  3. 已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

删除文件

如果直接在资源管理器删除了文件,或者用rm命令(rm file)删除了文件分两种情况:
先用 git stauts 命令查看下当前版本库状态

  1. 一种情况是你确实想删除文件,那么你可以执行以下操作:
    git rm file
    git commit -m ‘删除xxx文件’
    那么文件就从版本库中被删除

  2. 第二种情况是你误删了文件,不必担心你可以使用 git checkout – file 恢复文件到工作区。
    git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。


远程仓库

一、添加远程仓库

  1. 生成一个公钥

  2. 生成的公钥复制粘贴到 github。setting –> SSH and GPG keys

  3. 关联本地仓库和Github上的仓库
    git remote add origin git@github.com:webw3c/learngit.git 注意要是自己的github账户
    如果此步出现 fatal: remote origin already exists. 提示,则先执行一次 $ git remote rm origin 命令

  4. git push -u origin master
    如果此步出现
    ! [rejected] master -> master (non-fast-forward)
    error: failed to push some refs to ‘git@github.com:blueWeekend/blue.git’
    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Merge the remote changes (e.g. ‘git pull’)
    hint: before pushing again.
    hint: See the ‘Note about fast-forwards’ in ‘git push –help’ for details.
    则需要先把远程仓库 pull 下来,然后强制push
    git push -u origin master -f

vculNj46LTCDf2m


二、从远程仓库克隆

实际项目更多的应该是先创建远程库,然后,从远程库克隆。
git clone git@github.com:你的用户名/learngit.git


# 分支管理 ## 一、创建与合并分支 master 是主分支,HEAD是指向当前分支的 ![d3PCZogSAHu97ai](https://i.loli.net/2020/09/25/d3PCZogSAHu97ai.png)

示例:
创建dev分支,然后切换到dev分支:
git checkout -b dev
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令
git branch dev // 创建
git checkout dev // 切换。git checkout 是切换命令,可以切换到任意 分支,如:git checkout master

git branch 命令可以查看当前分支。些命令会列出所有分支,并在当前分支前标一 * 号

PS:有时在子分支修改内容后切换回master分支会发现新修改的内容不见了,是因式修改的内容并不是在master分支上修改提交的,而是在子分支上。所以只要合并到master分支即可。

git merge命令用于合并指定分支到当前分支。

git branch -d dev // 删除指定分支

git push origin 分支名称 // 提交一个新的分支到远程仓库

分支命令小结:
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d


二、解决冲突

一般手动解决后再提交即可
git status 也可以查看冲突情况
git log 命令可以查看分支的合并情况
git log –graph –pretty=oneline –abbrev-commit


三、分支管理策略

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
干活都在dev分支上,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:

PN9fsLRmrd1S2TU


四、BUG分支

当你工作到一半而无法先提交当前分支时,可以使用 git stash 先把未完成未提交的分支工作状态保存起来,以便后面恢复继续工作。
当你要恢复之前未完成的状态时,使用 git stash list 查看未保存状态的列表(可能有多个),恢复:
git stash apply 恢复但不删除stash内容,你需要使用 git stash drop 来删除;
git stash pop 恢复的同时把 stash 内容也删了
git stash apply stash@{0} 恢复指定的 stash


五、feature分支

和BUG分支类似。
强制删除一个未合并的分支可以使用大写D执行:
git branch -D feature-one


六、多人协作

  1. 查看远程库信息,使用 git remote -v
  2. 本地新建的分支如果不推送到远程,对其他人就是不可见的;
  3. 从本地推送分支,使用 git push origin branch-name,如果推送失败,先用 git pull 抓取远程的新提交;
  4. 在本地创建和远程分支对应的分支,使用 git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
  5. 建立本地分支和远程分支的关联,使用 git branch --set-upstream branch-name origin/branch-name
  6. 从远程抓取分支,使用 git pull,如果有冲突,要先处理冲突。

评论