×

git 命令

git 命令(【学了就忘】Git操作 — 14.Git基本操作(一))

admin admin 发表于2023-05-02 16:18:40 浏览43 评论0

抢沙发发表评论

本文目录

【学了就忘】Git操作 — 14.Git基本操作(一)

要对现有的某个项目开始使用Git管理,只需到此项目所在的根目录,执行 git init 命令即可。

准备一个新的Git本地版本库:

说明:初始化Git仓库后,在当前目录下会出现一个名为 .git 的目录,所有Git需要的数据和资源都存放在这个目录中。

不过目前,仅仅是按照既有的结构框架,初始化好了Git仓库中所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。

使用 git status 命令进行查看。

进入本地版本库查看工作区、暂存区中文件的状态。

1)创建文件后查看工作区、暂存区中文件的状态

我们在仓库目录中创建一个 readme.txt 文件后,在执行 git status 命令。

说明:

2)将工作区的文件添加到暂存区

执行 git add 命令,将 readme.txt 文件添加到暂存区。

3)再次查看工作区、暂存区状态

执行 git status 命令查看工作区、暂存区状态。

说明:

总结:

只要在 “Changes to be committed“ 这行下面显示的文件,就说明是已暂存状态。

如果此时提交,那么该文件此时此刻的版本,将被留存在历史记录中。

在 git add 命令后面可以指明要跟踪的文件或目录路径。

如果是目录的话,就说明要递归跟踪该目录下的所有文件。(其实 git add 命令的潜台词就是把目标文件快照放入暂存区域,同时未曾跟踪过的文件标记为已跟踪。)

4)将文件从暂存区撤回到工作区

执行 git rm --cached 命令,将 readme.txt 文件从暂存区撤回到工作区。

并执行 git status 命令查看工作区、暂存区状态。

可以看到结果, readme.txt 文件又成为了一个未被Git追踪的文件。

git之几个有用的命令

1、首先我们要先在命令框里输入这个命令 将存储库克隆到新目录中。(在这之前你要先安装好git并配好环境)
git clone《版本库的网址》(

几个常用的git命令

1.安装Git

  • Linux

  • sudo apt-get install git

  • Window:到Git官网下载安装:

    如果你回退完版本又后悔了,想回来,一般情况下是回不来的,但是如果你可以找到你之前的commit id的话,也是可以的,使用如下即可:

  • $ git reset --hard + commit id

  • 提示:commit id不需要写全,Git会自动查找;

    补充说明:Git中,commit id是一个使用SHA1计算出来的一个非常大的数字,用十六进制表示,你提交时看到的一大串类似3628164...882e1e0的就是commit id(版本号);

    在Git中,版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向回退的版本,然后顺便刷新工作区文件;

    10.查看操作的历史命令记录

  • $ git reflog

  • 结果会将你之前的操作的commit id和具体的操作类型及相关的信息打印出来,这个命令还有一个作用就是,当你过了几天,你想回退之前的某次提交,但是你不知道commit id了,通过这个你可查找出commit id,就可以轻松回退了,用一句话总结:穿越未来,回到过去,so easy!

    11.diff文件

  • git diff HEAD -- 《file》

  • 说明:查看工作区和版本库里面最新版本文件的区别,也可以不加HEAD参数;

    12.丢弃工作区的修改

  • $ git checkout -- 《file》

  • 说明:适用于工作区修改没有add的文件

    13.丢弃暂存区的文件

  • $ git reset HEAD 《file》

  • 说明:适用于暂存区已经add的文件,注意执行完此命令,他会将暂存区的修改放回到工作区中,如果要想工作区的修改也丢弃,就执行第12条命令即可;

    14.删除文件

  • $ rm 《file》

  • 然后提交即可;

    如果不小心删错了,如果还没有提交的话使用下面命令即可恢复删除,注意的是它只能恢复最近版本提交的修改,你工作区的修改是不能被恢复的!

  • $ git checkout -- 《file》

Git常用命令

git config —global user.name “Nshen” //必须
git config —global user.email “ nshen121@gmail.com ” //必须
git config —global color.ui “always” //或者“auto“, always不仅Base环境是彩色,Dos里也是彩色的。
git config —global core.editor notepad.exe //设为windows记事本
git config —global alias.ci “commit” //别名缩写
git config —global merge.tool //可以设置合并工具
git config —global —list //查看设置
其实最后这些设置都保存在C:\Documents and Settings\用户名.gitconfig 文件下(windows)
查看帮助: git help command

git init

git add *.txt //添加所有txt文件
git add README //添加单个文件
git add . //添加所有文件包括子目录,但不包括空目录
add命令是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)注意每次修改后都要重新add,不然就会提交之前add时的版本。
git add -i //进入交互式add
git add -p //直接进入补丁模式,可以暂存修改的一部分。

