git使用

1.0 第一件事git config

  • git config --list --show-origin查看所有git配置以及所在文件
  • 使用git config --global可以设置git的基本信息(如用户名、邮箱),使用--unset取消设置
    1. 配置你的名称、邮箱以及编辑器
git config --global user.name "191220000-Zhang San" 
# 全局设置名称
git config --global user.email "zhang3@email.com"
git config --global core.editor vim

2.0 初始化仓库

  1. 本地仓库:git init创建一个新的 git 仓库,其数据会存放在一个名为 .git 的目录下
    删除仓库:删除 .git 文件夹
git add <文件名字,*表示全部>
git commit -m 'initial project version'
# 提交到暂存区,并附上注释
  1. 远程仓库:git clone克隆远端仓库
git clone <网址> <仓库存放文件夹名>
# 使用http克隆

3.0 记录更新

  • git status 查看结果(会显示你对什么文件做了什么修改、操作),显示当前的仓库状态;-s参数简短输出
  • git diff 展示修改,具体查看修改内容
  • git ls-files 查看git已跟踪文件
  • git commit -m "comment" 创建一个新的提交
  • git rm 移除文件,--cached表明只删除版本文件,保留本地文件
  • git rm -r --cache . 取消跟踪所有文件
  • git mv 移动文件

4.0 提交历史、撤销操作

4.1 提交历史

  • git log 查看日志
  • git log --pretty=oneline 简单日志,每次提交只有附带注释的一行

4.2 撤销

放弃修改

  • git restore .:撤销未commit的修改。 git2.32版本后取代 git reset 进行许多撤销操作
  • git restore <file_name>: 将暂存区的修改重新放回工作区(--staged将包括对文件自身的操作,如添加文件、删除文件

切换旧版本

  • git checkout <editon_id>:恢复旧版本,会离开main分支,分离头指针,需要 git switch - 回到main分支
  • git commit --amend: 编辑提交的内容或信息
  • git reset HEAD <filename>: 恢复暂存的文件(建议使用restore)
  • git checkout -- <filename>: 丢弃修改

5.0 远程仓库

远端操作

  • git remote: 列出远端仓库名称,-v附加网址
  • git remote add <name> <url>: 添加一个远端
  • git push <remote> <branch>:将branch分支推送到remote服务器
  • git branch --set-upstream-to=<remote>/<remote branch>: 创建本地和远端分支的关联关系
  • git remote show <remote>:查看<remote>仓库的信息
  • git fetch: 从远端获取对象/索引
  • git pull: 相当于 git fetch; git merge
  • git clone: 从远端下载仓库

    注意,clonepush自己的代码会提示error: remote origin already exists.远端仓库已存在,需要进行以下操作:

    1. git remote rm origin 删除远程库关联
    2. 关联自己的仓库,[[#…/指南/Github使用指南 远程同步|教程]]

6.0 分支

  • git branch <name>: 创建分支
  • git checkout <name> 转到分支name, -b(brach)创建新分支name
  • git merge <brach_name>: 合并到当前分支

7.0 gitigore

# 所有.c文件
*.c
# 所有chapter*/eg/文件夹的文件
chapter*/eg/
# 所有子目录下的.class文件
**/*.class
# 不忽略hello.c文件
!hello.c

NJU讲解

B站王慧妍老师:BV1Bu4y1K7yr 
  • git clone:从仓库下载一个版本,远端拉一个仓库
  • git:自动化工具,帮你合并代码
  • 工作区:显示屏上看到的代码版本
  • 缓存区:被git追踪(git ignore跳过追踪)
  • git commit:记录版本(不会出错的代码),增加节点,像一个快照,给此版本一个id;commit到版本trace中
  • git特性:分布式,而不是集中的;git的各个版本在不同电脑上,可以两个人做两条线的分支,最后在merge
  • git push/pull:把版本记录扔到一个可以共享的地方(如GitHub或其他托管仓库);或把别人的代码拉下来
  • git merge:把大家的代码合并到一个版本
  • check out:从某个版本分叉出去,一条独立的修改代码的记录,完成后再merge进主分支
  • reset:一般用不到。回到以前的某个版本(需要id),丢弃之后的所有更改
  • git add:把当前文件放到暂存区,以使之被跟踪
  • 体验git:visualizing git concepts with d3

廖雪峰

创建版本库 - 廖雪峰的官方网站 (liaoxuefeng.com)

基础使用

  • git init 初始化一个git仓库
  • git add (文件) 把文件加入仓库
  • git commit -m “wrote a readme file” 提交文件到仓库,-m是提交说明
  • git status 查看结果(会显示你对什么文件做了什么修改、操作)
  • 例子,修改完文件用status、diff查看修改,add提交之后再用status确认一遍修改,最后commit
  • 提交完以后git status会显示没有要提交的修改(因为没有修改)
  • git log 查看提交日志
  • git reset --hard HEAD^ 回退到上一版本,HEAD表示当前版本,也可以写成HEAD~100
    • 怎么回去?找到commit id,git reset --hard id
    • 找不到id?使用git reflog查看过往命令
  • 暂存区:git add 实际上是把文件添加到暂存区
  • git checkout – file 丢弃工作区更改,回到上一次git add 的状态(此时git status为空)
  • git reset HEAD file 把暂存区某个文件的更改撤销掉(此时status为not staged)

[[…/指南/Github使用指南#Github 远程仓库|远程同步]]

git remote add origin^ git@github.com:账户名/仓库名.git // ^origin是远程仓库名字
git push -u 远程仓库名字 master
/* 加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来
*/

Git如何进行多人协作

使用Git多人协作,就要用到分支。
分支的特点是,将不同功能分配给不同的人开发,各个分支之间彼此独立、不受干扰。等待开发完成,只需要合并代码就可以了。