更新其它常用命令;

文件删除

删除远程仓库但不删本地资源,先在 .gitignore 中添加需要忽略的文件:

1
2
3
git rm -r --cached ***  //-r 是递归删除文件夹
git commit -m "delete files"
git push

切换分支

查看分支:

1
2
$ git branch -a #远程分支
$ git branch # 查看本地分支

切换到远程分支:

1
2
$ git checkout -b standard-base-4.x-dev origin/standard-base-4.x-dev
$ git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态

删除远程分支:

1
$ git push origin --delete <BranchName>

撤销 Commit / reset

1
2
3
4
5
6
7
8
9
# 回退到上一版本并不撤销add操作;
$ git reset --soft HEAD^
# --soft
# 不删除工作空间改动代码,撤销commit,不撤销git add .
# --hard
# 删除工作空间改动代码,撤销commit,撤销git add .

$ git reflog # 查看日志
$ git reset --hard 98abc5a # 回退版本

Git Large File Storage (LFS)

MacOS 安装:

1
brew install git-lfs

初始化:

1
git lfs install

commit 和 push 操作与git相同。

查看正在追踪的文件模式(.gitattributes):

1
git lfs track

添加需要管理的文件类型:

1
git lfs track *.csv #.gitattributes文件中生成新行

查看追踪的文件列表:

1
git lfs ls-files

下载远程大文件:

1
git lfs pull

版本控制流程图

工作区(Working Directory)
版本库(Repository):隐藏目录 /.git
版本库中包含index(stage)的暂存区和自动创建的第一个分支 master,以及指向master的指针head

当前用户配置

1
2
3
4
5
# 配置
$ git config --global user.name "name"
$ git config --global user.email "email address"
# 查看
$ git config --global --list

创建版本库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 创建
$ git init
# 查看隐藏 .git
$ ls -a
# 撤销git
$ rm -rf .git

# 将文件添加到仓库
$ git add *.* *.*

#将整个项目添加到仓库
$ git add .

# 查看已经添加的文件
$ git ls-files

# 将添加的文件提交到仓库
$ git commit -m "message"
# 查看工作区状态
$ git status
# 查看工作区和版本库里面文件 file 最新版本的区别
$ git diff HEAD -- file

版本回退

1
2
3
4
5
6
7
8
9
10
11
12
文件 1.修改 2. 添加 3. 提交
# 查看历史修改记录
$ git log
# 回退到上个版本 HEAD表示当前版本 ^表示上一个 ^^表示上上个
$ git reset --hard HEAD^

# 回到未来的某个版本(*****为commit id)
$ git reset --hard *****

如果不知道未来版本号*****
# 查看每次命令
$ git reflog

撤销修改

file文件在工作区的修改全部撤销。

1
$ git checkout -- file

两种情况:

一种是file自修改后还没有被放到暂存区,撤销修改就回到和版本库一模一样的状态;

一种是file已经添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区后的状态。

三种场景:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退,不过前提是没有推送到远程库。

删除文件

删除工作区文件file后:

两种选择:

  1. 从版本库中删除该文件:
    1
    2
    $ git rm file
    $ git commit -m "message"
  2. 误删,恢复文件到最新版:
    1
    git checkout -- file

添加远程仓库

1
2
3
4
5
$ git remote add origin https://github.com/dreamhomes/test.git
# 第一次
$ git push -u origin master
# 其它
$ git push origin master

远程库克隆

1
2
3
4
# ssh
$ git clone git@github.com:dreamhomes/test.git
# https
$ git clone https://github.com/dreamhomes/test.git

创建和合并分支

1
2
3
4
5
6
7
8
9
10
11
12
# 查看分支
$ git branch
# 创建分支
$ git branch <name>
# 切换分支
$ git checkout <name>
# 创建+切换分支
$ git checkout -b <name>
# 合并某个分支到当前分支
$ git merge <name>
# 删除分支
¥ git branch -d <name>

解决冲突


当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

git log --graph命令可以看到分支合并图。

多人协作

  • 查看远程库信息:git remote -v
  • 从本地推送分支:git push origin branch-name
  • 如果推送失败,用 git pull抓取远程的新提交;
  • 在本地创建和远程分支对应的分支:git checkout -b branch-name origin/branch-name名称一致;
  • 建立本地分支和远程分支的关联:git branch --set-upstream branch-name origin/branch-name
  • 从远程抓取分支, 使用 git pull,如果有冲突,要先处理冲突。
  • git rebase操作可以把本地未push的分叉提交历史整理成直线;

联系作者