git commit -m “initial project version”
git commit -m “something” someFile //提交指定文件
git commit -C HEAD -a —amend //复用HEAD留言,增补提交(修改小错误,而不增加提交记录,掩盖自己的小马虎)

-m “提交的说明”
-a 动把所有已经跟踪过的文件暂存,并提交.(工作目录中修改过的文件都提交到版本库,不需一个一个手动add了)
—amend 增补提交
-C 复用指定提交的提交留言
-c 打开器在已有的提交基础上修改
e.g 修改最后一次提交:
git commit -m ’initial commit’git add forgotten_filegit commit --amend
如果没有修改就相当于更改提交说明,上边3个命令得到一个提交.
忽略提交的文件:
所有人都需要忽略的文件要写在.gitignore文件里,而只有自己的个人偏好需要忽略的文件要写在.git/info/exclude文件中

# 此为注释 – 将被 Git 忽略***.a # **忽略所有 .a 结尾的文件!lib.a # 但 lib.a 除外 ***. # **忽略以.o或.a结尾的文件 ***~ # * 忽略以~结尾的文件/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODObuild/ # 忽略 build/ 目录下的所有文件doc/ .txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt查看文件改动:
git diff // 比较工作目录与缓存区的区别
git diff —cached 或者 git diff —staged //缓存区与版本库里的区别
git diff HEAD //三者的区别
(请注意,单单 git diff 不过是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。)
git diff 18f822e //18f822e这个版本与当前目录的区别
git diff aaaaa..bbbbb //比较aaaaa与bbbbb之间差别
git diff —stat可以统计数据,比较特别的命令
重命名,移动,删除文件:
git mv file_from file_to //改名或移动
$ git mv README.txt README$ git status# On branch master# Your branch is ahead of ’origin/master’ by 1 commit.## Changes to be committed:#(use “git reset HEAD 《file》...“ to unstage)## renamed: README.txt -》 README
其实,运行 git mv 就相当于运行了下面三条命令:
$ mv README.txt README
$ git rm README.txt
$ git add README
必须调用 git rm 文件名 //从暂存区移除,并且文件也被删除
如果只是手工删除了文件,运行git status时会出现

# Changed but not updated:#(use “git add/rm 《file》...“ to update what will be committed)## deleted: grit.gemspec
此时必须再运行 git rm 文件名,才会在提交时候不再纳入版本管理.
如果删除之前修改过并且已经add到缓存区了的话,则必须强制删除 -f
另外一种情况是,我们想把文件从Git仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆.a编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 —cached 选项即可:

git status
$ git status# On branch master# Changes to be committed: //只要在这行后边的,说明放入暂存区了#(use “git reset HEAD 《file》...“ to unstage) //想取消放入缓存 git reset HEAD README## new file: README# Changed but not updated: //跟踪文件内容改变,但还没有放到暂存区,需要git add 命令才会放到暂存区#(use “git add 《file》...“ to update what will be committed)#(use “git checkout -- 《file》...“ to discard changes in working directory) //删除修改,恢复到之前版本,有危险 (如果想保留并且回退版本用stashing 和分支来处理)# modified: benchmarks.rb查看提交历史:
git log
这时“j”向下浏览,“k”向上浏览,“q”退出
git log —pretty=oneline //一行显示
—pretty=“%h %s” //以各种格式输出
git log –p -2 //-p显示每次提交的内容差异 -2表示最近2次更改
git log —since “5 hours”
—since “3 hours”
—since “1 minute”
—before =“2008-10.01”
git log 27j34j3j..03u43u23 //最老版本..最新版本(不包括起点只包括终点)
git log 34j4j4..HEAD
git log fhfs8fh.. //省略HEAD
git log “HEAD^ ”..“HEAD ” //windows必须加引号表示回溯上一个提交
git log -1 HEAD~1 //相当于git log -1 HEAD^

