Git 常用操作

Git 常用操作

包含内容:
本地新建仓库;添加/移除文件至缓存;本地仓库提交;查看仓库状态;查看仓库日至记录;
新建分支;合并分支;删除分支;变基分支;

1. 本地仓库基础操作

1.1 本地新建仓库

在本地根目录下执行如下操作,新建git仓库;

git init

1.2 在仓库中添加和去处文件(夹)

注意区别添加与提交的不同含义:添加是将文件或者文件的变化,添加到暂存区;提交是将暂存区记录的变化,提交到git仓库记录系统中.

1.2.1 在仓库中添加文件(夹)

在仓库中添加文件(夹):

git add <file_name> [<file2_name> ...]

在仓库中添加某类型文件,例如.c文件:

git add *.c

在仓库下添加全部文件:

git add .
1.2.2 在仓库中移除文件

注:此处并非将文件从仓库历史中移除,如果要将文件从仓库历史中完全删除,达到首生仓库的目的,请参考其它章节.

  • (1) 从仓库移除,但本地文件夹中保留
git rm --cached  <file>
  • (2) 从仓库和本地文件夹中移除
git rm -f  <file>
  • (3) 删除某一类文件,例如.c
git rm --cached \*.c
  • (4) 删除某文件夹下的某类型文件(例如log文件夹下的.txt文件)
git rm --cached log/\*.txt

1.3 忽略仓库中的某些文件(.gitignore)

在.git的同级目录下添加.gitignore文件,在仓库中添加全部文件时,忽略某些文件;

*~         # 忽略所有名字以波浪符(~)结尾的文件;
*.a        # 忽略所有的 .a 文件;


# [abc] 匹配任何一个列在方括号中的字符 (这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);
*.[oa]     # 忽略所有以 .o 或 .a 结尾的文件;
           

# 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。
!lib.a # 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件

# 忽略任何目录下名为 build 的文件夹
build/

# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO

# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt

# 使用两个星号(**)表示匹配任意中间目录,比如 a/**/z 可以匹配 a/z 、 a/b/z 或 a/b/c/z 等。
# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf

1.4 本地仓库提交操作

将缓存区的变动添加到本地仓库:

git commit -m 'the commit message for your changes'

将所有被跟踪文件的变动添加缓存区,并提交到本地仓库:

git commit -am 'the commit message for your changes'

1.5 查看本地状态

用 git status 命令查看哪些文件处于什么状态:

git status

git diff 只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动:

git diff

若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --staged 命令:

git diff --staged

1.6 查看本地日志

log

查看详细提交信息,包含:提交哈希值,提交者,提交日期,提交注释;

git log

查看提交简明信息,包含:简明提交哈希值,提交注释;

git log --oneline

查看带有分支图的信息:

git log --oneline --graph
reflog

引用日志(reflog), 记录了最近几个月你的 HEAD 和分支引用所指向的历史。

git reflog

2. 分支基础操作

2.0 查看分支

查看本地分支列表:

git branch

查看本地和远程的所有分支列表:

git branch -a

2.1 新建分支

新建分支指令:

git branch ...

基于分支并跳转至新分支指令:

git checkout -b ...
2.1.1 基于当前分支新建分支

基于当前分支新建分支:

git branch <new_branch_name>
2.1.2 基于某指定分支新建分支

基于某指定分支新建分支:

git branch <new_branch_name> <base_branch_name>
2.1.3 基于游离HEAD新建分支

有时从远程获取的新分支处于游离HEAD,需要基于此建立分支,然后被合并到本地分支中.
基于游离HEAD分支新建分支:

git branch <new_branch_name> HEAD
2.1.4 基于某次提交的哈希值(commit_hash)新建分支

基于提交的哈希值(commit_hash)新建分支:

git branch <new_branch_name> <commit_hash>

2.2 合并分支

将制定分支合并到当前分支(可一次合并多分支):

git merge <branch1> [<branch2> ...]

2.3 删除分支

2.3.1 删除已经被合并的分支
git branch -d <branch_name>
2.3.2 强制删除未被合并的分支
git branch -D <branch_name>

3 分支的高级操作

3.1 变基rebase

git rebase <branch_name>

3.2 重置reset

取消暂存的文件:

git reset

重置到某一次提交处:

git reset --hard <hash>

3.3 选择合并cherry-pick

将其它分支某hash值处的提交,合并至当前分支:

git cherry-pick <hash>

将其它分支hash_A值(不含)至hash_B处的提交,合并至当前分支:

git cherry-pick <hash_A>..<hash_B>

将其它分支hash_A值(含)至hash_B处的提交,合并至当前分支:

git cherry-pick <hash_A>^..<hash_B>

3.4 撤销revert

git revert 命令本质上就是一个逆向的 git cherry-pick 操作。 它将你提交中的变更的以完全相反的方式的应用到一个新创建的提交中,本质上就是撤销或者倒转。
取消某一次提交的更改:

git revert <commit_hash>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值