下载安装
设置账户
设置用户名
bashgit config --global user.name "yourname"
设置邮箱
bashgit config --global user.email "youremail"
初始化仓库
将项目初始化git仓库
bashgit init
添加文件到暂存区
添加指定文件,可以多个文件,用空格隔开
bashgit add file1 file2
添加全部文件
bashgit add .
bashgit add -A
git add .
和git add -A
的区别git add .
:这个命令会将当前目录及其子目录下的所有改动(包括修改过的和新添加的文件)添加到暂存区。但是它不会处理那些已经被 Git 跟踪但在工作树中被删除的文件。换句话说,如果你删除了一个已经被跟踪的文件,这个删除操作不会被git add .
自动记录到暂存区中。git add -A
:这是更全面的选项,它等同于同时使用了git add .
、git add -u
。也就是说,它不仅会添加新的和修改过的文件到暂存区,还会标记那些在工作树中被删除的已被跟踪的文件。因此,它能够确保所有类型的更改(新增、修改、删除)都被考虑并添加到了暂存区。
为了确保涵盖所有情况,使用
git add -A
是一个更为保险的选择
提交文件
提交文件到版本库
bashgit commit -m '提交说明'
修改 commit 备注
bashgit commit --amend
查看状态
git status
比较差异
git diff filename
查看日志
查看日志
bashgit log
显示一行的简略信息
bashgit log --pretty=oneline
显示每次提交的差异信息,按 ctrl + f 进行翻页查看差异
bashgit log -p
自定义显示格式
- bash
git log --pretty=format:"%h - %an, %ar : %s"
- bash
git log --pretty=oneline
查看某次提交修改了哪些文件
bashgit show --name-only [commit]
查看文件列表而不需要其他详细信息,可以使用 --name-only 参数
bashgit diff-tree --no-commit-id --name-only -r [commit]
将git输出保存到txt文件
bashgit log --encoding=GB2312 --pretty=format:"%h - %an, %ad : %s" --date=format:'%Y-%m-%d %H:%M:%S' >> C:\Users\admin\Desktop\temp_log.txt
撤销更改
撤销最近的一次提交,并将该提交的更改放回暂存区
bashgit reset --soft HEAD^
这里,
HEAD^
表示当前提交的前一个提交。执行这条命令后,Git 会将你的头指针移动到HEAD^
这个提交,但是不会改变工作目录和暂存区,所以你最近一次提交的所有更改将会被保留在暂存区中。完全撤销最后一次提交,并让所有更改都回到未暂存的状态:
可以使用
--mixed
选项(这是git reset
的默认选项):bashgit reset HEAD^ # 或者明确指定: git reset --mixed HEAD^
更改将会被保留在工作目录中,但会被取消暂存,意味着你需要重新选择哪些更改需要再次被添加到暂存区
取消之前通过 git add 命令对特定文件所做的“添加到暂存区”的操作
bashgit reset HEAD 文件名
丢弃工作目录中对指定文件的未提交更改,将该文件恢复到最近一次提交,不会影响 add 添加到暂存区的文件
bashgit checkout -- filename
版本回退
退回到上个版本
bashgit reset --hard HEAD^
退回到上上个版本
bashgit reset --hard HEAD^^
退回到之前100个版本
bashgit reset --hard HEAD~100
退回指定版本,版本号不需要写全,写前面几位即可
bashgit reset --hard 版本号 # 例如 git reset --hard 1094a
移除版本库中文件的追踪
移除
.env
文件的git追踪停止追踪文件但不删除文件
使用
git rm --cached
命令来停止对指定文件的追踪。这个命令会将文件从索引(即暂存区)中移除,但是保留工作目录中的文件。对于.env
文件,可以这样做:bashgit rm --cached .env
如果是整个目录下的所有
.env
文件,可以使用以下命令:bashgit rm -r --cached path/to/env/files/
更新
.gitignore
文件为了确保
.env
文件不会在未来被意外地添加到版本库中,你应该在项目的.gitignore
文件中加入相应的忽略规则。比如,在.gitignore
文件中添加一行:.env
或者如果你想忽略特定目录下的所有
.env
文件,可以添加类似如下的一行:path/to/env/files/*.env
提交更改:完成以上两步之后,你需要提交这些更改
bashgit commit -m "停止追踪.env文件"
通知团队成员
确保让你的团队知道
.env
文件已经被移除了版本控制并且应该被添加到各自的.gitignore
文件中,这样他们就不会意外地将其重新添加到仓库中
远程仓库
查看远程仓库
git remote
查看远程仓库及对应地址
git remote -v
添加远程仓库
git remote add <shortname> <url>
从远程仓库中抓取与拉取
git fetch
bashgit fetch <remote>
- 作用:
git fetch
命令会访问远程仓库,并将远程仓库中的更新拉取到本地仓库的远程分支(比如 origin/master),但不会自动合并这些更新到当前所在的分支。 - 使用场景:当你想要查看远程仓库中有哪些更新,但是暂时不想把这些更新合并到你的工作中时,可以使用这个命令。它允许你在合并之前先审查这些变化。
- 优点:由于它不会自动进行合并,因此给了你更多的控制权来决定如何处理这些更新,例如你可以选择性地合并某些变更或在合并前解决可能的冲突。
- 作用:
git pull
- 作用:
git pull
实际上是一个组合命令,相当于先执行了git fetch
然后再执行git merge
(或者在配置了 rebase 的情况下执行git rebase
)。也就是说,它不仅会下载远程仓库的最新数据,还会尝试将那些更新合并到你的当前分支中。 - 使用场景:当你确定想要将自己的工作与远程仓库的最新状态同步,并且愿意接受合并带来的任何潜在冲突时,可以使用
git pull
。 - 优点:简化了获取并集成远程更改的过程,适合于希望快速同步最新代码而不介意立即处理合并冲突的情况。
- 作用:
推送到远程仓库
git push <remote> <branch>
# 示例
git push origin master
查看远程仓库
git remote show <remote>
# 示例
git remote show origin
远程仓库的重命名与移除
修改一个远程仓库的简写名
bashgit remote rename <old name> <new name>
移除一个远程仓库
bashgit remote remove <name> # 或者 git remote rm <name>
修改本地 git 仓库的 remote 地址
git remote set-url origin <remote_url>
# 示例
git remote set-url origin https://github.com/username/demo.git