Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
这只是一些参考,具体请移步官网:Git
git init
- 初始化一个新的 Git 仓库。
git clone <仓库地址>
- 克隆(下载)一个远程仓库到本地。
git add <文件名>
- 将文件添加到暂存区。
git commit -m "<提交信息>"
- 将暂存区的文件提交到本地仓库并附上提交信息。
git status
- 显示工作目录和暂存区的状态。
git push <远程主机名> <分支名>
- 将本地仓库的修改推送到远程仓库。
git pull <远程主机名> <分支名>
- 从远程仓库拉取最新的修改并合并到本地仓库。
git branch
- 显示当前仓库的所有分支。
git checkout <分支名>
- 切换到指定的分支。
git merge <分支名>
- 将指定分支的更改合并到当前分支。
git remote add <远程主机名> <仓库地址>
- 添加远程仓库。
git log
- 显示提交历史记录。
git diff
- 显示工作目录和暂存区之间的差异。
git reset <文件名>
- 取消将文件的更改添加到暂存区。
git rm <文件名>
- 从版本控制中移除文件。
git remote -v
- 显示远程仓库的详细信息,包括名称和地址。
git fetch <远程主机名>
- 从远程仓库获取最新的修改,但不进行合并。
git branch -a
- 显示本地和远程所有分支的列表。
git checkout -b <新分支名>
- 创建一个新的分支并切换到该分支。
git merge --no-ff <分支名>
- 执行非快速合并,保留分支历史记录。
git push -u <远程主机名> <分支名>
- 将本地的分支推送到远程仓库,并设置为默认上游分支。
git stash save "<描述信息>"
- 将当前的工作目录中的更改保存到堆栈中。
git stash list
- 显示所有保存在堆栈中的变更列表。
git stash apply
- 应用最近的堆栈中的更改,但不将其从堆栈中删除。
git cherry-pick <提交号>
- 提取指定提交的更改,并将其应用到当前分支。
git rebase <目标分支名>
- 将当前分支的提交移到目标分支的顶部。
git tag <标签名>
- 在当前提交上创建一个标签。
git remote show <远程主机名>
- 显示与指定远程主机相关的更多信息,如分支跟踪等。
git clean -n
- 列出将被删除的未跟踪文件。
git config --global user.name "<用户名>"
- 设置全局用户名。
git config --global user.email "<邮箱地址>"
- 设置全局邮箱地址。
在使用 Git 进行代码管理时,可能会遇到一些常见的问题。以下是几个常见问题及其处理方式。
-
冲突(Conflict):当多个人同时修改同一文件的同一部分时,会导致冲突。处理方式如下:
- 使用
git status
命令查看冲突文件。 - 打开冲突文件,手动解决冲突。
- 使用
git add <文件名>
将解决冲突后的文件标记为已解决。 - 继续进行提交
git commit
。
- 使用
-
错误的分支操作:可能会在错误的分支上进行了提交或合并操作。处理方式如下:
- 使用
git log
命令查看提交历史,找到错误操作的提交。 - 使用
git reset <commit>
将分支回退到正确的提交。 - 如果错误的提交已经推送到远程仓库,需要使用
git push -f
强制推送来覆盖错误的提交。
- 使用
-
误删除文件:有时候可能会意外删除了文件。处理方式如下:
- 使用
git status
命令查看被删除的文件。 - 使用
git checkout -- <文件名>
恢复被删除的文件。
- 使用
-
误提交敏感信息:有时候可能会将敏感信息,如密码或机密密钥,提交到了代码仓库。处理方式如下:
- 迅速撤销提交:使用
git revert <commit>
撤销最新的提交,避免敏感信息泄露。
- 修改敏感信息后提交:修改敏感信息,然后使用
git commit --amend
命令将修改后的内容追加到最新的提交中。
- 迅速撤销提交:使用
-
误删分支:有时候可能会意外删除了一个分支。处理方式如下:
- 使用
git reflog
命令查看分支的操作日志,找到被删除的分支的最后一个提交的 SHA 值。 - 使用
git branch <分支名> <SHA>
命令来重新创建被删除的分支。
- 使用
-
找不到 Git 命令:如果在命令行中输入 Git 命令时出现 "command not found" 或类似的错误消息,可能是由于没有正确安装或配置 Git 导致的。解决方式是确保 Git 已正确安装并添加到系统的环境变量中。
-
未跟踪的文件(Untracked files):当使用
git status
命令时,会显示未跟踪的文件。解决方式如下:- 使用
git add <文件名>
将文件添加到暂存区,以便进行版本管理。
- 使用
-
本地和远程分支不同步:当本地分支落后于远程分支时,无法推送或拉取更新。解决方式如下:
- 使用
git pull
命令拉取远程分支的最新更改并合并到本地分支。 - 如果有冲突,请解决冲突后再次提交。
- 使用
-
远程主机不存在:当尝试与远程仓库交互时,可能会遇到 "remote 'origin' not found" 或类似的错误消息。解决方式如下:
- 使用
git remote add <远程主机名> <仓库地址>
命令添加远程主机。 - 确保远程仓库的地址正确且可访问。
- 使用
-
无法推送到远程仓库:当尝试使用
git push
命令将本地更改推送到远程仓库时,可能会遇到错误,例如权限被拒绝。解决方式如下:- 确保你具有推送到远程仓库的权限。
- 如果是第一次推送到该远程仓库,可以尝试使用
git push -u <远程主机名> <分支名>
命令建立追踪关系。
-
提交被拒绝(Rejected):当尝试推送提交时,可能会遇到 "rejected" 错误消息。这通常是由于远程仓库上的代码已经发生了变化,与本地分支产生了冲突。解决方式如下:
- 使用
git pull
拉取远程更新,并合并到本地分支。 - 解决冲突后,再次尝试推送提交。
- 使用
-
分支未完全合并(Not fully merged):当尝试删除一个包含未合并更改的分支时,可能会遇到 "not fully merged" 错误消息。这表示该分支上的更改没有被合并到主分支或其他目标分支。解决方式如下:
- 使用
git merge
命令将目标分支上的更改合并到当前分支。 - 确保所有更改都已合并后,再尝试删除分支。
- 使用
-
无法切换分支(Cannot switch branches):当尝试切换分支时,可能会遇到 "cannot switch branches" 错误消息。这通常是因为在当前分支上有未提交的更改,切换分支会导致冲突。解决方式如下:
- 使用
git stash
命令将当前分支上的更改保存到堆栈中。 - 切换到目标分支。
- 使用
git stash pop
命令将之前保存的更改应用到目标分支上。
- 使用
-
文件名过长(Filename too long):当 Git 在 Windows 系统上遇到过长的文件名时,可能会报错 "filename too long"。这是由于 Windows 对文件路径长度有限制导致的。解决方式如下:
- 缩短文件名或文件路径。
- 移动文件到较短路径下。
- 使用 Git 的长路径支持(Git 2.15+ 版本),可以通过设置
git config --system core.longpaths true
来启用。
初见乍欢,久处仍怦然