Git常用操作命令
Git常用操作命令
一. 初始配置
1. 账号邮箱配置
git config --global user.name test
git config --global user.email test@test.com
2. alias简写配置
在Git中,你可以使用alias(别名)来为常用的Git命令创建简写配置。通过别名,你可以用更短、更简洁的方式执行常用的Git操作。
2.1 使用git config命令配置别名:
git config --global alias.cp cherry-pick
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.st status
上述命令将创建了三个别名:cp代表cherry-pick命令,co代表checkout命令,br代表branch命令,ci代表commit命令,st代表status命令。你可以根据自己的喜好和习惯配置其他别名。
2.2 直接编辑Git的配置文件
通过编辑~/.gitconfig文件(对于Windows用户来说,是C:\Users\你的用户名.gitconfig),你可以手动添加别名的配置。在文件中添加如下内容:
[alias]
co = checkout
br = branch
ci = commit
同样的,上述配置会创建三个别名。
这样配置之后,你可以使用简写的命令来执行相应的Git操作。例如,git co相当于git checkout,git br相当于git branch,git ci相当于git commit。
注意,通过--global选项配置的别名将适用于全局范围,即在你的所有Git仓库中都可使用。如果你只想在当前仓库中使用别名,可以省略--global选项,然后在仓库的.git/config文件中添加别名配置。
3. warning: LF will be replaced by CRLF
该警告表示在Git中发现了换行符的不一致性。在Windows系统中,默认使用CRLF(回车加换行符)作为行尾符,而在Unix/Linux系统中,默认使用LF(换行符)作为行尾符。
这个警告通常出现在跨平台协作或在不同平台上使用Git时,例如在Windows和Unix/Linux之间切换。
Git会自动进行换行符的转换,以便确保文件在不同系统上的一致性。在这种情况下,Git发现你的代码中使用了LF作为行尾符,但它将被转换为CRLF。
虽然这个警告不会影响代码的功能性,但如果你希望避免这个警告,可以采取以下几种解决方案之一:
忽略警告(不推荐):你可以通过设置Git配置来忽略该警告,但这并不是一个推荐的做法,因为它可能导致行尾符不一致性的问题。在Git命令行中运行以下命令以忽略警告:
git config --global core.safecrlf false
转换行尾符为LF:如果你在Windows上开发,可以考虑将行尾符转换为LF。在Git命令行中运行以下命令:
git config --global core.autocrlf input
转换行尾符为CRLF:如果你在Unix/Linux上开发,并且希望行尾符被转换为CRLF,可以运行以下命令:
git config --global core.autocrlf true
根据你的开发环境和需求,选择适合的解决方案,并确保在团队协作时所有成员都使用相同的换行符设置,以避免不必要的换行符警告。
4. git:windows中文名称、路径变成xx%解决
当在Windows中使用Git时,如果Git的文件名或路径中包含中文字符,有时会出现被编码为xx%的情况。这是因为在Windows中,默认情况下,Git使用UTF-8编码,而Windows使用的是ANSI编码。
要解决这个问题,你可以进行以下设置:
设置Git的文件名和路径编码:在Git Bash中,运行以下命令来将Git的文件名和路径编码设置为UTF-8:
git config --global core.quotepath false
设置Windows系统的本地编码:如果Git的文件名和路径还是显示为xx%,则需要确保Windows系统的本地编码设置与Git的编码一致。你可以按照以下步骤更改Windows系统的本地编码为UTF-8:
在桌面上右键点击"开始"按钮,并选择"运行"。
输入regedit并按下回车键,打开注册表编辑器。
导航到以下路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage。
双击右侧窗口中的"ACP",将数值数据更改为"65001"。
关闭注册表编辑器,并重新启动计算机使更改生效。
通过上述设置,Git应该能够正确地处理中文字符的文件名和路径,避免出现xx%的情况。
5. git代理配置
要在Git中配置代理,你可以通过以下几种方式
方式一:使用git config命令配置代理:在Git命令行中,运行以下命令来配置代理:
# 设置HTTP代理
git config --global http.proxy <代理地址>
# 设置HTTPS代理
git config --global https.proxy <代理地址>
将<代理地址>替换为你的代理服务器地址,包括主机名和端口号。例如,如果代理服务器位于proxy.example.com的端口8888上,命令将如下所示:
git config --global http.proxy http://proxy.example.com:8888
git config --global https.proxy http://proxy.example.com:8888
要清除已配置的代理,可以使用以下命令:
git config --global --unset http.proxy
git config --global --unset https.proxy
方式二:编辑.gitconfig文件:手动编辑~/.gitconfig文件(对于Windows用户来说,是C:\Users\你的用户名.gitconfig),并添加以下内容:
[http]
proxy = <代理地址>
[https]
proxy = <代理地址>
将<代理地址>替换为你的代理服务器地址,与上述命令相同。
在配置代理之后,Git将通过指定的代理服务器进行HTTP和HTTPS通信。这对于需要通过代理访问远程仓库或下载依赖项的场景非常有用。
确保代理服务器的地址和端口号正确,并在需要时提供代理的用户名和密码,以便成功连接到代理服务器。如果你的代理服务器需要身份验证,参考代理服务器的文档来获取详细配置说明。
二. git配置.gitignore操作
1. git移除指定目录版本控制
如果你想要移除 Git 版本控制系统中的某个指定目录,可以按照以下步骤进行操作:
1.通过 cd 命令进入该 Git 仓库所在的目录。
2.执行以下命令,将需要移除版本控制的目录添加到 .gitignore 文件中,例如,如果你想要移除名为 example 的目录,可以执行以下命令:
echo "example/" >> .gitignore
注意,如果 .gitignore 文件还不存在,可以通过以下命令创建:
touch .gitignore
3.执行以下命令,删除版本库中的指定目录,但不删除本地文件:
git rm -r --cached example
这条命令会将 example 目录从 Git 版本库中删除,并从 Git 跟踪列表中删除。注意,使用 --cached 选项来仅仅删除 Git 跟踪列表,而不会删除本地文件。
4.执行以下命令,提交修改:
git commit -m "Remove example directory from version control"
这条命令会提交修改并添加一个提交信息,告诉 Git 你已经从版本控制中移除了 example 目录。
5.执行以下命令,推送修改:
git push
这条命令会将修改推送到远程仓库。
现在,example 目录已经被从版本控制中移除了。注意,这些操作不会删除本地文件,只会从 Git 版本控制系统中移除指定目录。如果需要删除本地文件,可以手动删除它们。
2. 只忽略指定目录下的文件,不忽略目录
在.gitignore文件中,可以忽略指定目录下的文件,不忽略目录。但是,如果该目录下没有任何文件被跟踪,Git将不会包括该目录。在Git中,只有跟踪的文件才会被提交。
如果你想要提交一个空目录,可以在该目录中添加一个.gitkeep文件,并将其添加到版本控制中。.gitkeep文件不需要任何内容,它只是作为一个标记来确保Git跟踪该目录。
举个例子,在.gitignore中,忽略指定目录下的所有文件,但不忽略该目录下的:
/my_directory/*
!/my_directory/.gitkeep
这样,在提交时,my_directory目录和.gitkeep文件将被包括在版本控制中。
三. git分支操作
1. git删除远程分支
要删除 Git 远程分支,可以使用以下命令:
git push <remote_name> --delete <branch_name>
其中,
例如,要删除名为 my-feature-branch 的远程分支,可以使用以下命令:
git push origin --delete my-feature-branch
执行完毕后,该分支就会被从远程仓库中删除。
评论区