版本控制系统的基本概念
- 版本库(Repository):存储项目版本的本地或远程存储库。
- 工作副本(Working Copy):可编辑的项目本地副本。
- 文件(File):项目中的单个文件。
- 版本(Version or Revision):项目在某一时刻的内容记录。
- 更改(Change or Diff):两个版本之间的差异。
- 头(Head):当前版本。
版本控制系统的功能
- 可靠:保持版本,只要我们需要它们;允许备份。
- 多文件:跟踪项目的多个文件版本。
- 有意义的版本:记录更改的内容和原因。
- 恢复:恢复旧版本,部分或全部恢复。
- 比较版本:比较不同版本的差异。
- 查看历史:查看整个项目或单个文件的历史。
- 不仅仅用于代码:还可以用于文档、图片等。
- 允许多人协作:
- 合并:合并从同一版本分支出来的不同版本。
- 跟踪责任:记录谁做了哪些更改。
- 并行工作:允许程序员独立工作一段时间(同时保留版本控制)。
- 进行中的工作:允许多个程序员分享未完成的工作(不打扰他人,同时保留版本控制)。
版本控制与三大原则
-
安全可靠(Safe from Bugs):
- 查找某个功能何时以及在哪个版本中损坏。
- 查找其他类似的错误。
- 增加对代码未发生意外更改的信心。
-
易于理解(Easy to Understand):
- 为什么进行了某个更改?
- 同时还更改了什么?
- 我可以问谁有关这段代码的问题?
-
为变化做好准备(Ready for Change):
- 管理和组织变化。
- 接受并集成其他开发人员的更改。
- 在分支上隔离试验性的工作。
Git的三部分:
- .git 目录:包含版本库的元数据和对象数据库。
- 工作目录:项目的当前版本,可以编辑。
- 暂存区(Staging Area):一个预备提交的区域。
常用Git命令:
- git clone:克隆远程仓库到本地。
- git add:将更改添加到暂存区。
- git commit:提交暂存区的更改,生成一个新的版本。
- git push:将本地版本库的更改推送到远程仓库。
- git pull:从远程仓库拉取最新的更改并合并到本地。
1. 使用 git stash
如果您在本地作了修改,还没有提交,并希望先更新远程的变化,可以使用 git stash
来临时保存本地的改动,然后执行 git pull
更新,最后使用 git stash pop
来恢复您的本地改动。
git stash # 保存当前的工作进度
git pull # 更新远程仓库的改动
git stash pop # 应用之前保存的改动
2. 使用 git pull
的参数
使用 --rebase
参数
git pull --rebase
参数可以先把本地未提交的改动放到一边,拉取远程的更新,然后再把这些改动应用在更新后的代码上。
git pull --rebase origin master
这个命令会尝试把你的改动重新应用在拉取下来的代码上,如果有冲突,git 会提示你解决。
3. 使用 git fetch
+ git rebase
如果想更细致地控制更新过程,可以分两步进行:先使用 git fetch
拉取远程仓库的更新,然后使用 git rebase
来重新应用你的本地改动。
git fetch origin
git rebase origin/master
存在的问题:
问题1:远程origin
已经存在
当您尝试使用以下命令添加新的远程存储库时:
Git 响应说origin
远程已经存在。 Git 存储库中的每个远程都由唯一名称标识,并且origin
是用于主远程的默认名称。由于您已经origin
设置了一个遥控器(指向https://gitee.com/chat-bupt/simu-customer.git
),因此尝试添加另一个origin
遥控器将不起作用。
解决方案
-
如果您打算将远程 URL更改
origin
为新的 URL,则应使用以下git remote set-url
命令:git remote set-url origin https://gitee.com/user/simu.git
-
如果您打算在 之外添加一个新的
origin
遥控器,则需要为其指定一个不同的名称,如下所示:git remote add another-name https://gitee.com/user/simu.git
需要注意:
(1)创建一个分支,需要首先进行一次提交。
(2)更改远程仓库URL为SSH,可以通过SSH公钥直接连接
git remote set-url origin git@gitee.com:用户名/test.git