下一步 Git 适用于已经知道 add 和 commit 的人
清单
不久前,我刚开始使用 Git 时,感觉它相当简单,尽管我必须适应 Git 的离线特性,这与 TFS 的工作方式(或者说以前的工作方式)不同。我主要使用 Visual Studio 的 Git 集成,通常它运行得非常好。
但过了一段时间,事情开始变得复杂起来。我必须处理子模块、更改远程 URL,还要处理未跟踪的文件。就在那时,我决定离开 Visual Studio 的舒适区,转而使用 Git CLI。
Git CLI 不太容易记住,而且所有操作都有多种方法,所以我开始自己整理一些有用的命令。以下是整理的结果。希望它能对正在经历同样过程的朋友们有所帮助,如果您也有一些 Git 精华,也请告诉我。
清单
没有任何特定顺序。
编辑配置
在 Windows 上,Git 配置文件通常位于 “c:\Users[user]” 目录下。您也可以从命令提示符启动编辑器。
git config --global -e
设置提交消息的编辑器
要将提交消息的默认编辑器更改为 Notepad++,请在配置文件中添加一个 [core] 部分,如下所示。
[core]
editor = 'C:/put-your-folder-here/Notepad++/notepad++.exe' -multiInst -notabbar
从现在开始,只要您运行 git commit 而不使用 -m 开关,Notepad++ 就会打开。
将合并工具设置为 Visual Studio
[diff]
tool = vsdiffmerge
[difftool]
prompt = true
[difftool "vsdiffmerge"]
cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\Common7\\IDE\\CommonExtensions\\Microsoft\\TeamFoundation\\Team Explorer\\vsDiffMerge.exe\" \"$LOCAL\" \"$REMOTE\" //t
keepbackup = false
trustexistcode = true
[merge]
tool = vsdiffmerge
[mergetool]
prompt = true
[mergetool "vsdiffmerge"]
cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\Common7\\IDE\\CommonExtensions\\Microsoft\\TeamFoundation\\Team Explorer\\vsDiffMerge.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\" //m
keepbackup = false
trustexistcode = true
子模块
克隆子模块
如果 repo 包含子模块,并且您想要将子模块中的代码带下来,则需要递归克隆。
git clone --recursive https://github.com/hocuspocus/icsharp.git
将子模块更改为自己的分支
如果您已经克隆了一个带有子模块的 repo,并且想要将子模块更改为不同的 fork(例如,如果您已经 fork 了子模块),则需要编辑文件 .gitsubmodule 中的 URL。
[submodule "Engine"]
path = Engine
url = https://github.com/scriptcs/scriptcs.git
保存.gitsubmodule后,运行命令。
git submodule sync
看起来这可能与 HEAD 分离,因此可能需要进行检出(在进行任何本地更改之前)。
git checkout
如果您在下载子模块的代码时遇到问题,请尝试运行以下命令:
git submodule update --remote
启动合并工具
如果有合并工具,您可以启动您的合并工具(在配置文件中设置)。
git mergetool
与远程比较
首先从远程仓库获取所有内容:
git fetch origin
然后与本地进行比较:
git log HEAD..origin/master --oneline
如果您对结果满意,您可以将远程更改与本地存储库合并:
git merge
显示远程 URL
显示“origin”的远程 URL:
git remote get-url origin
如需更多信息,您可以使用:
git remote show origin
如果你的遥控器已经移动,你可以使用set-url更改 URL :
git remote set-url origin https://hocuspocus@bitbucket.org/myteam/myproject.git
删除分支
删除远程分支:
git push -d <remote_name> <branch_name>
例如:
git push -d origin my-feature-branch
您还可以使用:
git push <remote_name> :<branch_name>
删除本地分支:
git branch -d <branch_name>
删除本地更改
撤消所有未暂存的本地更改:
git checkout .
撤消对单个文件的 git add:
git reset folder/file.cs
撤消git add .
:
git reset .
修复未跟踪的文件
git rm . -r --cached
git add .
git commit -m "Fixed untracked files"
为命令创建别名
如果您厌倦了输入冗长而难以忘记的命令,您可以创建别名。
git config --global alias.a "add ."
git config --global alias.c "commit"
您现在只需键入即可git a
添加未暂存的文件。
别名也可以直接添加到配置文件中。
[alias]
a = add .
c = commit