项目开发Git常用指令指南
Git 教程:项目开发管理视角
1. Git 简介
Git 是一个分布式版本控制系统,用于跟踪对文件和目录的更改,以便在项目中维护历史记录。它允许团队成员在不影响彼此的情况下工作,并在需要时合并他们的更改。
2. 安装 Git
- 在 Linux 上:
sudo apt-get install git - 在 macOS 上: 通过 Homebrew
brew install git - 在 Windows 上: 下载并安装 Git for Windows
3. 配置 Git
# 设置全局用户名
git config --global user.name "My Name"
# 设置全局用户邮箱
git config --global user.email "my@example.com"
双引号内的内容替换成自己的用户名和邮箱
如果想要个人信息只在本仓库有效,去掉--global
第一种方法:
使用当前目录作为Git仓库:git init
绑定本地文件夹和Git仓库:
git remote add origin <http:........>
第二种方法:
将仓库项目clone到当前文件夹下
git clone <http:.........>
cd到本地仓库中
4. 初始化仓库
- 创建一个新的仓库或使用现有的仓库:
# 创建新仓库
git init
# 克隆现有仓库
git clone https://github.com/username/repository.git
5. 常用命令
a. 文件状态查看
git status # 查看当前仓库的状态
b. 添加文件到暂存区
git add <file> # 添加单个文件
git add . # 添加所有修改过的文件
c. 提交更改
git commit -m "Commit message" # 提交暂存区的更改
d. 查看提交历史
git log # 查看所有提交历史
git log --oneline # 简化输出
e. 分支管理
git branch # 列出所有分支
git branch <branch-name> # 创建新分支
git checkout <branch-name> # 切换到指定分支
git checkout -b <branch-name> # 创建并切换分支
git merge <branch-name> # 合并分支
git branch -d <branch-name> # 删除分支
git push origin –-delete <remote-branch> #删除远程分支:
f. 远程仓库操作
git remote add origin <repository-url> # 添加远程仓库
git push origin <branch-name> # 推送本地分支到远程仓库
git pull origin <branch-name> # 从远程仓库拉取并合并到当前分支
6. 解决冲突
当合并或拉取更改时,可能会遇到冲突。Git 会标记冲突的文件,则需要手动解决这些冲突。
- 使用文本编辑器打开冲突的文件,查找冲突标记。
- 编辑文件以保留所需的更改,删除冲突标记。
- 再次执行
git add和git commit。
7. 特殊操作
-
撤销更改:
git checkout -- <file> # 撤销未提交的更改 git reset HEAD <file> # 从暂存区移除文件 git revert <commit-hash> # 撤销特定提交 -
标签管理:
git tag <tag-name> # 创建标签 git push origin <tag-name> # 推送标签到远程仓库
8. 补充
- 使用
git diff来查看文件的差异, 即查看自己修改了什么。 - 在推送前,使用
git fetch和git merge来获取并合并远程仓库的最新更改。 - 经常使用
git log和git status来监控项目状态。
本地仓库
本地仓库是指存储在我们的本地计算机上的Git仓库。它包含了项目的完整历史记录,包括所有版本的文件和元数据。本地仓库是开发者进行日常开发工作的基础,我们可以在无需网络连接的情况下进行代码编辑、提交更改、创建分支等操作。本地仓库通常位于项目目录下的一个名为.git的隐藏文件夹中。
远程仓库
远程仓库则是位于另一台计算机(通常是服务器)上的Git仓库。它充当多个开发者之间共享和同步代码的中心点。远程仓库可以是公开的,比如GitHub、GitLab或Bitbucket上的仓库,也可以是私有的,设置在公司内部的服务器上。当我们向远程仓库推送(push)提交时,实际上是在把本地仓库的更改同步到这个中心仓库,使得其他团队成员能够获取更新。同样,我们可以从远程仓库拉取(pull)最新的更改,以保持本地仓库与远程仓库同步。
本地仓库与远程仓库的关系
本地仓库和远程仓库之间的交互主要是通过推送(push)和拉取(pull)操作来实现的。当我们在本地仓库中做出更改并提交后,可以将这些更改推送到远程仓库,这样其他团队成员就可以看到并合并这些更改。同样,为了保持本地仓库是最新的,我们需要定期从远程仓库拉取最新的提交。
样例
假设本人从远程仓库clone了一份代码,然后在本地做了修改,现在需要把新版本上传到远程仓库的分支(brach1)中,相关指令如下:
-
查看状态:首先确认哪些文件已被修改。
git status -
添加修改:将修改后的文件添加到暂存区。
git add <file1> <file2> ...或者,如果你想添加所有修改:
git add . -
提交修改:提交暂存区的修改到本地仓库。
git commit -m "Commit message describing the changes" -
切换/创建分支:如果本地不存在branch1分支,则需要创建它;如果已存在,则切换到该分支。
git checkout -b branch1如果branch1分支已存在,只需切换到该分支:
git checkout branch1 -
推送分支:将本地的branch1分支推送到远程仓库。如果远程仓库中也存在branch1分支,那么直接推送即可;如果没有,需要先创建远程的branch1分支。
git push origin branch1如果这是第一次推送该分支到远程仓库,并且远程没有对应的分支,可能需要指定分支名:
git push -u origin branch1 -
解决冲突(如果有) :在推送过程中,如果远程分支有更新,而本地分支没有及时拉取这些更新,则可能需要先拉取远程分支的最新变化,解决可能的冲突后再重新尝试推送。
git pull origin branch1解决完任何冲突后,再次提交:
git commit
在将代码pull到branch1分支以后,我现在如果想把branch1分支合并到主分支(main),需要进行如下操作:
-
切换到
main分支: 首先,确保当前在main分支上。如果不是,请切换到main分支。git checkout main -
拉取最新的更改: 在合并之前,最好先从远程仓库拉取最新的更改,确保
main分支是最新的。这样可以避免不必要的合并冲突。git pull origin main -
合并
branch1到main: 使用git merge命令将branch1分支的更改合并到main分支。git merge branch1如果有冲突,Git会停止合并,并标记出冲突的文件。此时,需要手动解决这些冲突。编辑冲突文件,删除冲突标记,并选择要保留的更改。
-
解决冲突: 解决完所有冲突后,使用
git status查看哪些文件已经被修改,并使用git add将解决冲突后的文件添加到暂存区。git status git add <conflicted_file> -
提交合并: 所有冲突解决后,可以提交这次合并。
git commit -m "Merge branch1 into main" -
推送更改到远程仓库: 最后,将更改推送到远程仓库的
main分支。git push origin main如果远程仓库设置了保护规则,可能需要强制推送(
git push --force或git push -f),但这通常不推荐,因为这可能会覆盖其他人的工作。 -
清理本地分支(可选): 如果不再需要
branch1,可以考虑将其删除,以保持本地仓库的整洁。git branch -d branch1
以上步骤将安全地将branch1分支的更改合并到main分支,并解决可能出现的任何冲突。