Git 命令记录总结

工作区的内容直接进行提交:

git commit -am"说明文字"

提交工作区的内容到暂存区:

git add . 提交所有修改和新建的数据到暂存区

git add -u 相当于 git add -update 提交所有删除和修改的文件到暂存区

git add -A 相当于 git add -all 提交所有修改、删除、替换、新增的文件到暂存区

 

重命名文件

git mv readme.txt readme.md //重命名文件 readme.txt 为 readme.md

撤销暂存区变化:

git reset --hard

git log 命令:

git log --oneline //一次 commit 只占一行

git log -n4 //查看最近提交的4个 commit

git log -n4 --oneline //以一行形式查看最近提交的4次 commit

git log -oneline --graph //以一行,图形化的方式查看版本演化历史

 

• git log --all 查看所有分支的历史

• git log --all --graph 查看图形化的 log 地址

• git log --oneline 查看单行的简洁历史。

• git log --oneline -n4 查看最近的四条简洁历史。

• git log --oneline --all -n4 --graph 查看所有分支最近 4 条单行的图形化历史。

• git help --web log 跳转到git log 的帮助文档网页

 

查看分支:

git branch -v

新建分支:

git checkout -b temp 415c5c808 //新建 temp 分支

删除本地分支

git branch -d <BranchName>

 

git目录:

//cat命令主要用来查看文件内容,创建文件,文件合并,追加文件内容等功能。

cat HEAD 查看HEAD文件的内容 

git cat-file 命令 显示版本库对象的内容、类型及大小信息。

git cat-file -t b44dd71d62a5a8ed3 显示版本库对象的类型

git cat-file -s b44dd71d62a5a8ed3 显示版本库对象的大小

git cat-file -p b44dd71d62a5a8ed3 显示版本库对象的内容

 

HEAD:指向当前的工作路径

config:存放本地仓库(local)相关的配置信息。

refs/heads:存放分支

refs/tags:存放tag,又叫里程牌 (当这次commit是具有里程碑意义的 比如项目1.0的时候 就可以打tag)

objects:存放对象 .git/objects/ 文件夹中的子文件夹都是以哈希值的前两位字符命名 每个object由40位字符组成,前两位字符用来当文件夹,后38位做文件。

 

克隆远程仓库:

git clone "git地址"

查看分支:git branch -r (远程分支) -a(远程加本地分支)

新建分支:git branch "分支名"

基于远程分支在本地新建分支:git checkout -b "本地分支名" "远程分支名"

git checkout -b feature/add_commands origin/feature/add_commands

切换分支 git checkout “分支名”

 

拉取远程分支到本地:

$ git fetch <远程主机名> <分支名>

$ git fetch origin master 拉取origin主机的master分支

所有取回的更新,在本地主机要用“远程主机名/分支名”的形式读取。

 

$ git checkout -b newBrach origin/master

在origin/master分支的基础上新建一个newBranch分支。

 

git pull 命令的作用是,取回远程主机的某个分支的更新,再与本地的指定分支合并。

$ git pull <远程主机名> <远程分支名>:<本地分支名>

git pull origin next:master 拉取origin主机的next分支,与本地的master分支合并

 

推送本地分支到远程分支:

$ git push <远程主机名> <本地分支名>:<远程分支名>

git push origin master:develop 推送本地master分支到远程develop分支

 

删除远程分支:

git push origin :master 等同于 git push origin --delete master (删除origin主机的master分支,推送本地空分支到远程分支)

 

HEAD和branch:

git diff HEAD HEAD^1 可以查看最近两次提交的差异.

开始讲HEAD的使用,以及PARENT符号^和~。我觉得这里几个地方没讲清楚

1 一个节点,可以包含多个子节点(checkout 出多个分支)

2 一个节点可以有多个父节点(多个分支合并)

3 ^是~都是父节点,区别是跟随数字时候,^2 是第二个父节点,而~2是父节点的父节点

4 ^和~可以组合使用,例如 HEAD~2^2

 

如何修改最新的 commit 的 message 信息?

git commit --amend

按下字母键c, 可以修改注释信息

按下Esc(退出编辑状态), 接着连按两次大写字母Z, 就能退出来了。

 

如何修改老旧的 commit 的 message 信息?

1. git rebase -i "commit 父节点"

2. r "commit" "message"

rebase 命令的使用仅限于在未提交到远程服务器的commit. 因为rebase 命令会改变 commit 的 hash 值, 在团队开发过程中如果将来要溯源、基于构建历史拉取补丁分支等就会带来极大不便.

 

怎样把连续的多个commit整理成1个?

