git用法

网站链接:learngitbranching
这是一个网页版的小游戏,可以帮助学习使用 Git 命令,了解 Git 的工作机制,有很多关卡,全面学习使用 Git 命令。

git-config

1. 配置命令:
git config --global user.name "xxx"
git config --global user.email xxxxxxxxxx@163.com
git config --global http.postBuffer 2M # 最大上传文件的大小
git config --global color.ui true
2. 查看配置:
git config --list
cat ~/.gitconfig # 查看配置文件
3. 直接修改配置文件
vim ~/.gitconfig

配置文件内容如下:

[user]
        email = 19805159366@163.com
        name = SEUZTh
[https]
[http]
        postBuffer = 2M
4. 删除配置
git config unset --global user.name

git-init

1. 初始化

• 使用当前目录作为Git仓库,我们只需使它初始化。

git init

该命令执行完后会在当前目录生成一个 .git 目录。
• 使用我们指定目录作为Git仓库。

git init newrepo
2. 查看生成的.git目录
cd .git
ls

除了config这个文件,.git的作用就是存储项目级别的配置信息。

git-commit

1. 显示工作目录和暂存区的状态
git status
2. 提交目录下所有文件
git add .
3. 提交指定文件
git add xxx.格式
4. 添加说明
git commit -m '说明'
5. 查看历史提交
git log

git-diff

1. 查看修改前后的区别
git-diff
加号表示添加的内容,减号表示删除的内容。
即使是修改某一行,也会显示删除和添加。
2. 查看暂存区和Reportory的区别
git diff --staged

git-rename

1. 查看状态

给文件重命名后查看git status会显示删除了一个文件,有一个文件未被跟踪

2. 告诉git,删除了某文件
git rm xxx.格式
3. 添加重命名后的文件
git add xxx.格式

git-mv

1. 重命名文件
git mv 旧文件.格式 新文件.格式
2. 移动文件或目录
git不会跟踪空白目录,新建目录后,查看状态时不会提示有新文件夹。
git mv xxx.格式 新文件夹/
git mv 旧文件夹 新文件夹/

查看状态时会提示重名了,新文件名包含文件路径。

git-rm

1. 删除文件
git rm xxx.格式

git-head

1. 恢复文件
git checkout HEAD -- xxx.格式 # HEAD代表最近的一次提交,--表示当前分支
2. 提交删除后恢复文件

如果是rm删除后并commit提交后,工作目录变成干净的,此时想要恢复的话,需要恢复到最近一次的上一次提交

git checkout HEAD^ -- xxx.格式 # ^表示上一次提交,两个^^上上次

git-revert

2. 还原某次提交
只查看有id号的一行
git log --oneline
git revert id号

git-reset

1. soft

不会影响到工作区和暂存区的东西。

git log --oneline
git reset --soft id号 # 将指针指向id这次提交

再次commit提交,会覆盖掉id号后面的提交。

2. mixed

把工作区和暂存区直接重置到一个提交的状态。

git reset --mixed id号

会发现暂存区中的东西不见了,需要git add添加并commit提交。

3. hard

会把暂存区的东西重置到指定的提交状态,并把指针指向这个提交

git reset --hard id1

会发现工作目录干净了。

git-branch

1. 查看项目所有的分支
git branch
“*”星号表示当前分支的位置。
2. 创建新分支
git branch xxx
3. 切换分支
git checkout xxx
4. 查看当前分支
git branch

git-checkout

1. 查看提交历史(显示是哪个分支上的)
git log --oneline --decorate
2. 切换到主分支
git checkout master

此时查看历史只能查看master分支上的提交。

3. 查看所有分支的历史提交
git log --oneline --decorate --all

git-branch-diff

1. 查看两个分支的区别
git diff master..某某某
2. 查看两个分支的同一文件的区别
git diff master..某分支 某文件

git-fast-forward

1. 合并某分支到master
git merge 某分支

这是一个Fast-forward,不会是一个新的提交,查看历史提交,会显示最后一次是在分支上进行的提交。

git diff master..某分支 对比后没有区别。

git-merge

1. 切换分支
git checkout 某分支
git branch # 查看当前分支
2. 快捷提交
git commit -am '说明'
git log --oneline # 查看历史提交
3. master和某分支均已修改的情况下合并

不能再使用Fast-forward。

