Git

203 阅读4分钟

Git

  1. git init : 初始化仓库,把这个目录变成 Git 可以管理的仓库。创建完成之后,目录下多出来一个 「.git」目录

  2. git add 「文件名」或 「.」: 把文件名添加到暂存区,或把当前目录下的所有文件添加到暂存区。

  3. git commit -m 「日志信息」: 把文件添加到本地仓库。

  4. git status : 查看当前仓库的状态。

  5. git diff : 修改的内容是什么。diff : 即是 difference

  6. git log : 查看历史记录,倒序排列,最近一次在最上边。第一次提交在最下边。

  7. git commit -a : 添加暂存区并提交,然后在跳出的 vim 编辑器中切换到编辑模式「i」,写入日志信息。切换到普通模式「esc」。然后「:wq」保存并退出。

  8. git log --pretty=oneline : 可以只查看提交的 commit id (版本号)和提交的日志信息。倒序排列。

  9. git reset --hard HEAD^ : 回退到上一个版本。「HEAD」代表当前版本,「^」代表上一个版本。上上个版本「^^」两个。commit_id 可以只写前面几位。 HEAD 指向的版本就是当前版本,因此,Git 允许我们在版本的历史之间穿梭,使用命令 git reset --hard commit_id。 穿梭前,用 git log 可以查看提交历史,以便确定要回退到哪个版本。 要重返未来,用 git reflog 查看命令历史,以便确定要回到未来的哪个版本

  10. 撤销修改

    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考10,不过前提是没有推送到远程库。

  11. 关联远程仓库 : git remote add origin git@github.com:sixkery/repo-name.git 。 关联后使用命令 git push -u origin master 第一次推送 master 分支到远程仓库。 以后的提交使用 git push origin mastergit push

  12. 从远程仓库克隆一个仓库: git clone 仓库地址

分支管理

  1. 创建分支并切换到新创建的分支 : git checkout -b dev

  2. git branch dev : 创建分支

  3. git checkout dev : 切换分支 或 命名 git switch

  4. git branch : 查看当前分支。当前分支会有一个「*」号

  5. git merge : 合并指定分支到当前分支。注:这是要在指定分支上完成操作。例:在 master 分支上创建分支 dev 。切换到 dev 分支。完成几个功能,然后准备合并分支。这时需要切换到 master 分支。执行命令 git mege 命令。这时 master 分支就和 dev 分支合并。当前 HEAD 指向 master 分支。就可以删除 dev 分支。

  6. git branch -d <分支名字> : 删除分支

  7. git log --graph : 查看分支合并图

  8. git merge --no-ff -m "merge with no-ff" dev : 合并 dev 分支,可以看到曾经做过的合并。开发中尽量使用这个。

  9. 假设现在在 dev 分支上开发某个功能。这时需要你去修复一个 bug ,正常情况下,你会切换到 master 分支上「git checkout master」创建一个新的分支 issue-01「git checkout -b issue-01」 来修复这个 bug 。但是,你现在的 dev 分支上还有任务没有完成。这时候怎么办?

    这是可以使用 git stash 命令,把当前 dev 分支上的工作现场存储起来。切换到 master 分支,创建 issue-01 分支修改 bug 。修改完了 bug 提交这次修改。切换到 master 分支。合并 issue-01 分支。之后就可以回到 dev 分支。使用命令git stash list 查看暂存的工作现场。需要恢复一下工作现场,使用命令 git stash pop 。这个命令可以把暂存的工作现场删除。这时就可以接着在 dev 分支上完成功能。当时请想一想。master 分支上的 bug 。在 dev 上是不是也存在呢。这时就需要把提交 bug 的修改复制到当前分支。使用命令 git cherry-pick <commit_id> 这里的 commit_id 是修改 bug 的提交 commit_id。

  10. 开发一个新的功能,最好新建一个分支:git checkout -b feature-login 然后提交新的功能。开发完成之后在 dev 分支上合并新的功能。如果没有合并,不想要这个功能可以使用命令 git branch -D <分支名称> 删除这个分支。(这里是强制删除分支上的内容,不过一般不建议这么干,万一那天产品经理抽风了呢)

多人协助

从远程仓库中克隆到本地 「git clone 远程仓库地址」,远程仓库就和本地仓库对应起来。 git remote : 查看远程仓库的信息。 git remote -v : 显示详细信息,可以查看抓取和推送的地址。如果没有推送权限,看不到推送地址。 推送分支,把本地的分支推送到远程仓库中:git push origin master 。如果推送其他分支比如 dev 使用命令 : git push origin dev