git blame hello.html //你也可以用“-L“参数在命令(blame)中指定开始#####和结束行:
git blame -L 12,+10 hello.html //12到22行
blame还可以跟踪内容复制,文件复制,略,见版本控制之道 79页

git checkout head 文件名 //撤销暂存区的修改
git checkout head readme.txt todo.txt
git checkout head *.txt
git checkout head . //撤销所有

git revert HEAD //创建一个反向的新提交抵消原来的提交改动
如果需要反转多个,必须从最后的开始反转, 加 -n可以不马上提交,之后一起提交。
git revert -n HEAD
git revert -n 54efhds
git commit -m “revert head and 54efhds”

git reset —hard HEAD //所有未提交的内容清空,这会让“git diff“ 和“git diff —cached“命令的显示法都变为空
git reset —soft HEAD //复位版本库,暂存差异,便于提交中发现错误需要更改时有用(例如私人密码放到里边了)
分支:在当前分支末梢建立分支:
git branch RB_1.0(建立分支不会自动切换过去)

git checkout RB_1.0(切换到RB_1.0分支)
创建并切换分支:
git checkout -b RB_1.0(简化上边2步操作)

git branch -d RB_1.0
基于某次提交、分支或标签创建新分支:
git branch RB_1.0 master
git branch RB_1.0 6fe57de0
git branch Rb_1.01 1.0

git branch -r //显示远程分支
git branch -a //列出所有分支

git branch -m master mymaster
-M 大写M会覆盖同名的分支

直接合并:
git merge 想合并到当前分支的源分支名
git merge —no-commit 分支 //合并但不提交
压合合并:将分支压合成一条commit记录,并合并过来
git merge —squash 某bug分支
git commit -m “修复某bug”
拣选合并:只合并一个提交
git cherry-pick 321d76f
如果需要连续拣选,就需要加 -n参数
然后再git commit ,但不要加-m参数,器就会使用刚拣选的提交留言作为现在的留言。
标签Tag:查看标签:
git tag

git tag 1.0 //在当前分支最后一次提交创建标签
git tag 1.0 RB_1.0 //基于RB_1.0分支的最新踢脚创建标签
git tag 1.0 ae468d8kt //为某次提交创建标签

git checkout 1.0 //检出标签与检出分支一样操作,但检出标签后用git branch查看本地分支会发现你现在不再任何分支上
这时你不应该修改,而应该立即基于此标签创建一个分支
git checkout -b from-1.0

1)git rebase RB_1.01 //也许修改过一个bug,希望新版本变基到RB_1.01分支上
2)手动解决冲突 //如果解决不了直接git rebase -abort来跳过特定提交或完全放弃变基
3)git add xxx.html //冲突解决
4)git rebase —continue
git rebase --onto HEAD^^ HEAD^ HEAD
//—onto参数可以改写历史抹掉中间的参数,将倒数第一个参数变基到倒数第3个参数,为防止出错建议在试验性分支上先试验。
rebase -i 可以排序历史记录,多个提交合并为1个,一个提交分解成多个提交 ,
详见版本控制之道p86 ,需要器支持,windows记事本不行
远程相关:
git clone git://github.com/schacon/grit.git //从现有仓库克隆
git clone git://github.com/schacon/grit.git mygrit //换名,唯一区别就是新建的目录成了mygrit,其他都一样

git remote add pb git://github.com/paulboone/ticgit.git
clone会默认添加origin仓库,如果原本用git init创建的版本库,后来又想提交到远程版本库,就可以用下边的办法
git remote add origin git@example.com :/xxxxxx

git remote -v //查看远程仓库,默认clone后,应该有一个origin仓库,-v显示对应的clone地址
git remote show origin //查看远程仓库信息

git remote rename pb paul
git remote rm paul

