Git
基础操作
将工作区文件加入暂存区:git add <filename>
将暂存区提交版本库:git commit “infomation”
查看提交日志:git log
切回某条记录
- 比如main分支保存了10条记录,然后此刻想回到第二条,可以新建并进入一个分支
git checkout -b dev
,然后将分支转往第二条git reset --hard <第二条的hash值>
,你的工作区就会变成第二条的状态。 - 但是此刻你修改提交的并不会与main分支产生交互,因为此刻你处在dev分支中,你可以合并两条分支,使用
git rebase main
,这会将当前的dev分支合并到main分支。 - 如果你的dev中的文件与main中的不一致,他会要求你先进行修改,会给你标记出来
打开冲突的文件,找到有冲突的地方。
Git会在冲突的地方添加一些提示信息,例如<<<<<<<,=======,和>>>>>>>。
在<<<<<<<和=======之间是目标合并分支的内容,=======和>>>>>>>之间的是当前分支的内容。你需要决定保留哪些内容,或者如何修改这些内容以解决冲突。
解决冲突后,删除Git添加的提示信息,然后保存文件。
使用git add <冲突文件>命令标记冲突已经解决。
最后,使用git rebase --continue命令继续进行合并操作。
然后你就完成了记录回溯和合并。
分支
创建:git branch dev
切换分支:git checkout dev
合并分支:处在当前分支上,然后另外一个分支内容合并到当前进度:git merge 目标分支
,此操作得到完整树型项目。
复制合并:直接将当前的操作给复制一份与另外一份进行合并:git rebase xx目标分支 xx合并分支
,此操作将把合并分支转移到目标分支底下。
HEAD:当前的指向,可以直接使用checkout进行切换,让其指向某一个具体的记录
相对引用:~向上移动一个提交记录,<num>
向上移动多个提交记录如:~3
双节点切换:^
必须在双节点的情况下使用,默认是第一节点,后跟数字去往父节点,与~连用,如git checkout main~^2~8 将head更改至main分支的前一个节点的第二父节点的前第8节点
切换分支引用:git branch -f xx分支 xxx记录,将xx分支切换到xx记录
舍弃分支记录更改分支位置:git reset —hard xxx记录
撤销本地历史:git reset xxx目标记录:直接将本地的的分支指向你希望的记录即可
撤销远程历史:git revert xxx撤回记录:参数是你需要撤回的记录
单独提交记录:git cherry-pick:你可以单独提交几段记录到当前的记录下
rebase合并交互式:git rebase -i xxx记录
,将当前分支的操作合并到另外一条分支,以-i模式打开,交互式,直接排序和删除
修改本次提交:git commit –amend
:将会新建一次提交来覆盖当前所在的记录
标签:git tag V1 xxx
记录 ,将会把xxx记录打上标签,如果不指定记录,将会以现在的head
离某个记录最近的标签:git describe xxx
省略代表当前位置:返回:标签名_n(距离几次记录)_当前记录的hash
多人合作
远程仓库:git clone 复制远程地址
远程仓库的分支将以:o/main
形式展示,o为仓库名称,main为分支,
- 不可直接操作远程分支,如果指定,将会被分离出来,会形成haed的形式
获取数据:git fetch 从远程仓库更新本地缺失的提交记录,更新远程分支指针
将远程和本地进行合并:git pull,将会拉取远程的记录,然后与本地记录进行合并
拉取最新远程仓库并且合并:git pull -–rebase
- 对远程仓库进行推送时,需要先拉取远程仓库确保本地分支都基于最新的远程仓库,然后再推送。
推送分支等:git push,只会推送当前处在的分支
本地的main在最初clnoe的时候就被添加了跟踪o/main的命令,可以使用git checkout -b newLine o/main
创建跟踪新分支并且切换过去,也可以使用git branch -u o/main newLine
来跟踪o/main,如果处在newLine分支可以省略
git push的参数:如果不添加,将会默认推送当前分支,如果远端没有此分支,将会自动创建该分支,
git push origin main<记录点>
推送那一条分支 testgit push origin newLine<记录点,支持一切表示记录点的>:main
本地的记录点推送到远程的main分支- 推送空的到远程,将会删除这条分支
git fetch的参数:不添将会默认将远程的与本地进行匹配,不存在就本地自动创建,不会更改本地的分支,而是以记录的形式存在
git fetch origin foo<远程地址记录点>:main
将远程记录点拉取到本地的o/main分支- 拉取空的到本地将会在当前记录创建此条分支
Tips
操作:如果进行第三步,发现第二步有了些许更改
- 可以使用
git rebase
将顺序改变,使用git commit –amend
重新提交该步的数据,这将会修改第二步,然后使用git rebase
重新将其顺序恢复, - 可以使用
git cherry-pick
,先切换到1,然后建立分支,将第二部pick过来,然后amend,然后在pick3
步,然后使用git rebase
重新将其顺序恢复,
- 可以使用
git cherry-pick
,先切换到1,然后建立分支,将第二部pick过来,然后amend,然后在pick3