Git 基本操作
初始化projects
1. github新建repo
- 新建的repo不要生成任何内容(不要勾选readme,.gitignore)
- 这样push和pull的时候就不会有任何冲突项存在
2. 本地终端生成ssh密钥
~/.ssh $ ssh-keygen -t rsa -b 4096 -C 'your_git_email'
一路回车,生成一组密钥对(私钥id_rsa + 公钥id_rsa.pub)
- 建议不要重命名(这样最简单方便,但会覆盖默认的id_rsa),因为github默认指定id_rsa.pub
- 如果重命名,可以在~/.ssh/config中指定密钥路径
3. 公钥上传到github
github -> setting -> SSH&GPG keys -> New SSH (gitee同理)
标题任取,可以取方便记忆的,每个主机对应一个
# 测试ssh是否配置成功
$ ssh -T git@github.com
Hi Tsingwaa! You've successfully authenticated, but GitHub does not provide shell access.
如果终端返回如上,则ssh配置成功。此后就以ssh协议进行git pull/push.
(gitee同理ssh -T git@gitee.com)
4. 配置git
git代理信息以及git用户信息都保存在~/.gitconfig
中,除了上述命令,还可直接编辑该文件。
$ vim ~/.gitignore
[http]
proxy = http://proxy_ip:proxy_port
[https]
proxy = http://proxy_ip:proxy_port
# git若只针对github设置代理
[http "https://github.com"]
proxy = http://proxy_ip:proxy_port # 还可以用https或socks5
[https "https://github.com"]
proxy = http://proxy_ip:proxy_port
# 其他配置
[user]
name = abcddddd # name随意
email = abc@mail.com # email对应github账号
[init]
defaultBranch = main # github新建仓库,默认是main分支。而旧版是master
[color]
ui = auto
[pull]
rebase = false
5. 本地仓库初始化,与远程仓库建立免密连接
path_to_your_repo $ vim .gitignore # 设置忽略的文件,具体方法请搜 “python .gitignore”
path_to_your_repo $ git init # 初始化仓库 生成.git文件夹
path_to_your_repo % git add . # 将目录下文件添加进git本地仓库,自动忽略.gitignore内的匹配项
path_to_your_repo $ git commit -m 'init repo' # 每一组git add结束后,都要commit
path_to_your_repo $ git remote add origin path_to_git_remote_repo # origin为远程仓库名,可替换为记忆性名字,如github,gitee)
path_to_your_repo $ git pull origin main # 尝试从远程仓库origin拉取到本地main分支
path_to_your_repo $ git push -u origin main # 尝试从本地main分支推送到远程仓库origin,附带更新-u
Example:
~/Projects/test $ vim .gitignore
~/Projects/test $ git init
~/Projects/test $ git add .
~/Projects/test $ git commit -m 'init repo'
~/Projects/test $ git remote add github git@github.com:Tsingwaa/test.git
~/Projects/test $ git pull github main
~/Projects/test $ git push github main
注:
- origin可以替换为各种名字,如github,gitee
- 可以添加多个远程仓库,同时pull/push
6. 修改后提交
path_to_your_repo $ git status # 查看git状态
path_to_your_repo $ git add path_to_modified_files # 每个文件修改后都要git add, 可以add父文件夹。若有需要单独commit,则单独add-commit
path_to_your_repo $ git commit -m 'your_commit_message' # 为add的文件添加提交记录
path_to_your_repo $ git push origin master # 将本地仓库分支推远程仓库分支
7. Well done!
常用操作
git pull origin your_branch # 从远程仓库拉取对应分支到本地分支
git log # 查看commit记录
git status # 查看当前git仓库的修改状态
git add path/to/file # 将修改后的文件添加入当前节点
git commit -m 'message for modified place' # 为当前加入仓库的文件修改添加提交记录
git push origin your_branch # 将本地仓库分支推往远程仓库分支
git branch -m origin github # 将远程分支origin名字改为github
git branch -M main # 将当前本地分支名改为main
git reset --soft HEAD~2 # 撤销最近两次commit,--soft表示代码不变
git remove --cached path/to/file # 从本地git仓库移除部分文件
注:
- 养成一个好习惯,打开一个库,第一件事是git pull,确保和远程仓库同步,这样尤其是在协作时很方便
- 每次修改文件,都需要git add 和git commit,然后git push
用户和邮箱配置
这个配置,主要是用于对仓库提交时,显示提交用户的信息。
如果提交用户邮箱时托管平台账号,则会自动对应为仓库主人。
$ git config --global user.name <repo_user_name> # 设置repo用户账号(不加global,则只设置当前repo的用户名)
$ git config --global user.email <repo_user_email> # 设置repo用户邮箱
设置代理和取消代理
法一:终端命令
git设置代理:(代理协议也可采用socks5)
$ git config --global http.proxy http://proxy_ip:proxy_port
$ git config --global https.proxy http://proxy_ip:proxy_port
git只针对github设置代理
$ git config --global http.https://github.com.proxy http://proxy_ip:proxy_port
$ git config --global https.https://github.com.proxy http://proxy_ip:proxy_port
git取消代理:
$ git config --global --unset http.proxy
$ git config --global --unset https.proxy
法二:修改配置文件
见上面👆配置文件vim ~/.gitconfig
一些问题
1. git pull/push 报错
- git pull 时报错
fatal: refusing to merge unrelated histories
- 解决步骤:
$ git pull origin main --allow-unrelated-histories $ git diff $ vimdiff /path/to/file_to_merge
- 解决步骤:
2. 如何将master分支改为main分支?
path_to_repo $ git branch -m master main
path_to_repo $ git push -u origin main
本文来自博客园,作者:Tsingwaa,转载请注明原文链接:https://www.cnblogs.com/Tsingwaa/articles/14917585.html