git fetch ticgit -》 pb/ticgit
现在pb/master可以在本地访问了,你可以合并到自己的某个分支,或者切换到这个分支看看有什么有趣的更新
git pull 抓取数据合并到工作目录中当前分支

git push //默认为 git push origin master
git push origin serverfix //推送分支,其实是下边一句的简化,提取我的 serverfix 并更新到远程仓库的 serverfix
git push origin serverfix:serferfix
git push origin :serverfix //这个语法用于删除,只要把分号前留空

git gc //垃圾回收,每隔一段时间例如一个月运行一次可以减少磁盘占用空间。
git reflog //最后的保障,列出误删的东东
git bisect //二分查找,版本控制之道p124页,略
归档版本库,导出压缩包:
git archive —format=格式 —prefix=目录/ 版本》压缩包.zip
git archive —format=zip head》test.zip
git archive —format=tar —prefix=mysite-1.0/ 1.0 | gzip》mysite-1.0.tar.gz
git archive —format=zip —prefix=mysite-1.0/ 1.0 》mysie-1.0.zip

Git:修改/放弃修改;删除/放弃删除

原始文件README.MD:

首先我们查看一下仓库状态:

我们做出这样的修改:

仅仅在原始文件中加了个 .MD 。再查看一下状态:

此时我们再一次修改文件,然后查看状态:

提交后在查询状态,发现分支上还有改变,说明第二次改变并没有被提交:

也就是说: 修改-》add-》修改-》commit 只能 commit 已经 add 的修改。
若要保存第二次修改需要再一次 add 然后 commit 。

不知道大家有没有注意到:在上述 git commit 结果中有这样一句
(use “git checkout -- 《file》...“ to discard changes in working directory)
即: git checkout --《file》 可以丢弃工作区的修改

命令 git checkout -- README.MD 就是,把README.MD在工作区的修改全部撤销,这里有两种情况:

总之, 让这个文件回到最近一次 git commit 或 git add 时的状态
git checkout -- 《file》 命令中的 -- 很重要,没有就变成了“切换分支”的命令。

此时我们查看文件的内容,果然回到了修改前的内容。

上面说的是丢弃工作区的修改,如果修改完后已经 git add 了之后想撤销修改怎么办?

好,我们来试一下:首先修改文件,然后执行命令

值得高兴的是,我们看到这样一句话:
(use “git reset HEAD 《file》...“ to unstage)
那我们来做一下:

我们来查询一下状态:

工作区有修改,暂存区已经干净了。那如何撤销工作取得修改呢?
git checkout -- README.MD

在Git中, 删除也是修改 。我们可以这样做:

你有两个选择:

记住: git checkout 命令就是用版本库里的版本替换工作区的版本 ,无论工作区是修改还是删除。

Git工作流程和常用命令分享

git是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。林纳斯·托瓦兹在编写第一个版本时就使用了“git”这个名称, 他将工具描述为“愚蠢的内容跟踪器”。

四个专有名词:

Workspace:工作区

Index / Stage:暂存区

Repository:仓库区(或本地仓库)

Remote:远程仓库

打开本地生成的.git隐藏文件

创建新项目gittest

创建新文件test.txt

git add 《file》

git status显示有变更的文件

git restore 《file》 撤回文件修改内容

git commit –m “注释”

修改内容-》 执行git diff工作区和本地仓库的差异

git log显示当前分支的版本历史

git reset --hard HEAD^ 当前版本回退到上一个版本

git reset --hard HEAD^ ^ 当前版本回退到上上一个版本

git reset --hard HEAD~100 回退到前100个版本

恢复已经删除的版本

git reflog 展示所有的提交记录

git reset --hard 《版本号》 回退到指定版本

git push origin master 将本地master分支推送到远程master分支,相当于创建远程分支

git checkout -b dev = git branch dev + git checkout dev 创建并切换分支

git branch 不带参数,会列出所有本地的分支;带参数表示创建分支

git branch –d name 删除本地分支(-D表示强制删除)

git branch –r 不带参数,会列出所有远程的分支

git branch --set-upstream-to=origin/《branch本地》 本地和远程分支关联

git push origin –delete 《branch》 删除远程分支

git merge release用于合并指定分支到当前分支上

