Git 笔记

.gitignore

指定 Git 忽略的文件。

当我们执行 git status 后,会列出未跟踪的文件。然而有的文件我们不希望提交到 Git,为此我们可以添加 .gitignore 文件,指定排除哪些文件。

例如,要排除 VisualStudio 编译后产生的二进制文件,以及其它无关文件,就可以使用 .gitignore。为此 GitHub 提供了很多 .gitignore 模板

.gitattributes

GitHub 会在你的项目上传后自动分析它是由何种语言编写,然后给出一个统计结果,如 C 40%, Java 55%, XML 5%.有时候我们希望进行干预,创建 .gitattributes 文件,加入

*.c linguist-language=C++

这样所有 .c 文件都会被识别为 C++。此外,还可以用 Git 属性让其知道哪些是二进制文件(以防 Git 没有识别出来),以及指示怎样处理这些文件。

.gitsubmodule

如果当前项目依赖其他Git项目,执行:

git submodule add https://github.com/example/test.git ./path/

该命令会创建一个 .submodule 文件。

为了递归地拉取仓库,执行:

git submodule update --init --recursive

自定义Git

DOS 行尾

在 Windows 和 Unix 切换时会出现行尾的问题。解决方案是在 Windows 执行:

git config --global core.autocrlf true

在 Linux 执行

git config --global core.autocrlf input

忽略权限

文件权限也是 Git 关心的一部分,可以关闭对文件权限变更的检查

git config core.filemode false

撤销修改

想让已经修改的某个文件回到上一次提交时的状态:

git checkout 文件名

取消暂存

git reset HEAD 文件名

修改最新commit的注释

git commit --amend

文件名区分大小写

git config core.ignorecase false

push 记住密码

git config --global user.name yourusername
git config --global user.email your@email.com
git config --global credential.helper store

Git 打包压缩文件

git archive --format=zip --output master.zip master

推送本地分支到远端

git push origin your_local_branch:your_remote_branch

多个上游仓库

假设你打算对一个知名的开源项目进行一些修改,并通过你的私有仓库托管。这时你需要在你的私有仓库(譬如 GitLab)中创建一个项目。接下来克隆远程仓库并推送到你的私有仓库:

git clone git@github.com:example/example.git
cd example
git remote add upstream git@your_domain.com:example/example.git
git push -u upstream master

我们希望在一个自己的分支上进行操作,并将其关联到你的私有仓库上:

git checkout -b work
git push --set-upstream upstream work

如果原始仓库存在更新,通过如下命令来拉取:

git remote update

打 tag

git tag -a v1.0 -m "first release"
git push origin v1.0

或者:git push --tags

删除远端tag

git tag -d tag-name
git push origin :refs/tags/tag-name

GIt stash

当你的开发进行到一半,但是代码还不想进行提交 ,然后需要同步去关联远端代码时使用:

git stash
git pull
git stash pop

Git Rebase

基于远程分支开发,然后远程分支更新了,为了提交到远程分支,传统做法是 commit,fetch origin,merge。这种方式的缺点是,之后如果 push 的话,上游的历史记录就会看到你的这次 merge。

另一种方法是先 stash,然后 fetch origingit rebase orgin 让你的当前分支重新基于最新的远程分支,然后 commit。也可以用 git pull --rebase,效果是一样的。

合并 commit

如果你切换到另外一个分支进行开发,在上面随意地 commit,之后你在将该分支合入一个主分支时,为了隐藏那些随意的中间 commit,应该使用 merge --squash 将诸多 commit 合并成一个。

另一种方法:

git reset 以前的某个commit
git add .
git commit

列出所有文件

git ls-files

清除所有未跟踪的文件

git clean -fd

合并其他分支的某一个提交

假设我们有个分支 v2.0,另外还有个开发版本的分支 v3.0,想增加一个 v3.0 中的功能到 v2.0 中,可以使用cherry-pick:

git checkout v2.0
git cherry-pick 38361a55

其中这个分支号位于位于v3.0分支中。 可以cherry-pick一个区间的commit:

git cherry-pick <start-commit-id>..<end-commit-id>