1. git rebase -i "要合并的commit 的父节点 hash"

2. squash "commit hash 值"

https://time.geekbang.org/course/detail/145-72797

 

怎样把间隔的几个 commit 整理成1个?

1. git rebase -i "最老的 commit 节点的 hash"

2. pick commit 要合并到的 目标commit 节点

squash commit 待源节点

https://time.geekbang.org/course/detail/145-72798

 

怎样比较暂存区和HEAD 所含文件的差异(git 已提交的文件)

git diff -cached

 

如何查看工作区和暂存区的区别?

git diff 查看所有文件的区别

git diff -- '文件名字' 查看具体某个文件的区别

 

如何让工作区恢复成和暂存区一样?

git checkout -- '文件名字'

 

消除最近的几次提交

git reset --hard <要恢复到的commit id>

 

如何查看不同提交的指定文件之间的差异?

git diff 分支名字1 分支名字2 -- 文件名字 ,查看不同分支,指定文件的差异

git diff commit1 commit2 -- 文件名字, 查看不同提交文件的差异

 

如何删除文件?

git rm 文件名字 , git 会把文件从工作区和暂存区删除,以后的提交也不会出现该文件了。

 

如何版本回退?

git reset --hard <commit id>

git reset --hard HEAD 将工作和暂存区恢复成头指针(版本库)一样

git reset --hard HEAD^ 回退到上一次提交

git reset --hard HEAD^^ 回退到上上一次提交

git reflog 可以查看未来的版本记录

 

如何撤销修改?

git checkout -- “文件名字” git checkout -- readme.txt, 把文件在工作区的修改全部撤销,撤销可能有两种情况。

1. readme.txt 自修改后还没有被放到暂存区,此时撤销修改就回到和版本库一模一样的状态;

2. readme.txt 已经添加到暂存区后,又做了修改,此时撤销修改就回到添加到暂存区后的状态;

就是让这个文件回到最近一次 git coomit 或 git add 时的状态。

注意:git checkout -- filename 命令中的 -- 很重要,没有-- 就变成了“切换到另一个分支”的命令。

 

git reset HEAD <file> 可以把暂存区的修改撤销掉[unstage], 重新放回到工作区。

 

git reset 命令既可以回退版本,也可以把暂存区的修改回退到工作区。当使用 HEAD 时,表示最新的版本。

 

临时处理其他任务时,需要把工作区的内容保存起来,可以使用 git stash 命令。

1. 先执行 git stash 进行保存。

2. 处理其他任务后,可以使用 git stash list查看保存 stash 保存列表

3. 使用git stash apply 恢复之前的工作内容,但是没有从保存列表里面删除。或者使用git stash pop恢复之前的内容,从保存列表里面删除了。

 

本地仓库和远程仓库建立联系

查看本地仓库和远程仓库的关联,使用 git remote -v

添加本地仓库换远程仓库的关联,使用 git remote add 远程库的名字 远程库的地址,例如:git remote add origin https://github.com/wangmingshun/studygit.git

Origin 就是远程库的名字,链接是远程库的地址

将本地库推送到远端:git push Origin Master, 意思是将本地的 Master 分支推送到远程 Origin。如果使用 git push -u origin master,将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

 

当本地和远程的仓库master 分支不同,没有关联时。可以先把远程的 master 分支拉取到本地,[git fetch github(远程主机名) master],然后在本地将本地的 master 分支和远程的 master 分支做合并。

git merge -h 查看合并帮助信息

git merge --allow-unrelated-histories github/master 合并github上的master分支(两分支不是父子关系,所以合并需要添加 --allow-unrelated-histories)

本地分支往远端分支做 push 推送的时候,如果远程分支不是本地分支的祖先,push 的时候会出错。这个时候两者的关系不是 fast forward,如果远程分支是本地分支的祖先,那么两者的关系是 fast forward。

 

 

团队协作禁止使用的操作:

git push -f <===> git push -force 当本地向远程推送 push 时,如果发生冲突(no fast forward,远程最近的 commit 节点不是本地 commit 节点的父节点),则强制进行 push 操作。默认情况下,如果 push 发生冲突,git 会取消操作,不进行任何操作。

git reset 版本回退,然后进行修改,提交,git push -f 会把其他的 commit 整没有。

 

常用git stash 命令:

(1)git stash save "save message"  : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。

(2)git stash list  :查看stash了哪些存储

(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}

(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show  stash@{$num}  -p ,比如第二个:git stash show  stash@{1}  -p

(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1} 

(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}

(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储

(8)git stash clear :删除所有缓存的stash

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值