搜索
您的当前位置:首页正文

(贝格乐学习总结向)Git Bash基本操作总结 (Summary)Foundation of Git Bash

来源:好走旅游网

建立目录下的数据库

操作分支

创建名为issue1的分支:git branch issue1
可通过 git branch 命令显示分支列表
通过 git checkout 命令切换分支
切换至 issue1 分支 git checkout issue1
此时HEAD处于issue1处
也可以通过 git checkout -b issue1 命令直接创建并切换至issue1分支

往tutorial文件夹内myfile.txt中添加 “连猴子都懂的Git命令 add 把变更录入到索引中” 文字后保存。
切回Git Bash界面,
输入 git add myfile.txt
以及提交 git commit -m “添加add的说明”
此时HEAD在issue1处

合并操作(fast-forward)
切回master工作线 git checkout master
此时txt文件内未有add的变化
进行合并操作 git merge issue1
注:此处的合并为fast-forward

并行操作
建立 issue2,issue3两条分支
使用 git checkout issue2 切换至issue2分支,修改myfile.txt 中的内容,
使用 git add myfile.txt
git commit -m “添加commit的说明”
来提交(commit)与提交说明。
issue3同理如此添加(pull)操作的说明,在不同的位置修改myfile.txt
此时,issue2与issue3为并行的两条分支。

解决合并的冲突
首先切换至master
git checkout master
进行merge操作
git merge issue2
此处为 fast-forward 合并
合并issue3分支
git merge issue3
产生冲突,myfile.txt中的冲突内容被标注
修改myfile中的内容后
使用 git add myfile.txt 以及
git commit -m “合并issue3分支”
此时 HEAD 移动到 master处,合并完成,为non-fast-forward合并。

Rebase合并
注:取消合并指令 git reset --hard HEAD~
切换至issue3分支 git checkout issue3
git rebase master
回文件夹修改冲突部分,
git add myfile.txt
git rebase --continue 来提交修改的冲突(取消rebase使用 --abort指令)
之后切换到master分支
git checkout master
执行 fast-forward 合并
git merge issue3

Pull操作会发生的一些情况。
当拉取远程数据库内数据时,master分支为本地数据库的分支,则可以执行fast-forward操作快速合并。
当本地数据库master分支有新记录时,需要合并远程与本地的master分支,若双方无冲突,则自动创建合并并且提交。若有冲突,则需要解决冲突后,再手动提交。

Fetch操作
执行Pull数据库内容将自动合并,有时不想合并,则可以使用fetch操作取得远程数据库的最新历史记录,并形成历史记录,若想讲远程数据库的内容合并到本地数据库,可以合并Fetch_HEAD,或者重新执行Pull操作。
注:合并后,历史记录会与Pull操作所形成的的相同。实际上Pull操作就是Fetch+Merge。

Push操作的一些情况
推送到远程数据库时,发生冲突,原则上不修改远程数据库共享提交的内容。

Git内的标签Tag

轻标签和注解标签,方便参考提交。
轻标签:添加名称。一般本地用。
注解标签:添加名称,添加注解,添加签名。一般在专门的release上使用。
git tag xxxx 为标签操作
git tag -am “XXXX” XXXX 为注解表情操作
git tag 可查看标签
git tag -n 查看标签列表和注解
git tag -d 删除标签

一些提交实际操作中会遇到的问题

修改最近的提交:–amend
场景:有出问题的文件,修改好后,git add xxx.xxx,再git commit --amend -m “XXXXXX” (-m “” 为你留的提交备注)。
注:此操作不会更改HEAD及创建新的提交文件,仅仅修改了最近的提交。
注:输入git commit --amend会出现
Please enter the commit message for your changes. Lines starting with ‘#’ will be ignored, and an empty message aborts the commit.
此时可以按键盘 “ i ” 键进入插入模式,然后可以修改黄色部分的备注,按 “ ESC ” 键退出插入模式,输入 “ :wq ” 保存退出
(注:“ :wq ” 为保存退出,无修改也可以保存退出; “ :wq! ” 为强制保存退出,可修改只读文件, “ :x ”为保存退出需要有修改才能保存退出)

取消过去的提交:revert 可以取消指定的提交内容,一般不随意删除已经发布的提交,通过revert创建要否定的提交。
指令为 git revert HEAD, 即取消此时HEAD处的提交。
遗弃提交:在reset可以遗弃不再使用的提交,执行遗弃时,需要根据影响的范围而指定不同的模式,可以指定是否复原索引或工作树的内容。除了默认的mixed模式,还有soft和hard模式。
模式名称 HEAD的位置 索引 工作树
soft 修改 不修改 不修改
mixed 修改 修改 不修改
hard 修改 修改 修改
主要使用的场合:
复原修改过的索引的状态(mixed)
彻底取消最近的提交(hard)
只取消提交(soft)

提取提交:cherry-pick,可以从其他分支复制指定的提交,然后导入到现在的分支,会创建新的提交。
主要使用的场合:把弄错分支的提交移动到正确的地方,把其他分支的提交添加到现在的分支。
git checkout master
git cherry-pick xxxx
此时文件可能产生冲突,解决冲突保存后提交。
git add xxxx.xxx
git commit

改写提交
改写提交的历史记录:在rebase指定i选项,可以改写、替换、删除或合并提交。
rebase -i 汇合提交
git rebase -i HEAD~~ (回退至两个版本前(例:1,2,3,4,四个版本,head在4,则为2到4中间的3,4版本。不取2。))
此时回出现两个版本,如:
pick 9a54fd4 添加commit的说明
pick 0d4a808 添加pull的说明
按i进入编辑模式,将下面的版本前的pick改成squash,squash意义为合并到前一个版本(第一个pick的版本)并提交。
按enter,此时进入提交信息的编辑器,编辑信息后 :wq 保存退出。
此时HEAD处于版本3,3,4版本合并提交成3。
rebase -i 修改提交
不同于汇合squash,修改提交将pick改成edit,
此时进入文档修改,保存后提交
git add sample.txt
git commit --amend
注:amend后可能会有冲突,解决完冲突后,再add,commit然后执行下面的continue
此时虽然已提交修改后的文件,但是rebase操作仍然进行中
git rebase --continue
到此处,第一个文件的edit工作完成,可进行下一个文件的edit。
注:在rebase之前的提交会以ORIG_HEAD之名存留。
如果rebase之后无法复原到原先的状态,可以用git reset --hard ORIG_HEAD复原到rebase之前的状态。
merge --squash合并topic分支内所有提交成一个提交,然后导入到master分支的head处
git checkout master
git merge --squash issue1
一般会发生冲突,需要打开文件修改冲突
修改完成后,commit。
git add sample.txt
git commit

参考教程
1. 猴子都能懂的GIT入门 | 贝格乐(Backlog). Accessed September 24, 2020.

因篇幅问题不能全部显示,请点此查看更多更全内容

Top