<start-commit-id><end-commit-id> 之间(左开右闭,不包含 start-commit-id)的提交cherry-pick到当前分支;

git cherry-pick <start-commit-id>^..<end-commit-id>

<start-commit-id><end-commit-id> 之间(闭区间,包含start-commit-id)的提交cherry-pick到当前分支。

### Git 使用教程与学习笔记整理 Git 是一个分布式版本控制系统,广泛应用于软件开发中的代码管理和团队协作。以下是关于 Git 的使用教程和学习笔记的总结,涵盖基础命令、安装方法及常用操作。 #### 1. Git 安装方法 在不同的操作系统下,Git 提供了多种安装方式: - **Linux 系统**:可以通过包管理器安装,例如在基于 Debian 的系统上使用以下命令: ```bash sudo apt-get install git ``` 如果需要从源码编译安装,则可以依次执行 `./config`、`make` 和 `sudo make install` [^2]。 - **Windows 系统**:推荐使用官方提供的安装包进行安装。此外,已安装 Git 的用户可通过以下命令更新到最新版本: ```bash git update-git-for-windows ``` #### 2. 基础命令 Git 提供了一系列命令用于日常的版本控制操作: - **初始化仓库**: ```bash git init ``` 该命令用于创建一个新的 Git 仓库。 - **克隆远程仓库**: ```bash git clone <仓库地址> ``` 克隆现有仓库到本地,便于后续开发和修改 [^3]。 - **查看状态**: ```bash git status ``` 显示当前工作目录的状态,包括哪些文件已被修改但尚未提交。 - **添加文件至暂存区**: ```bash git add <文件名> ``` 将指定文件添加到暂存区,准备提交。若要添加所有文件,可使用 `git add .` [^3]。 - **提交更改**: ```bash git commit -m "提交信息" ``` 将暂存区的内容提交到本地仓库,并附带一条描述性的信息 [^3]。 - **推送更改至远程仓库**: ```bash git push origin <分支名> ``` 将本地提交的更改推送到远程仓库的指定分支上 [^3]。 - **拉取远程更改**: ```bash git pull origin <分支名> ``` 从远程仓库获取最新的更改并合并到本地分支中。 #### 3. 分支管理 分支管理是 Git 的核心功能之一,允许开发者在同一项目上并行开发多个特性或修复 bug。 - **查看分支**: ```bash git branch -v ``` 列出所有本地分支及其最新的提交记录 [^3]。 - **创建新分支**: ```bash git branch <分支名> ``` 创建一个新的分支,但不会自动切换到该分支 [^3]。 - **切换分支**: ```bash git checkout <分支名> ``` 切换到指定的分支,以便在该分支上进行开发 [^3]。 - **创建并切换分支**: ```bash git checkout -b <分支名> ``` 一次性完成创建新分支并切换的操作 [^3]。 - **合并分支**: ```bash git merge <分支名> ``` 将指定分支的内容合并到当前分支中 [^3]。 - **删除分支**: ```bash git branch -d <分支名> ``` 删除不再需要的分支 [^3]。 #### 4. 远程仓库操作 远程仓库通常用于团队协作,确保所有成员都能访问相同的代码库。 - **添加远程仓库**: ```bash git remote add origin <远程仓库地址> ``` 将远程仓库与本地仓库关联起来 [^3]。 - **查看远程仓库信息**: ```bash git remote -v ``` 显示所有远程仓库的详细信息 。 - **推送本地分支到远程仓库**: ```bash git push -u origin <分支名> ``` 将本地分支推送到远程仓库,并设置为默认跟踪分支 [^3]。 #### 5. 日常开发流程 在实际开发过程中,建议遵循以下步骤以保持良好的版本控制习惯: 1. 拉取远程仓库的最新代码: ```bash git pull origin main ``` 2. 添加所有修改的文件到暂存区: ```bash git add . ``` 3. 提交更改并附带清晰的提交信息: ```bash git commit -m "描述本次提交的内容" ``` 4. 推送更改到远程仓库: ```bash git push origin main ``` 通过以上流程,可以有效地管理项目的版本历史,并与其他开发者协同工作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值