@andy2015
2020-07-28T03:07:47.000000Z
字数 2434
阅读 131
repository(仓库)
: 仓库可以分为远程仓库
和本地仓库
。 远程仓库
: 可以认为一个团队共享的一个仓库,该仓库本质上和本地仓库
没有区别,只是承担的角色不同,我们也可以把我们自己的本地仓库当作远程仓库
使用,让别人可以推送代码。本地仓库
: 我们通过git clone
命令创建出来的,就是我们的本地仓库
,我们可以在上面提交
、切换分支
等等操作。不过这些操作都仅仅影响本地仓库
,想要使远程仓库
生效,需要将改动推送
到远程仓库,这样别的小伙伴下次拉代码是就能够获取到新的改动。staged changes(待提交空间)
: 所有需要提交
的文件改动都需要被加入到该空间,通过命令git add
添加,只有被添加到该空间的文件改动才会被提交
。stashed changed(暂存空间)
: 可以将当前的文件改动(不管有没有被添加到待提交空间
)临时存放到该空间,通过git stash
命令暂存,后续可以通过git stash apply
、git stash pop
命令取出。commit(提交)
: 一次提交就是一些文件改动的集合,每个提交都有一个唯一的ID,通常叫做commitId
,比如新建哪些文件、删除了哪些文件、文件中的哪些内容被更改了等等。注意提交
只是提交到了本地仓库
的分支,远程仓库
的分支还未生效。clone一个远程仓库
git clone {仓库地址}
查看当前工作空间状态
git status
查看分支提交历史记录
// 查看当前分支提交历史记录
git log
// 查看指定分支提交历史记录
git log {分支名}
查看文件改动详细信息
// 查看所有文件的改动详细信息
git diff
// 查看某个文件的改动详细信息
git diff {文件路径}
将文件改动添加到待提交空间,或者移除
// 将某个文件改动添加到待提交空间
git add {文件路径}
// 将当前所有文件改动添加到待提交空间
git add .
git add -A
// 将某个文件改动从待提交空间移除
git reset HEAD {文件路径}
// 将所有文件改动从待提交空间移除
git reset HEAD .
切换/创建本地分支
// 切换分支,如果本地仓库没有该分支,则会在远程仓库找是否有该分支,如果远程仓库有,则会在本地仓库创建一个本地仓库分支,该分支名以及内容都与远程分支相同
git checkout {分支名}
// 基于当前分支创建一个分支
git checkout -b {分支名}
提交文件改动
// 将当前改动提交到当前分支,并且添加描述信息
git commit -m "修复了xxxbug"
// 将当前改动追加到上一个提交记录中,也可以单纯的用来修改上一个提交记录的描述信息
git commit --amend
撤销一个提交
// 撤销最近一个提交
git reset HEAD~
// 撤销从某一个提交以后的所有提交,不包含指定的提交,如需指定需要加个~
git reset {commitId}
推送本地分支到远程分支
// 将当前分支推送到远程仓库的同名分支
git push
// 将指定分支推送到远程仓库的指定分支
git push origin {本地分支名}:{远程分支名}
拉取远程仓库最新改动
// 当本地没有新的提交时,可以使用以下命令拉取最新改动,并且同步到本地仓库,该命令会拉取远程仓库最新改动,并且把远程仓库同名分支的改动同步到本地仓库中。如果本地有新的提交时,执行该命令,git会尝试进行提交的合并,一般不推荐这样做。
git pull
// 当本地有新的提交时,可以使用以下命令,该命令会把远程仓库的同名分支的改动插入到我们新的提交之前,相当于我们在拉取了最新改动后再提交
git pull --rebase
将当前文件改动移动到暂存空间,或者取出
// 暂存
git stash
git stash -u
// 取出,取出最近一次暂存的改动
git stash apply
将一个已经提交的文件改动应用到当前分支
git cherry-pick {commitId}
修改远程分支名称
// 重命名远程分支对应的本地分支
git branch -m oldName newName
// 删除远程旧分支
git push --delete origin oldName
// 上传新命名的本地分支
git push origin newName
// 将修改后的本地分支与远程分支关联
git branch --set-upstream-to origin/newName
待提交空间
,添加进去的是待会要提交的内容。拉取最新代码,我们要保证我们的提交是在别人提交之后,属于追加上去的,操作方式有很多,
* 可以直接使用以下命令,可能会有冲突,解决就好。
git pull --rebase
* 可以基于当前分支创建一个分支备用,然后在拉取一个全新的远程分支,使用cherry-pick
将要提交的代码pick过来,同样可能会有冲突。
这时候推送至远程仓库基本不会有冲突了,因为冲突都在本地已经解决了,除非有人在这么短的时间内又提交了代码,直接推送就好。
可以通过git log
查看历史记录,如下图:
执行git rebase --i {最早的commitId}~
,然后将后面几个的pick
改为s
,然后保存退出,注意这个是vim
编辑器,需要使用正确的编辑和保存方式:
上一步完成后,会出现提交信息的编辑,可以将内容全部删除,更改为自己想要的描述信息,更改完成后同样保存退出即可:
未分类
在此输入正文