Git是一个开源的分布式版本控制系统,可以有效、高速地进行项目版本管理。本文记录使用git工具时的一些常用命令以及它们的作用。
全局设置
设置用户名
git config --global user.name "user_name"
设置全局用户名,当推送到远程仓库之后会显示文件更改者的用户名。
设置邮箱
git config --global user.email "user_email"
设置全局邮箱。
设置http代理
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy https://127.0.0.1:7890
使用全局http代理。
更改PostBuffer
git config --global http.postBuffer 524288000
git config --global https.postBuffer 524288000
防止push时文件过大失败。
生成SSH密匙
ssh-keygen -t rsa -C "useremail"
输入指令后,一直回车即可,默认生成路径在C:\Users\xxx\.ssh里面。用文本打开id_rsa.pub,将里面的内容添加到github—头像—settings—SSH and GPG keys—New SSH key(Authentication Key)里面。
多账号/单个密匙名称自定义,需要配置config文件,具体看下文config配置介绍。
多账户密匙
1.使用上述指令生成对应账户密匙,密匙名称生成时自定义。假设生成id_1388_rsa和id_19399_rsa两个密匙账户。
2.执行指令ssh-agent bash
。
3.执行指令ssh-add ~/.ssh/id_1388_rsa
,添加到SSH agent中。
4.执行指令ssh-add ~/.ssh/id_19399_rsa
,添加到SSH agent中。
5.在路径C:\Users\xxx\.ssh\下添加config文件(UTF8格式,无文件后缀)。
6.config文件内容配置以下参数。
# 该文件用于配置私钥对应的服务器
# Host 名称自定义
# IdentityFile 对应密匙文件
# Default user
# SSH链接使用 git@FeiyuCode:FeiyuCode/MYTEST.git
Host FeiyuCode
HostName github.com
User git
#PreferredAuthentications publickey
IdentityFile ~/.ssh/id_1388_rsa
# Second user
# SSH链接使用 git@Feiyuacg:Feiyuacg/MYTEST.git
Host Feiyuacg
HostName github.com
User git
#PreferredAuthentications publickey
IdentityFile ~/.ssh/id_19399_rsa
7.测试ssh -T FeiyuCode
,提示生成known_hosts文件,输入yes继续。提示Hi XXX! You’ve successfully authenticated, but GitHub does not provide shell access.代表成功。
8.测试ssh -T Feiyuacg
,提示同上。
基础使用
克隆到本地
git clone [url]
克隆远程仓库的文件到本地。添加参数-b选择分支。
git初始化
git init
初始化为一个git仓库,会生成一个git文件夹。
查看已更改文件
git status
可以查看工作区的修改是否添加到缓存区。
添加更改文件到缓存区
git add filename
将工作区的修改添加到缓存区。add为添加,rm为删除, git add -A 会更改所有变化的文件。
将缓存区内容提交到本地仓库
git commit -m "备注"
将缓存区的内容提交到本地仓库,并且添加备注,会产生一次哈希记录(版本号),可以使用git log查看。
推送到远程仓库master分支
git push origin master
参数-f为强制推送,会影响其他人的pr提交,非必要情况不推荐使用。git push origin dev:master,不同分支推送。
查看历史记录
git log
查看历史记录,可以获取一些提交信息,可以根据哈希值(版本号)进行代码回溯等操作。
回溯操作
git reset --hard 目标版本号
恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。由于回溯导致版本低于远程仓库版本,所以需要使用 git push -f 来强制推送。
git revert -n 版本号
撤销某一版本的操作(该版本不会被删除),生成新的版本,可能会产生冲突,需要手动修改,使用 git commit -m “备注” 提交。
查看文件具体更改内容
git diff
可以查看文件具体更改了哪些内容,使用VScode等IDE工具更为直观。
分支操作
链接远程分支
git branch --set-upstream-to origin/分支名
本地分支链接到远程分支。
查看分支
git branch
查看本地所有的分支,*开头的为当前head指针所指向的分支。
创建分支
git branch 分支名
在本地创建一个分支。
删除分支
git branch -d 分支名
在本地删除一个分支。
切换分支
git checkout 分支名
进行分支的切换,实际为head指针的改变。
合并分支
git merge --no-ff 分支名
进行分支合并,内容冲突需要手动进行文件内容的更改,可以借助VScode等IDE工具。
默认使用ff模式,即合并时携带分支历史记录。推荐使用–no-ff,即合并时只产生本次记录。
远程仓库相关
解除远程仓库链接
git remote rm origin
链接到远程仓库
git remote add origin [url]
将本地的代码库连接到远程服务器仓库。
拉取远程内容
git fetch origin master
将远程内容拉取到本地origin/master,不会更改本地master内容,如果需要改变,需要使用git merge进行合并操作。
git pull origin master
相较于git fetch,还进行了merge合并操作,但是需要注意合并的内容是否会产生冲突。请继续关注飞鱼ACG,后续我们将更新更多实用教程。
查看远程仓库与本地仓库关系
git remote show origin
查看远程仓库,以及与本地仓库的关系。
标签相关
查看标签
git tag
查看所有的tag。
添加标签
git tag [name]
添加tag,例如版本号v1.0.0等。
git tag -a [name] -m "备注"
相较于git tag,除了备注之外,还会额外多出一些信息。
删除标签
git tag -d <tagname>
删除本地标签。
git push origin :refs/tags/<tagname>
删除远程仓库标签。
推送标签到远程仓库
git push origin [tagname]
push单个tag。
git push origin --tags
push所有tag。
commit message
覆盖最后一次commit
git commit --amend -m
覆盖最后一次commit并且修改对应的mesage。
合并/修改最后的多次message
git rebase -i HEAD~3
修改最近多次信息,将要修改信息的pick 修改为edit, 然后 :wq 退出。接下来,修改日志,执行 git commit –amend ,修改完成后,执行 git rebase –continue 。
合并最近多次信息,合并目标pick不变,需要删除的历史记录把pick改为squash。
其他设置
忽略权限
git config --add core.filemode false
status时忽略文件权限,以免造更改权限之后全部文件出现modified的问题。
主题不错!
不错不错
感谢分享
支持一下
站长加油
真不错
过来逛逛
这个ACG站做的不错