Git Command

1、设置本地账户和邮箱

-- 指定某个具体的仓库用户
git config --local user.name 'test'
git config --local user.email 'test.com'

-- 全局所有的仓库用户
git config --global user.name 'test'
git config --global user.email 'test.com'

-- 所有系统登录的用户
git config --system user.name 'test'
git config --system user.email 'test.com'

-- Show all user accounts
git config --local --list 
git config --global --list 
git config --system --list 

2、填加到暂存区并提交

-- 填加指定文件到暂存区
git add readme

-- 填加 git stasus 监控中的文件到暂存区
git add -u

-- 填加所有变动的文件到暂存区
git add .

--提交到版本仓库
git commit -m'Add readme'

--填加指定文件到暂存区并同时提交到版本仓库
git commit -am'Add readme'

3、清除暂存区变动

-- 清除暂存区所有变动,恢复仓库改动前的初始状态
git reset --hard

4、重命名文件

-- 直接重命名readme 文件  (将三个步骤合并成一个:1. mv readme readme.md   2.git add readme.md   3. git rm readme)
git mv readme readme.md

5、版本历史

-- 显示所有版本历史
git log

-- 简洁的显示所有版本历史
git log --oneline

-- 可以指定数量 并且 简洁显示
git log -1
git log -n4
git log -n4 --oneline

6、本地分支

-- 查看本地有多少分支
git branch -v

-- 查看本地和远程有多少分支
git branch -av

-- 根据某个版本创建一个分支,并切换到该分支
git checkout -b temp 89f15e6

-- 此时只显示当前分支的提交历史
git log 

-- 显示所有分支的提交历史
git log --all

-- 显示所有分支的提交历史(图形化显示)
git log --all --graph

-- 简洁的 显示所有分支的提交历史(图形化显示)
git log --all --oneline --graph

-- 简洁的 显示所有分支的提交历史(图形化显示)  指定数量
git log --all --oneline --graph -n4

7、git自带图形化工具

gitk

gitk --all

8、查看文件的类型

-- 查看类型
git cat-file -t aceled38t2b  

-- 查看内容
git cat-file -p aceled38t2b  
-- 查询文件目录内容
find .git/objects -type f

9、分离头指针

-- 意思是切换到了一个没有分支名的分支,这个分支,在你切换回其他分支后,大概率会被git回收
git checkout 998c38813

-- 一般用作尝试测试代码,试验,可以使用,测试完切换其他分支,废弃就好

-- 给分离头指针创建分支名称
git branch  fix_css  998c38813

10、分支对比

-- 指定分支对比
git diff 3d32423  ds23423412

-- 当前HEAD分支 与 父级分支 对比
git diff HEAD HEAD^
git diff HEAD HEAD~1

-- 当前HEAD分支 与 父级分支的父级 对比
git diff HEAD HEAD^^
git diff HEAD HEAD~2

-- 当前HEAD分支 与 父级分支的父级 对比  以此类推
git diff HEAD HEAD^^
git diff HEAD HEAD~2

11、分支删除

-- 删除分支
git branch -d  ds23423423

-- 删除没有进行meager的分支
git branch -D  ds23423423

12、修改commit中的message

-- 修改最新一次的commit中的message
git commit --amend

-- 修改旧的commit中的message  
-- 首先进入第一个页面,将 pick 修改为 r , 然后wq! 进入第二个页面修改message即可    (原理是采有分离头指针,作为中介进行变更)
-- 只能用于本地未提交远程仓库时,如果修改已经提交到远程仓库的commit信息,可能会使其他协作者的分支有问题。
git rebase -i  3d1121323132(要修改的commit的父级commit ID)

13、把连续的多个commit合并成一个commit

-- 首先进入第一个页面,将 要合并的commit 前面的 pick 修改为 s 除了父级pick, 要合并的commit 前的pick 也要保留一个, 其余全改成 s 然后wq!
 进入第二个页面新增 message,整合 message 即可
git rebase -i  3d1121323132(要修改的commit的父级commit ID)

14、把间隔的多个commit合并成一个commit