注:Fast-forward表示的合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。在这种模式下,删除分支后,会丢掉分支日志信息。可以使用带参数 --no-ff来禁用”Fast forward”模式。

git merge --no-ff -m “注释”dev

git checkout release 切换release分支

vim test.txt 修改某条内容

git commit test.txt -m “release修改某条内容”

git checkout master 切换master分支

vim test.txt 修改某条同release内容

git commit test.txt -m “master修改某条内容”

git merge release 显示冲突

git status 显示冲突提示

Git用《《《《《《《,=======,》》》》》》》标记出不同分支的内容,其中》》》》release 是指release上修改的内容
vim test.txt 修改内容

git add test.txt

git commit -a -m “fix conflict”

当前分支有没有提交但也不合适现在就提交的内容,Git提供了暂储功能stash

git checkout release

vim test.txt 修改test.txt内容

git checkout develop 此时会提示Aborting

git status 查看当前状态

Git stash list 查看所有暂储列表

git stash apply恢复,恢复后stash内容并不删除,你需要使用命令git stash drop来删除;
另一种方式是使用git stash pop,恢复的同时把stash内容也删除了

创建Git Tag并推送远程服务器

git tag -a V1.0.0 –m“注释” //创建TAG

git push origin V1.0.0 //推送到远程服务器

git push origin --tag //提交所有tag至服务器

git tag -d V1.0.0 //删除本地标签

git push origin --delete tag 《tagname》 //删除远程标签

HEAD,它始终指向当前所处分支的最新的提交点。你所处的分支变化了,或者产生了新的提交点,HEAD就会跟着改变

add相关命令很简单,主要实现将工作区修改的内容提交到暂存区,交由git管理。

git add .添加当前目录的所有文件到暂存区

git add 添加指定目录到暂存区,包括子目录

git add 添加指定文件到暂存区

commit相关命令也很简单,主要实现将暂存区的内容提交到本地仓库,并使得当前分支的HEAD向后移动一个提交点。

git commit -m 提交暂存区到本地仓库,message代表说明信息

git commit --amend -m 使用一次新的commit,替代上一次提交

上传本地仓库分支到远程仓库分支,实现同步。

git push 上传本地指定分支到远程仓库

git push --force强行推送当前分支到远程仓库,即使有冲突

git push --all推送所有分支到远程仓库

关于分支,大概有展示分支,切换分支,创建分支,删除分支这四种操作。

git branch列出所有本地分支

git branch -r列出所有远程分支

git branch -a列出所有本地分支和远程分支

git branch 新建一个分支,但依然停留在当前分支

git checkout -b 新建一个分支,并切换到该分支

git checkout 切换到指定分支,并更新工作区

git branch -d 删除分支

git push origin --delete 删除远程分支

关于分支的操作虽然比较多,但都比较简单好记

merge命令把不同的分支合并起来。在实际开放中,我们可能从master分支中切出一个分支,然后进行开发完成需求,中间经过R3,R4,R5的commit记录,最后开发完成需要合入master中,这便用到了merge。

git merge 合并指定分支到当前分支

注:如果在merge之后,出现conflict,主要是因为两个用户修改了同一文件的同一块区域。需要针对冲突情况,手动解除冲突。

rebase又称为衍合,是合并的另外一种选择。

在开始阶段,我们处于new分支上,执行git rebase dev,那么new分支上新的commit都在dev分支上重演一遍,最后checkout切换回到new分支。这一点与merge是一样的,合并前后所处的分支并没有改变。

git rebase dev,通俗的解释就是new分支想站在dev的肩膀上继续下去。

rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交。

rebase也需要手动解决冲突。

1.如果你想要一个干净的,没有merge commit的线性历史树,那么你应该选择git rebase

2.如果你想保留完整的历史记录,并且想要避免重写commit history的风险,你应该选择使用git merge

reset命令把当前分支指向另一个位置,并且相应的变动工作区和暂存区。

git reset —soft 只改变提交点,暂存区和工作目录的内容都不改变

git reset —mixed 改变提交点,同时改变暂存区的内容

git reset —hard 暂存区、工作区的内容都会被修改到与提交点完全一致的状态

