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

参考:
如何为 Git 设置代理?
git commit之后,想撤销commit
DevOps Guidebook`

posted @ 2021-11-24 11:31  Tsingwaa  阅读(291)  评论(0编辑  收藏  举报