Fork是一个Git客户端,可以在可视化图形化界面中实现Git仓库的拉取、提交、推送以及分支的新建、合并等操作。
Fork还可以直接与Gitea账户进行连接,实现直接管理Gitea账户中的仓库。
Fork界面:
1. 下载安装
访问Fork官网Fork - a fast and friendly git client for Mac and Windows(https://fork.dev/),如果是Windows用户,点击“Download Fork for Windows”进行下载。
下载完成后,直接双击进行安装,安装过程将自动进行,不需要选择安装路径。
安装完成后,在弹出的配置界面填写用户名和邮箱,默认文件夹建议新建一个文件夹,用于存放所有从远端拉取下来的仓库。
后续也可以在软件设置中修改这些配置。
配置完成后点击“Finish”,稍等片刻即可进入主界面。
使用一段时间后可能会出现一个更新提示,直接点击“Restart and Update”,Fork会自动更新到最新版本并重新启动。
2. 连接账户
此处以连接自建的Gitea服务为例,GitHub等服务类似。
点击右上角的File-Accounts
点击左下角的加号添加账户,账户选择Gitea,点击“Log in”
此时打开Gitea网页,登录账号后点击右上角头像中的设置
在“应用”选项中的“生成新的令牌”选项卡中填写自定义的令牌名称,“仓库和组织访问权限”选择“全部(公开、私有和受限)”
然后点击下方的“选择权限”,将所有权限都更改为“读写”,然后点击“生成令牌”
在页面中复制生成的令牌
在Fork的添加账户页面填写Server和Token,Server填写Gitea的网页地址,Token填写刚刚复制的令牌,填写完成后点击“Sign In”
验证完成后,在Account页面可以看到当前的登录状态
3. 克隆仓库
在Repositories页面可以看到当前账户下的所有仓库,点击仓库右边的下载按钮即可克隆此仓库。
在克隆页面,Fork会自动获取仓库的Url,文件夹建议在Gitea目录下再新建一个用户名文件夹,方便仓库管理,点击“Clone”,即可将远端仓库克隆到本地。
如果Clone仓库出现类似的报错:
1 fatal: unable to access 'https://example.com/hanqingjiang/test.git/': schannel: next InitializeSecurityContext failed: CRYPT_E_REVOCATION_OFFLINE (0x80092013)这是服务器端的证书检查没有通过导致的,可以通过更换Git的SSL后端为OpenSSL来实现:
- 打开Fork内置Git的安装目录,目录路径为:
C:\Users\你的用户名\AppData\Local\Fork\gitInstance\2.50.1(Git版本号)
;- 双击打开此目录下的
git-bash.exe
;- 稍等片刻,当出现“MINGW64”字样时,输入:
1 git config --global http.sslBackend openssl如果想要复制粘贴,粘贴时需要在窗口右键,选择“Paste”。
- 回车确认即可配置完成,关掉窗口;
- 回到Fork的Clone页面重新点击Clone,此时应当Clone成功。
Clone成功后,Fork会自动跳转到仓库管理页面。
4. Fetch&Pull
Fetch
相当于命令git fetch
,作用是从远程仓库获取最新的提交和分支信息。Pull
相当于git pull
,用于从远程获取代码并合并本地的版本。
当Fetch
之后发现本地仓库落后于远程仓库时,可以配合Pull
将远程仓库的更改拉取到本地。
Fork会每隔一段时间自动运行一次Fetch
,也可以手动运行,例如Fetch
之后发现本地落后于远端
运行Pull
之后,本地仓库和远端仓库相同
点击
Pull
之后出现的选项一般保持默认即可,感兴趣的话可以自行查找资料了解Rebase
和Stash
的作用。
一般情况下,所有的Commit都要在保证本地和远端仓库相同的时候进行,因此当本地落后于远端时应当先拉取(Pull
)再进行提交(Commit
)和推送(Push
)。
5. Add&Commit
当本地文件做了一些更改之后,可以在“Local Changes”页面看到修改的具体内容,并在此页面进行git add
和git commit
操作。
“Unstaged”中会显示出当前文件的所有更改,选中一个文件后,右侧会展示出文件修改的详细信息,双击文件,可以将此文件添加到暂存区(Staged)。
右键文件还可以实现更多操作,可自行探索。
右上角的“Stage”按钮,可以将所有已更改的文件添加到暂存区,相当于命令git add *
。
当“Staged”区有文件时,即可在右下角写提交信息并进行Commit。
第一栏“Commit subject”写Commit的简要信息,需要简要写出这次提交的更改内容于目的,最好遵循Commit规范(约定式提交(Conventional Commits));
第二栏“Description”可以补充说明此次提交的详细信息,也可以不写。
Amend选项勾选时,会将此次更改的内容合并到上一次Commit中,不勾选则会自动创建一个新的Commit。
全部操作完成后,点击右下角的Commit按钮,即可完成Commit,返回“All Commit”页面,可以发现本地仓库已经领先于远程仓库。
6. Push
Push
相当于git push
,用于从将本地的分支版本上传到远程并合并。
当本地仓库领先远程仓库时,点击Push
,即可将本地的更改上传到远程仓库,“Force push”选项一般不需要勾选。
至此,一次完整的拉取、修改并提交的流程已经完成。
7. 解决代码冲突
当远程仓库的代码和本地的代码有冲突时,则无法直接执行Push
,且此时也不应该执行Force Push,这可能会导致代码丢失。
例如此时本地和远程同时对一行代码做修改,本地Commit之后发现Fork自动Fetch了远端的修改
此时远程分支的字体是半透明的,说明需要执行Pull
将远程分支拉取下来
拉取后提示文件有冲突需要解决,点击“Resolve”或切换到“Local Changes”页面解决冲突,可以选择其中一个分支,或同时选择两个分支进行Merge
在Merge页面发现文件中本地是test123
远程是test321
,对于这两行代码“我都要!“时,可以依次勾选两个分支同时采用这两行代码,点击“Resolve”完成冲突的解决。
此时即可重新进行Commit
Commit之后,发现原先岔开的分支被合并到了一起
此时点击Push
即可将本地代码推送到远程仓库,这就完成了一次安全的冲突解决。
如果想要得到一条比较干净的分支线,去掉由于Merge操作而出现的另外的分支,可以使用Rebase来代替Merge。
此时,可以在
Pull
操作时勾选“Rebase instead of merge”,其他操作类似,可自行探索,本文不再赘述。
8. 其他功能
Branch
仓库所有的本地分支都会显示在左边的“Branches”中,双击即可直接Checkout特定的分支。
点击右上角的“Branch”可以创建新的分支,右键某一个Commit也可以在Commit的基础上创建分支。
代码级提交
在“Local Changes”页面,可以手动选中某行代码进行Stage,控制本次提交仅提交文件中某行代码的更改。
至此,Fork的基础功能已介绍完成,其他的Reset、Discard、Revert、Stash等操作可以在需要时自行查找资料了解。
本文链接: https://hanqingjiang.com/2025/08/20/20250820_fork/
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