git log --oneline --decorate --all -19 --graph # 查看10条,所有分支的历史提交
git branch # 查看当前所在分支
git merge 某分支 

输入合并提交的描述(可保持默认)
再次查看:

git log --oneline --decorate --all -19 --graph # 查看10条,所有分支的历史提交

git-conflict

1. 合并分支时出现冲突

将master合并到某分支时

git merge master

提示CONFLICT (content): Merge conflict in xxx.
到该文件中,git已经给标出冲突的内容,删掉我们不需要的,留下需要的即可:

<<<<<<< HEAD
内容
=======
内容
>>>>>>> master

接下来提交:

git add.
git commit # 这里可以不用写描述信息

把弹出的内容中Conflicts那几行代码删除,保存退出,即合并成功,查看一下日志:

git log --oneline --decorate --all --graph

rm-branch

1. 给分支重命名
git branch -m 已经存在的分支 新名字
2. 删除分支
git branch -d 某分支

stash

1.保存工作进度

查看状态:

git status

看到有已经修改过的,但想修改其他的提交,并不想提交它,就保存当前进度:

git stash save '修改了某某文件'
git status # 目录是干净的
2. 查看保存的工作进度的列表
git stash list
3. 对比工作进度和现在目录的区别
git stash show -p stash@{代号} # 代号使用git stash list查看
4. 恢复工作进度
git stash apply stash@{代号}
5. 删除工作进度
git stash drop stash@{0}
6. 恢复工作进度时直接删除工作进度
git stash pop stash@{代号}

log

1. 查看历史
git log1

默认显示全部提交日志。
f 键向下翻页,b键 向上翻页,q 键退出显示。

2. 显示简单的日志列表
git log --oneline
git log --oneline -行数
git log --oneline --author="作者"
3. 显示指定内容的提交

“内容”为说明中所写到的。

git log --oneline --grep='内容'
4. 显示指定日期的提交
git log --oneline --before='2021-08-03' # 2021.08.03之前的提交
git log --oneline --before='1 week' # 1周之前的提交
git log --oneline --before='3 days' # 3天之前的提交
5. 图形效果
git log --oneline --graph
6. 查看log详细使用手册
git help log

alias

1. 给常用命令添加别名

给checkout设置别名为alias:

git config --global alias.co checkout

查看配置:
cat ~/.gitconfig

2. 给命令行命令设置别名
vi ~/.bashrc

给“git checkout”设置别名,修改配置文件:

alias gco='git checkout'

sourch一下生效:

source ~/.bashrc1

ignore

让Git忽略某个文件:

git config --global core.excludesfile ~/.gitignore_global
vi ~/.gitignore_global

输入文件名。以后就会自动忽略这个文件。

ls -la #查看以.开头的文件

gitignore

1. 在项目根目录下指定需要忽略的文件
vi .gitignore

比如想忽略所有扩展名为“.log”的文件,输入:

*.log

保存退出。
提交:

git add.
git commit -m '添加了 .gitignore 文件'

Git 配置 socks5 代理

其中 port 根据代理给定的端口号进行设置:

git config --global http.proxy 'socks5://127.0.0.1:port'
git config --global https.proxy 'socks5://127.0.0.1:port'

如果你有代理可以这样使用,没有代理就只能看自己的网络是否能顺利访问 Github 了。

第一次 push 代码的步骤

git init
git add .
git commit -m '说明'
git remote add origin https://xxx.git
git push -u origin main1

Github 团队协作

参考链接:github 多人如何一起开发? - 视觉派Pie的回答 - 知乎

克隆的项目子模块作为新项目文件跟踪

我们经常会从 Github 上下载一些功能包放在自己的文件夹中作为子项目使用,这时,当我们试图将本地的代码 push 到 Github 上时,本地状态现实代码已经全部提交,但是自己的 Github 仓库里只有子项目的空文件夹,这是因为子文件夹下面含有 .git 文件夹,因此导致该子文件夹无法被 Git 跟踪!

先把 .git 这个文件夹删除(该文件夹在 Linux 下为隐藏文件,需要 Ctrl+h 才能现实。

git rm --cached folder # 其中 folder 为子文件夹。
git add folder

转载自:什么,你还不会用 Git 管理代码?我把我的学习笔记透漏给你吧,三小时掌握

posted @ 2022-02-22 15:42  之石先生  阅读(37)  评论(0编辑  收藏  举报