Git日常用例

0 - 前置条件

  · 远程代码仓库已完成配置

  · 本地已安装 Git

  · Git 账号具备访问远程仓库的权限

1 - 在本地拉取远程分支仓库

  1-1 在想要放置这些代码的地方,右键 Git Bash

  1-2 在 Git Bash 命令行中输入 git clone -b <branchname> <url> (不要输入尖括号<>)

  1-3 拉取完成后,即可获得一个链接到远程分支 <branchname> 的本地分支,无需手动建立链接关系

  1-4 在命令行中,使用 cd <文件目录名> 进入到真正的本地代码仓库中,你可以使用 git rev-parse HEAD 或 git rev-parse --short HEAD 来检查刚刚 clone 下来的代码 commit id

    当然,你亦可使用 git log,获取历史 commit 记录,其中不仅包含 commit id,还有具体 commit 的时间和执行人的信息

  1-5 如果远程分支有更新,你可以使用 git pull(保留本地更改)或 git fetch(不保留本地更改)来获取远程仓库上最新的代码

2 - 由本地仓库向远程仓库提交代码

  2-1 在本地仓库中,右键 Git Bash

  2-2 在命令行中输入 git add

  2-3 输入 git status 检查文件添加情况,若有文件未添加,可按命令行中的提示手动添加

  2-4 输入 git commit -m "简要说明",若提交未成功,检查是否具备权限 或 未与远程仓库最新版本进行 merge

  2-5 输入 git push

3 - 将本地仓库回滚到远程仓库某一版本

  3-1 在本地仓库中,右键 Git Bash

  3-2 命令行中输入 git log,查看本地仓库当前关联远程仓库哪一 commit id,以及远程仓库其他 commit 的 info,获取你想要回滚的版本 commit id

  3-2 输入 git checkout <commit_id>(不要输入尖括号<>),再次输入 git log,查看回滚是否成功

4 - 在不 commit 本地仓库代码的情况下,拉取远程仓库的代码至本地

  4-0 我们假设这样的一个使用场景,你在本地仓库中的代码做了改动,同时本地仓库指向的远程分支也有更新,你的改动操作需要依赖远程仓库的更新。你想将远程代码 pull 到本地,这时 Git Bash 会提示,你需要将本地代码先 commit,但本地的改动还未完成,也未进行验证,若是直接 push 到远程仓库,可能会导致一些问题 或 违反组织的分支管理条例。在此种情况下,你可以使用 git stash (即“暂存”)这一操作

  4-1 在本地仓库中,右键 Git Bash,使用 git stash 将你的代码保存至暂存区。可以使用 git stash list 查看既往暂存。(注意,暂存区既不是本地仓库,也不是远程仓库。为了解释暂存区,我们可以回顾一下代码提交的过程,在你使用 commit 命令后,在还未 push 之前,这时代码还未上传到远程仓库,但已对本地仓库做了拷贝,这份拷贝就被存储在暂存区,待你 push 之后就会被上传至远程仓库)

  4-2 这时,你的本地代码已被妥善的保存起来,你可以使用 git pull 拉取远程分支的最新代码,然后输入 git stash apply ,将暂存区的代码与本地最新代码合并。在代码中有冲突的部分,git 会同时保存本地 和 远程分支的改动,并进行标记,你可以使用 git diff 来查看不同,并在后续 coding 中自行处理这些冲突

 5 - 远程仓库新建了 branch,但本地仓库无法与其建立连接

  5-0 有人在远程仓库新建了 branch,你想将本地仓库的代码提交到这个分支,于是你尝试使用 git checkout 切换分支,但是列出的分支中并没有刚刚建立的这个。这时因为本地仓库还未更新远程分支所致

  5-1 在本地仓库中,右键 Git Bash。输入 git remote update,更新远程分支,然后再使用 git checkout <branchname> 即可完成切换

 6 - 将远程分支(非本地仓库所指向的分支) merge 到本地仓库

  6-1 在本地仓库中 git merge <remote_branch>,提示 "git merge Already up-to-date" ,未能 merge 成功,这是由于本地仓库对远程仓库的链接没有更新,所以认为没有更新可以 merge

  6-2 git checkout <remote_branch> ,切换到远程分支,git pull,拉取最新代码。git checkout <原分支>,再切换到原来的分支。此时 git merge <remote_branch>,如果因冲突未能成功,尝试使用 Git GUI 解决冲突部分

  6-3 merge 成功后,及时检验可否编译成功,并及时 push

 7 - 在本地初始化一个仓库,并连接到远程仓库(空)

  7-1 在本地文件夹中,git init,初始化本地仓库

  7-2 git remote add origin https://github.com/<Username>/<Repository>.git,添加远程仓库的链接,该 HTTP 地址可在远程仓库的网页端 "clone" 按钮处获取。至此,你的本地仓库已与远程仓库建立了连接

  7-3 如果远程仓库在初始化时建立了 README.md 文件,则需要先 git pull 之后才能 commit,若非,则可以直接 commit

8 - push了错误内容,将库上内容强制回退

  8-1 由本地向远程分支 push 了错误内容,想要撤回提交

  8-2 将本地仓库当前版本的 modify 做备份,然后回退至 <commit_id> 版本 get reset --hard <commit_id>,这时本地仓库回退成功

  8-3 将本地仓库强制推送到远端,使用 git push -f,这时远端仓库回退成功

  8-4 根据需要将备份下来的 modify 修改或删除

9 - 本地进行了 commit 操作,想要撤回

  9-1 本地进行了 commit 操作,还未 push 到远端,想要放弃 commit

  9-2 使用 git commit --abort 放弃这次 commit

10 - 对比同一分支下两个版本之间有哪些文件产生改动,以及具体的改动

  10-1 对比同一分支两个版本间有哪些改动,git diff <commit_id1> <commit_id2>,可查看具体改动的位置和内容

  10-2 如果改动内容较多,且不需要了解具体改动的内容,只需要知道有哪些文件发生了改动,使用 git diff <commit_id1> <commit_id2> --stat

11 - 根据某个 commit id 新建分支,并推送到远端

  11-0 首先确保本地分支有效,且版本晚于此 commit id

  11-1 根据 commit id 在本地建立新分支 git checkout -b <branch_name> <commit_id>

  11-2 将新分支推送到远端 git push -u origin <branch_name>

12 - 本地做了修改或进行了合并,想要放弃

  12-1 使用 git reset --hard HEAD^ 回滚到上一版本

13 - 删除分支

  13-1 本地文件目录下的分支数量太多了,用不到且影响查阅,想要删除某个分支,使用 git branch -d <branch_name>,即可删除本地的分支,不会影响远程分支。如果需要同步删除远程分支,使用 git branch -d -r origin/<branch_name>

14 - cherry pick 的使用

  14-0 如果在分支A上开发了一个新功能,并且希望应用到分支B上,或在对多个项目分支 push 同一套代码时,使用以往常规的代码对比、复制操作比较繁琐,git cherry pick 操作可以直接复制某个 commit 至目标分支

  14-1 切换到目标分支下,使用 git cherry-pick <commit_id>,即可将目标 commit_id 的修改合入到当前分支。

 

posted @ 2022-03-08 15:06  大咖喝咖  阅读(133)  评论(3)    收藏  举报