git revert用一个新提交来消除一个历史提交所做的任何修改。

在回滚这一操作上看,效果差不多。git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。

在 Git工作区的根目录创建一个特殊的.gitignore文件。

在.gitignore文件中,添加需要忽略的文件。

git rm -r --cached . //将仓库中的index递归删除

git add . //重新添加仓库索引

git commit -m “update git.ignore” //提交

git branch --set-upstream-to=origin/《branch》 《branch》 //重现将本地仓库和远程仓库关联

最后,如果此篇博文对你有所帮助,别忘了点个赞哟~

Git reset命令的使用

Git reset 命令有三个主要选项:git reset --soft; git reset --mixed; git reset --hard;

git reset --soft

将HEAD引用指向给定提交。索引(暂存区)和工作目录的内容是不变的,在三个命令中对现有版本库状态改动最小。

git reset --mixed(git reset默认的模式)

HEAD引用指向给定提交,并且索引(暂存区)内容也跟着改变,工作目录内容不变。这个命令会将索引(暂存区)变成你刚刚暂存该提交全部变化时的状态,会显示工作目录中有什么修改。

git reset --hard

HEAD引用指向给定提交,索引(暂存区)内容和工作目录内容都会变给定提交时的状态。也就是在给定提交后所修改的内容都会丢失(新文件会被删除,不在工作目录中的文件恢复,未清除回收站的前提)。

用表格看起来会更清楚些:
操作一下看一下实际效果:

首先在一个版本库中修改追踪文件,然后提交,description叫做 add button

使用git log 查看历史提交

copy记录 add button 的前一次提交 add label 的哈希ID “7c5a658fbceb904ad877c4254d183e68aed1ddd0”,作为我们reset的给定提交。

git stauts 查看一下当前版本库中文件状态

显示nothing to commit ,在add button 提交后未对版本库中文件做修改

执行 git reset --soft 7c5a658fbceb904ad877c4254d183e68aed1ddd0 命令,然后使用git status 查看文件状态。

然后再使用git log 查看历史提交记录。

会发现add button 已经没有了,版本库已经回滚到add label提交的状态了,但是在我们add button 提交修改的文件 里面修改的内容没有丢失,只是回到了未提交的状态。

将文件再次提交,同样取名add button ,继续 git reset --mixed 操作。

同样是回滚到了add button 之前的add label 提交。被修改的文件内容也没有丢失,但是修改的文件为红色了(未执行add 操作)。

将文件再次提交,同样取名add button ,继续进行 git reset --hard 操作。

执行完git reset --hard 命令后,使用git status 查看文件状态,回滚到add label 提交,add button被修改的文件内容已经没有了,丢失了。版本库中的文件已经完全回到刚提交完add label时的状态。

git reset 根据需要使用不同的命令,使用 --hard时一定考虑回滚后文件的丢失!

tig — 让 git 命令行可视化

tig 是一款优化 git 命令行的工具,使 git 命令行更加的便捷人性化 。如果用习惯了,会上瘾。

在 Mac 上最简单的方式是使用 Homebrew :

其他安装方式请参考 这里

以下内容建议阅读时在 repository 亲手操作

安装成功后,在 Repo 文件夹下,输入 【 tig 】+ 【 Enter 】即可进入 tig 模式。此时展现在面前的将会是本地所有的 commit 记录以及分支的演化。

【 j 】【 k 】可上下切换选中的行,【 Enter 】可分屏查看当前 commit 记录详情,【 l 】小写的 L,全屏查看 commit 记录。

【 r 】进入 refs view 模式,查看所有分支,使用 【 j/k 】上下切换, 【 Enter 】查看分支演化。

【 s 】进入 status view,效果同 git status 命令,会展示所有 Untracked 和 UnStaged 文件。 选中 Unstaged 的文件键入【 u 】效果同 git add ,选中 staged 的文件键入 【 u 】效果同 git reset,即撤销 add 操作。【 Enter 】查看分屏查看当前文件的修改记录。

status view 模式下键入 【 C 】进入 vim 器,【 i 】进入模式,在第一行输入 commit 信息,【 :x 】退出并保存。【 m 】查看 commit 记录。

