Git是一种分布式版本控制系统,可以进行多人的协作开发,基本大部分的软件开发相关的公司都会使用该软件,下边记录一些常用的命令
安装Git
可以从Git官方网站下载适合操作系统的安装程序,win可以直接下载,常用的linux系统
Ubuntu
apt-get install git
Centos
yum install git
Linux平台下使用下述命令查看git版本:
git --version
创建本地Git仓库并配置
要在本地创建一个新的Git仓库,可以使用以下命令:
git init
用户信息配置
配置Git的用户信息,包括用户名和邮箱地址。在命令行中输入以下命令:
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"
--global是可选项,带上该选项在仓库目录下运行上述命令之后,可以在本机所有的仓库中生效
查看配置命令:
git config -l
删除对应的账户配置
git config [--global] --unset user.name
git config [--global] --unset user.email
公钥
生成 Git 的公钥是为了在使用 Git 时进行身份验证。输入以下命令来生成 SSH 密钥对:
-
生成公钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa
:指定生成 RSA 类型的密钥。-b 4096
:指定密钥的位数为 4096 位,提高安全性。-C "your_email@example.com"
:在生成的密钥中添加注释,一般填写你的邮箱地址。
-
系统会提示你选择保存密钥的位置,默认为
~/.ssh/id_rsa
,也可以自定义路径。 -
然后系统会提示你设置密钥的密码(可选),设置密码可以提高密钥的安全性。
-
生成成功后,会显示公钥的路径,默认为
~/.ssh/id_rsa.pub
。 -
使用文本编辑器打开公钥文件
id_rsa.pub
,复制里面的内容。 -
将公钥内容粘贴到 Git 服务商(如 GitHub、GitLab)的 SSH 密钥设置中,以便进行身份验证。
生成的公钥可以用于与 Git 服务商进行安全的通信和身份验证。
将文件添加到Git仓库
将文件添加到Git仓库需要两个步骤。首先,使用以下命令将文件添加到暂存区:
git add filename
然后,使用以下命令将文件提交到仓库:
git commit -m "Commit message"
版本回退
git restore --staged <file>...
命令用于将暂存区(Staging Area)中的文件恢复到工作目录中的状态,即取消暂存的文件更改。
执行这个命令后,指定的文件将从暂存区还原到工作目录,文件的更改将不再处于暂存状态。
git reset
命令在 Git 中用于撤销更改、移动 HEAD 指针或重置暂存区。以下是 git reset
命令的常用参数和说明:
-
git reset HEAD <file>
:- 这个命令用于将暂存区中指定文件的更改撤销,同时保留工作目录中的更改。
<file>
是要撤销暂存的文件名。
-
git reset --soft <commit>
:- 这个命令将当前分支的 HEAD 指针移动到指定的提交,但保留工作目录和暂存区的更改。
<commit>
是要重置到的提交的引用(如 commit hash、分支名等)。
-
git reset --mixed <commit>
:- 这个命令将当前分支的 HEAD 指针移动到指定的提交,并重置暂存区,但保留工作目录的更改。
<commit>
是要重置到的提交的引用。
-
git reset --hard <commit>
:- 这个命令将当前分支的 HEAD 指针移动到指定的提交,并重置暂存区和工作目录,丢弃所有更改。
<commit>
是要重置到的提交的引用。
-
git reset --merge
:- 这个命令用于解决合并冲突时,取消合并并重置到合并之前的状态。
通过合理使用 git reset
命令及其参数,可以有效地管理 Git 仓库中的提交历史和更改状态。请谨慎使用 git reset --hard
命令,因为它会永久丢弃工作目录中的更改。
假设工作区文件有 aaa,增加bbb,变成aaa bbb,之后add、commit
工作区 | 暂存区 | 版本库 | reset携带的选项 |
---|---|---|---|
aaa bbb | aaa bbb | aaa | --soft |
aaa bbb | aaa | aaa | --mixed :默认选项 |
aaa | aaa | aaa | --hard:慎用这个选项 |
在工作区修改了很多文件之后,突然发现修改错了,如何恢复?
- 手动修改
- 使用 git checkout --filename
查看Git仓库状态
你可以使用以下命令查看Git仓库的状态:
git status
查看提交历史
要查看提交历史,可以使用以下命令:
git log
git log --pretty=oneline
git log --pretty=oneline --abbrev-commit
git reflog 查看每次的log 包括撤销
-
--pretty=oneline
选项指定了输出格式为每个提交的一行显示,显示的信息包括提交的哈希值和提交信息。这种格式适合在终端中查看提交历史,信息简洁明了。 -
--abbrev-commit
选项指定了显示的提交哈希值的缩写长度。默认情况下,Git会显示完整的40位哈希值,但使用--abbrev-commit
选项可以缩短哈希值的长度,使得显示更加简洁。
标签管理
在 Git 中,标签(tag)是用来标记特定提交的稳定版本或重要节点的指针。以下是一些常用的 Git 标签操作:
-
列出所有标签:
git tag
这个命令会列出所有的标签。
-
创建轻量标签:
git tag <tag_name> git tag <tag_name> commit_id
这个命令会在当前提交上创建一个轻量标签,只包含标签名。
-
创建附注标签:
git tag -a <tag_name> -m "tag message"
这个命令会在当前提交上创建一个附注标签,可以添加标签信息。
-
查看标签信息:
git show <tag_name>
这个命令会显示指定标签的详细信息。
-
推送标签到远程仓库:
git push origin <tag_name>
这个命令会将指定标签推送到远程仓库。
-
删除本地标签:
git tag -d <tag_name>
这个命令会删除指定的本地标签。
-
删除远程标签:
git push --delete origin <tag_name>
这个命令会删除指定的远程标签。
Git 中管理标签,标记重要的提交或版本,并与团队共享稳定的版本信息。
Git分支
Git允许创建分支来并行开发不同的功能
创建分支:
git branch branchname
要查看本地分支,可以使用以下命令:
-
查看所有本地分支:
git branch
这个命令会列出所有本地分支,并在当前分支前面标记一个
*
符号。 -
查看远程分支和本地分支:
git branch -a
这个命令会列出所有本地分支和远程分支。
-
查看本地分支的详细信息:
git branch -v
这个命令会列出所有本地分支,并显示每个分支最后一次提交的信息。
切换分支
要切换到一个不同的分支,可以使用以下命令:
git checkout branchname
git checkout -b branchname # 创建并切换到新的分支
合并分支
完成一个功能的开发后,可以将分支合并到主分支。使用以下命令可以实现分支合并:
git merge branchname
删除分支
-
删除本地分支:
git branch -d <branch_name>
或者
git branch -D <branch_name>
-d
:表示删除指定分支,如果分支的工作还未合并到当前分支,会提示错误并阻止删除。-D
:表示强制删除指定分支,即使分支的工作还未合并到当前分支也会删除。
-
删除远程分支:
git push origin --delete <branch_name>
或者
git push origin :<branch_name>
这两个命令都可以用来删除远程仓库中的指定分支。
请注意,在删除分支之前,确保不再需要该分支的代码或提交记录。删除分支是一个不可逆的操作,删除后的分支及其提交记录将无法恢复。
关联分支
通过以下步骤为当前分支 dev
设置与之关联的远程分支:
-
手动设置远程分支:
git branch --set-upstream-to=origin/dev dev
这个命令会将本地的
dev
分支与远程的dev
分支建立关联。 -
推送本地分支到远程 :
如果需要将本地分支
dev
推送到远程仓库,可以使用以下命令:git push -u origin dev
这样会将本地的
dev
分支推送到远程仓库,并建立关联。
通过以上步骤,可以解决当前分支没有与之关联的远程分支的问题,并确保在推送或拉取时能够正确同步代码。
远程开发
从远程仓库克隆后,实际上 Git 会⾃动把本地的 master 分⽀和远程的 master 分⽀对应起来, 并且,远程仓库的默认名称是 origin 。在本地我们可以使⽤ git remote 命令,来查看远程库的信息
⽤ git remote -v 显⽰更详细的信息
tong@atong3:~/unskilled-vim$ git remote -v
origin git@github.com:atongrun/unskilled-vim.git (fetch)
origin git@github.com:atongrun/unskilled-vim.git (push)
克隆完成仓库之后,git branch -a 查看分支,可以在本地创建分支,通过git checkout -b dev命令,增加并且切换到dev分支
tong@atong3:~/unskilled-vim$ git branch -a
* dev
main
remotes/origin/HEAD -> origin/main
remotes/origin/dev
remotes/origin/main
将本地的 dev
分支推送到远程仓库,并将本地的 dev
分支与远程仓库的同名分支建立关联关系
git push --set-upstream origin dev
推送到远程仓库
如果想与团队成员代码,可以将代码推送到远程仓库。首先,添加远程仓库的地址:
git remote add origin remote_repository_url
然后,将代码推送到远程仓库:
git push -u origin master
解决Git冲突是在合并分支或拉取远程更新时可能遇到的情况。下面是解决Git冲突的一般步骤:
步骤1:检测冲突
在合并分支或拉取远程更新时,如果Git检测到冲突,会在文件中标记出冲突的部分。可以使用git status
命令查看哪些文件有冲突。
步骤2:打开冲突文件
找到有冲突的文件,打开它并查看冲突的部分。冲突的部分会被标记为类似以下的格式:
<<<<<<< HEAD
// 本地分支的更改
=======
// 远程分支的更改
>>>>>>> branch_name
步骤3:手动解决冲突
根据冲突标记,手动编辑文件以解决冲突。需要决定保留哪些更改或如何合并这些更改。删除冲突标记并保留想要的更改。
步骤4:标记冲突已解决
在解决完冲突后,保存文件并使用以下命令标记冲突已解决:
git add <conflicted_file>
步骤5:完成合并
继续合并分支或拉取远程更新,并完成合并操作:
git commit -m "Merge conflict resolved"
步骤6:推送更改
如果是在拉取远程更新时解决冲突,完成合并后需要将更改推送到远程仓库:
git push
通过以上步骤,可以解决Git冲突并成功合并分支或拉取远程更新。记得在解决冲突时仔细审查更改,确保代码的完整性和正确性。