Git是一个开源的分布式版本控制系统,用于跟踪计算机文件的变化和协作开发。它是由Linus Torvalds在2005年开发的,它可以帮助团队协同工作,保证代码的审查,管理版本控制工作流等。
Git基本概念:
-
仓库 (Repository) 仓库是 Git 中最重要的概念,它是存储项目代码的地方。它可以存在于本地计算机或者远程服务器上。
-
分支 (Branch) 分支是 Git 中用于管理并行开发的概念,每个分支代表了代码的一个版本。可以在分支上进行代码的修改,而不会影响主分支上的代码。
-
提交 (Commit) 提交是 Git 中保存代码更改的操作,每个提交包含了更改的代码和提交的说明信息。
-
合并 (Merge) 当两个分支上的代码需要合并时,可以使用合并操作,将两个分支上的代码合并为一个新的分支。
GIt命令:
Git是一种分布式版本控制系统,广泛应用于软件开发和其他领域。在工作中使用Git可以方便地管理代码库,协作开发等。以下是常用的Git命令和注意事项:
git init:初始化一个Git仓库。
git clone:克隆一个远程仓库到本地。
详细说明:
比如你本地本来并没有某个项目的代码仓库,此时随便找一个文件目录并进入cmd命令窗口,执行命令git clone [remote address],[remote address]就是对应的远程代码仓库地址,克隆完成之后,你便可以看到新建了一个目录,进入该目录,会看到.git,所有包含.git的目录其实就是你本地的关于该项目的一个git代码仓库。比如:
git add:添加文件到Git仓库
git commit:提交代码到Git仓库
用于将暂存区中的文件改动提交到本地仓库中。这个命令的主要作用是记录代码的修改历史,以便于后续的版本控制和代码管理。
具体来说,git commit命令会执行以下操作:
- 将暂存区中的文件改动添加到本地仓库中。
- 创建一个新的提交,该提交包含了代码的修改历史和提交信息。
- 将新的提交记录添加到本地仓库的历史记录中。
使用git commit的一般格式如下:
git commit -m "commit message"
其中,"commit message"是提交信息的描述,可以是一些备注信息或者对代码修改的描述。如果需要提交多个文件,可以在命令后面添加文件名,如"git commit file1.txt file2.txt"。
需要注意的是,git commit是Git系统中非常重要的一个命令,它用于记录代码的修改历史和提交信息。在使用git commit时,建议使用有意义的提交信息描述每一次提交的内容和目的,以便于后续的代码维护和理解。同时,如果需要修改已经上传的描述,可以使用命令"git commit --amend -m 'new commit message'"。
git push:将本地仓库推送到远程仓库
用于将本地仓库的代码推送到远程仓库。这个命令的主要作用是将本地的代码更新同步到远程仓库,以便于协作开发和备份。
具体来说,git push命令会执行以下操作:
- 将本地仓库的代码更新推送到远程仓库。
- 在远程仓库中创建或更新相应的分支。
- 如果远程仓库中不存在指定的分支,会自动创建一个同名分支。
使用git push的一般格式如下:
git push <远程主机名> <本地分支名>:<远程分支名>
其中,"远程主机名"是远程仓库的名称,"本地分支名"是本地的分支名称,"远程分支名"是远程仓库的分支名称。如果省略远程分支名,则表示将本地分支推送到与本地分支存在追踪关系的远程分支上。如果该远程分支不存在,则会自动创建一个。
对于新手来说,使用git push需要注意以下几点:
- 在执行git push之前,需要先确保已经将本地仓库的代码更新提交到本地仓库中。可以使用"git add"和"git commit"命令来添加和提交代码。
- 在执行git push之前,需要先确认已经连接到了正确的远程仓库。可以使用"git remote -v"命令查看当前配置的远程仓库信息。
- 如果需要推送多个分支,可以在git push后面添加多个分支名,中间用空格隔开。
- 如果推送过程中出现冲突,需要手动解决冲突后才能继续推送。
- 如果推送成功后想删除远程分支,可以使用"git push <远程主机名> --delete <远程分支名>"命令。
- 如果需要指定默认的远程仓库和分支名,可以使用"git config --global push.default matching"命令进行设置。
- 在执行git push时,需要确保已经正确配置了用户名和邮箱等信息,以便于记录代码的修改历史。可以使用"git config --global user.name"和"git config --global user.email"命令查看配置信息。
git pull:将远程仓库同步到本地
经过git clone之后,其实是把此刻最新的远程代码仓库给克隆到本地了。但如果项目团队中另一名成员提交了新的代码到远程仓库,比如这样:
完整的git pull命令是这样子的:git pull <远程主机名> <远程分支名>:<本地分支名>。
比如: git pull origin master:master。
那如果我就简单执行了git pull,没写这么长会发生什么呢?那么会把当前所在分支所跟踪的远程分支上新的提交,拉到当前分支上。
如果当前在master分支上,那么简单的执行git pull 即相当于 git pull origin master:master。如果当前不在master分支上,那么就只能老老实实执行git pull origin master:master了。
Git pull操作实际上分为两步,第一步执行了git fetch 第二步进行了 git merge
git **fetch:**获取最新的提交历史和分支信息
用于从远程仓库获取最新的提交历史和分支信息,但并不自动合并或修改本地代码。这意味着你可以获取到远程仓库的最新状态,并查看分支的更新情况,以便进行后续操作,如合并、比较或重新基于最新的提交进行开发。
具体来说,当你执行git fetch命令时,它会执行以下操作:
-
检查远程仓库是否有新的提交或分支。
-
获取远程仓库的最新提交历史,但不会应用到当前工作目录中。
-
更新本地仓库的远程分支指针,指向远程仓库的最新提交。
git fetch <remote>
其中,<remote>是远程仓库的名称,如origin。通过执行git fetch命令,你可以获取远程仓库的最新状态,并查看分支的更新情况,以便进行后续操作,如合并、比较或重新基于最新的提交进行开发。需要注意的是,git fetch不会自动合并或修改你的本地代码。如果需要将远程分支的更改应用到本地分支,你可以使用git merge或git rebase命令来完成合并操作。此外,你还可以使用git remote show <remote>命令查看远程仓库的详细信息,包括分支列表和最新提交信息。总结一下,git fetch命令用于从远程仓库获取最新的提交历史和分支信息,但不会自动合并或修改本地代码。它是进行Git协作开发时常用的命令之一,可以帮助你保持和远程仓库的同步,以便后续操作。
git merge:合并分支
在Git中,merge的意思是"合并",该命令是用于将两个或两个以上的开发历史合并在一起的操作。通过执行git merge命令,可以将两个或多个分支的提交历史合并为一个分支。
具体来说,当你执行git merge命令时,它会执行以下操作:
- 获取目标分支的最新提交历史。
- 将当前所在分支与目标分支进行合并。
- 将合并的结果应用到当前所在分支上。
使用git merge的一般格式如下:
git merge <branch>
其中,<branch>是要合并的目标分支的名称。通过执行git merge命令,可以将指定分支的提交历史合并到当前所在分支上。在合并过程中,Git会尝试将不同分支的提交历史线性化,并将它们放回到一起。如果出现冲突,Git会提示你解决冲突。解决冲突后,你需要执行额外的提交操作来完成合并。需要注意的是,git merge通常与其他几个Git命令一起使用,包括使用git checkout命令来选择当前工作分支,以及使用git branch -d命令来删除已经合并过的废弃分支。
总结一下,git merge命令用于将两个或多个分支的提交历史合并为一个分支。它是Git中非常重要的操作之一,可以帮助你保持代码库的同步和一致性。
git branch:创建、查看、删除分支
用于创建、删除、切换分支以及查看分支列表。
分支是Git版本控制系统中的重要概念,它允许开发者在同一个代码库上创建不同的开发线路,从而支持并行开发、特性开发、版本发布等等。
具体来说,git branch命令可以执行以下操作:
- 创建新的分支:使用"git branch <branch name>"命令可以创建一个新的分支,其中"<branch name>"是分支的名称。
- 切换分支:使用"git checkout <branch name>"命令可以切换到指定的分支,如果该分支不存在,则会创建一个新的分支。
- 删除分支:使用"git branch -d <branch name>"命令可以删除一个分支,前提是该分支已经被合并到其他分支。如果分支上有未合并的更改,需要使用"git branch -D <branch name>"命令强制删除。
- 查看分支列表:使用"git branch"命令可以查看当前所有的分支列表,包括已经合并的和未合并的分支。
对于新手来说,使用git branch需要注意以下几点:
- 在创建新的分支时,建议使用"git checkout -b <branch name>"命令同时创建并切换到新的分支,这样可以避免在不同分支之间来回切换。
- 在删除分支时,需要先确认该分支是否已经被合并到其他分支,如果没有合并,需要强制删除,否则可能会丢失未合并的更改。
- 在切换分支时,需要先确认当前所在的分支是否已经修改了文件但还没有提交,如果是的话需要先提交更改或者撤销更改,否则切换分支时可能会丢失修改。
- 在查看分支列表时,可以使用"git branch -a"命令查看所有的分支列表,包括已经合并的和未合并的分支。
git checkout:切换分支
用于创建、切换分支或恢复工作树文件。它可以在不同的分支之间进行切换,也可以撤销工作树文件的更改。
具体来说,git checkout命令可以执行以下操作:
- 创建并切换到新的分支:使用"git checkout -b <branch>"命令可以创建一个新的分支并切换到该分支。
- 切换到已有的分支:使用"git checkout <branch>"命令可以切换到已有的分支。
- 恢复工作树文件的更改:使用"git checkout -- ."命令可以撤销工作树中的更改,将工作树恢复到最近一次提交的状态。如果想要撤销某个特定文件或者目录的更改,可以在"."后面加上文件路径。
- 基于远程库分支创建分支:使用"git checkout -b <branch> origin/<branch>"命令可以基于远程库中的分支创建一个新的分支,并将远程库中的分支信息同步到本地新分支中。
- 基于指定标签创建分支:使用"git checkout <tagname>"命令可以切换到与指定标签对应的提交记录,并创建一个新的分支。
- 基于指定提交 id 创建分支:使用"git checkout <commit id>"命令可以切换到与指定提交记录对应的提交状态,并创建一个新的分支。
对于新手来说,使用git checkout需要注意以下几点:
- 在执行git checkout命令时,需要先确认当前所在的分支是否已经修改了文件但还没有提交,如果是的话需要先提交更改或者撤销更改,否则切换分支时可能会丢失修改。
- 在基于远程库分支创建分支时,需要先执行"git fetch"命令获取远程库的最新状态信息,否则可能会创建不存在的分支。
- 在基于指定标签或提交 id 创建分支时,需要先确定该标签或提交 id 是否存在,否则可能会创建不存在的分支。
- 在恢复工作树文件的更改时,需要注意只撤销工作树中的更改,不会影响到暂存区的更改。如果想要撤销暂存区的更改,需要使用"git reset"命令。
- 在执行git checkout命令时,需要小心使用"-f"选项,该选项会强制切换到新的分支并删除当前所在分支的信息,需要谨慎操作以免误删除重要分支。
git log:查看提交记录
注意事项:
- 当准备提交代码时,必须先执行
git pull
命令,将远程服务器的代码同步到本地,避免发生冲突。 - 在执行
git commit
前再执行一次git pull
,确认服务器端代码没有修改后,然后再执行git commit
,紧接着执行git push
,将代码推送到服务器,避免中间有其他同事提交代码导致代码冲突而无法推送到服务器。 - 当需要撤销已经提交的代码时,可以使用
git reset --hard HEAD~1
命令回滚到上一版本。但请注意,这个命令无法恢复已经删除的文件,所以请谨慎使用。 - 当需要查看所有的提交版本记录时,可以使用
git reflog
命令。这个命令可以显示所有的提交记录,包括已经被撤销的提交。 - 当使用Git进行协作时,建议使用分支进行开发。在推送到远程仓库前,确保已经解决了所有可能的冲突。
- 当使用Git进行版本控制时,建议定期备份代码库,以防止数据丢失或损坏。
- 在使用Git进行版本管理时,建议及时合并分支和更新代码库,以确保代码的一致性和可维护性。
- 当使用Git进行代码管理时,建议使用合适的提交信息描述每一次提交的内容和目的,以便于后续的代码维护和理解。
- 在开发过程中,要及时提交代码,不要等到所有的代码都写完再提交
- 在提交代码时,要写明提交信息,包括修改的内容和原因,以便于其他人查看
- 在合并分支时,要先将当前分支的代码提交并推送到远程仓库,以免出现代码冲突
- 在与其他人协作开发时,要遵循相同的开发流程和代码规范,以保证代码质量和协作效率
- 在使用Git时,要注意保护个人隐私和代码安全,不要将敏感信息提交到Git仓库中。
总之,Git 是一个非常强大的版本控制系统,可以帮助开发者管理项目代码,实现团队协作,保证代码的稳定性和可靠性。