【 c 】进入 stash view 模式,全屏查看修改记录,可配合 【 s 】 使用。

【 t 】进入 tree view 模式,git 目录会以文件夹的形式展示。【 Enter】进入子目录,【 , 】返回上一级目录。

【 m 】进入 main view 查看当前分支的所有 commit 记录,使用 【 j/k 】上下切换,【 回车 】可分屏查看 commit 详情。同样,【 j/k 】上下移动,【空格】翻页。

main view 可以认为是主页。

【 / 】输入关键字可进行搜索。

【 R 】刷新当前页面,可退出搜索的高亮状态。

【 Q 】退出 tig。

【 h 】查看快捷键帮助。

tig 可以设置作用域,如果只想关注某个文件夹的修改记录,可使用 【 tig 文件夹名】。

如果只想展示某一段时间的 commit 记录, tig --after=“2018-01-01 --before=“2018-05-12” 。如果希望不写引号,可以使用 tig --after==May.10th 。

从以上的介绍来看,tig 更偏向于查看(view)。

上文快捷键其实是默认的配置,所以我们可以自定义。自定义文件在 ~/.tigrc 目录,如果安装完成后没有这个文件,需自行创建,并拷贝 系统配置 后进行修改。

例如,不喜欢【 t 】显示的文件夹颜色,可以将 blue 改为 red。

tig 支持 bind 的语法,来实现自定义快捷键,映射到具体的 git 命令。bind status 意思是在 statsu view 模式下(【 s 】键进入)才会生效,P 的功能为 git push。

! 代表立即执行。

在 .tigrc 文件中:

代表 refs view 模式下,键入【 C 】checkout 分支,执行前会请求确认。

注意设置映射关系后需重启终端。更多功能请自行挖掘。:)

如果对 git 的工作原理不是特别的熟悉,可以走一遍下面的教程,相信你会对 git 有更深刻的理解。

https://learngitbranching.js.org/

参考:
Manual · Tig - Text-mode interface for Git

git如何切换分支命令

(一).创建本地分支

git checkout -b新分支名。

执行该指令后,会在本地创建一个新分支,该分支是从当前分支上检出的,所以所有文件内容都和当前分支一模一样,这是正常的。创建成功后,将自动切换至新分支上。

比如我要创建一个名为dev1的新分支:

此时,再执行git branch查看当前本地所有分支,就会看到两个分支:master与dev1。

(二).推送本地分支到远程仓库

git push --set-upstream origin分支名。

例如,我要把上一步创建的本地dev1推送到远程仓库:

三、将远程git仓库里的指定分支拉取到本地(本地不存在的分支)

当我想从远程仓库里拉取一条本地不存在的分支时。

git checkout -b本地分支名origin/远程分支名。

这个将会自动创建一个新的本地分支,并与指定的远程分支关联起来。

例如远程仓库里有个分支dev2,我本地没有该分支,我要把dev2拉到我本地。

若成功,将会在本地创建新分支dev2,并自动切到dev2上。

如果出现提示:

fatal: Cannot update paths and switch to branch ’dev2’ at the same time.

Did you intend to checkout ’origin/dev2’ which can not be resolved as commit?

表示拉取不成功。我们需要先执行。

git常用命令是什么

Git 常用命令速查:

git branch 查看本地所有分支。

git status 查看当前状态。

git commit 提交。

git branch -a 查看所有的分支。

git branch -r 查看远程所有分支。

git commit -am “init” 提交并且加注释。

git remote add origin git@192。168。1。119:ndshow。

git push origin master 将文件给推到服务器上。

git remote show origin 显示远程库origin里的资源。

git push origin master:develop。

扩展资料

git的简单介绍

git如C编程语言、C++、java等,编写计算机、手机或游戏机上的游戏。 目前流行的游戏编程语言为C++编程语言。

游戏编程接口为DirectX9.0、OpenGL和SDL(Simple DirectMedia Layer)等。现在手机上玩的游戏分为Android与IOS两种平台,分别是用java和object-c(或swift)。当然时下也流行一些跨平台的编程引擎,例如cocos2d-x、unity 3D等。

参考资料来源:Git-Git是什么