-- 首先进入第一个页面,将 要合并的commit 前面的 pick 修改为 s 除了父级pick, 要合并的commit 移动到一起,然后把前面的pick 也要保留一个, 其余全改成 s 然后wq!
 进入第二个页面新增 message,整合 message 即可
git rebase -i  3d1121323132(要修改的commit的父级commit ID)

-- 如果没有跳转第二个页面,则执行下面语句
git rebase --continue

15、对比暂存区和HEAD之间的差异

git diff --cached

16、对比工作区和暂存区之间的差异

-- 默认显示所有变动
git diff

-- 指定显示某个文件的变动
git diff -- readme.md

-- 指定显示多个文件的变动
git diff -- readme.md style/style.css

17、将暂存区恢复成和HEAD一样(意思是取消暂存区内的文件修改)

-- 取消暂存区所有的add
git reset HEAD

-- 取消 工作区 和 暂存区 所有变动,恢复到HEAD时的状态
git reset --hard HEAD

-- 取消暂存区指定的一个add
git reset HEAD  readme.md
git reset HEAD -- readme.md
git restore --staged readme.md

-- 取消暂存区指定的多个add
git reset HEAD  readme.md style/style.css
git reset HEAD -- readme.md style/style.css
git restore --staged readme.md style/style.css

18、将工作区恢复成和暂存区一样(意思是取消工作区内的文件修改)

-- 取消工作区指定的一个文件修改
git checkout -- index.html
git restore -- index.html

19、消除最近的几次commit提交(会丢掉之前的修改)慎用!!

git reset --hard d2341dsf3

-- 取消 工作区 和 暂存区 所有变动,恢复到HEAD时的状态
git reset --hard HEAD

20、查看不同提交(commit)的指定文件的差异

-- 显示所有的文件的差异
git diff temp master  

-- 显示指定的文件的差异(此处采用分支名进行比较, 也可以用commit ID)
git diff temp master -- index.html

21、正确的删除文件

-- 一般情况 先工作啊删除readme  再git rm readme 提交到暂存区
rm readme
git rm readme

-- git 中 正确的删除 直接删除并提交到暂存区
git rm readme

22、新增其他紧急任务时,工作区变动保存到隐藏区

-- 保存起来
git stash

-- 查看所有的stash
git stash list 

--恢复 隐藏区的变动 到 工作区  同时  仍然 丢掉 隐藏区 保存的已有记录
git stash pop

--恢复 隐藏区的变动 到 工作区  同时 隐藏区 仍然保存的有记录
git stash apply

23、指定不需要Git管理的文件

-- 新增 .gitignore文件

echo "doc" > .gitignore

-- doc 和 doc\ 的区别

-- doc 包含 doc 和 doc\ 文件夹 

-- doc\ 只包含 doc\ 文件夹

24、Git 仓库备份到本地

-- 哑协议  传输过程不可见  --bare 不包含工作区
git clone --bare  /test/git_learnging/.git ya.git

-- 智能协议  传输过程可见 速度较快
git clone --bare  file:///test/git_learnging/.git zhineng.git

25、指定远程仓库

-- 查看仓库对应的所有的远程地址
git remote -v

-- 填加远程仓库的地址
git remote add zhineng file:///test/git_learnging/.git

-- 删除远程仓库的地址
git remote remove zhineng

26、同一文件遇到冲突

-- 先 vim 修改 冲突文件

-- 查看状态
git status

-- 提交处理冲突之后的commit
git commit -am'Resolved conflict by hand with 4 git commands' 

-- 返回修改冲突之前的状态
git merge --abort

26、同一文件名修改遇到冲突

-- 更新到本地
git pull

-- 查看状态
git status

-- 将不需要的删掉
git rm index.htm

-- 提交即可
git commit -am'fix: index.html1 to indexhtml2'

27、把本地仓库同步到GitHub

git remote add github git@github.com:test/git_learning.git

git remote -v

-- 把所有的分支和其内容 推送到github 上
git push github --all

28、将github上的 master 分支 同步到本地 master (不相连的两个master)

git pull github master
等同于 执行了以下两个命令
git fetch github master
git merge --allow-unrelated-histories github/master
-- 此时会跳出页面,填写merge的原因,不想写,wq! 退出即可
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值