Git常用命令

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 密钥对:

  1. 生成公钥

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
    • -t rsa:指定生成 RSA 类型的密钥。
    • -b 4096:指定密钥的位数为 4096 位,提高安全性。
    • -C "your_email@example.com":在生成的密钥中添加注释,一般填写你的邮箱地址。
  2. 系统会提示你选择保存密钥的位置,默认为 ~/.ssh/id_rsa,也可以自定义路径。

  3. 然后系统会提示你设置密钥的密码(可选),设置密码可以提高密钥的安全性。

  4. 生成成功后,会显示公钥的路径,默认为 ~/.ssh/id_rsa.pub

  5. 使用文本编辑器打开公钥文件 id_rsa.pub,复制里面的内容。

  6. 将公钥内容粘贴到 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 命令的常用参数和说明:

  1. git reset HEAD <file>

    • 这个命令用于将暂存区中指定文件的更改撤销,同时保留工作目录中的更改。
    • <file> 是要撤销暂存的文件名。
  2. git reset --soft <commit>

    • 这个命令将当前分支的 HEAD 指针移动到指定的提交,但保留工作目录和暂存区的更改。
    • <commit> 是要重置到的提交的引用(如 commit hash、分支名等)。
  3. git reset --mixed <commit>

    • 这个命令将当前分支的 HEAD 指针移动到指定的提交,并重置暂存区,但保留工作目录的更改。
    • <commit> 是要重置到的提交的引用。
  4. git reset --hard <commit>

    • 这个命令将当前分支的 HEAD 指针移动到指定的提交,并重置暂存区和工作目录,丢弃所有更改。
    • <commit> 是要重置到的提交的引用。
  5. 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:慎用这个选项

在工作区修改了很多文件之后,突然发现修改错了,如何恢复?

  1. 手动修改
  2. 使用 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 标签操作:

  1. 列出所有标签

    git tag
    

    这个命令会列出所有的标签。

  2. 创建轻量标签

    git tag <tag_name>
    git tag <tag_name> commit_id
    

    这个命令会在当前提交上创建一个轻量标签,只包含标签名。

  3. 创建附注标签

    git tag -a <tag_name> -m "tag message"
    

    这个命令会在当前提交上创建一个附注标签,可以添加标签信息。

  4. 查看标签信息

    git show <tag_name>
    

    这个命令会显示指定标签的详细信息。

  5. 推送标签到远程仓库

    git push origin <tag_name>
    

    这个命令会将指定标签推送到远程仓库。

  6. 删除本地标签

    git tag -d <tag_name>
    

    这个命令会删除指定的本地标签。

  7. 删除远程标签

    git push --delete origin <tag_name>
    

    这个命令会删除指定的远程标签。

Git 中管理标签,标记重要的提交或版本,并与团队共享稳定的版本信息。

Git分支

Git允许创建分支来并行开发不同的功能

创建分支:

git branch branchname

要查看本地分支,可以使用以下命令:

  1. 查看所有本地分支

    git branch
    

    这个命令会列出所有本地分支,并在当前分支前面标记一个 * 符号。

  2. 查看远程分支和本地分支

    git branch -a
    

    这个命令会列出所有本地分支和远程分支。

  3. 查看本地分支的详细信息

    git branch -v
    

    这个命令会列出所有本地分支,并显示每个分支最后一次提交的信息。

切换分支

要切换到一个不同的分支,可以使用以下命令:

git checkout branchname
git checkout -b branchname  # 创建并切换到新的分支

合并分支

完成一个功能的开发后,可以将分支合并到主分支。使用以下命令可以实现分支合并:

git merge branchname

删除分支

  1. 删除本地分支

    git branch -d <branch_name>
    

    或者

    git branch -D <branch_name>
    
    • -d:表示删除指定分支,如果分支的工作还未合并到当前分支,会提示错误并阻止删除。
    • -D:表示强制删除指定分支,即使分支的工作还未合并到当前分支也会删除。
  2. 删除远程分支

    git push origin --delete <branch_name>
    

    或者

    git push origin :<branch_name>
    

    这两个命令都可以用来删除远程仓库中的指定分支。

请注意,在删除分支之前,确保不再需要该分支的代码或提交记录。删除分支是一个不可逆的操作,删除后的分支及其提交记录将无法恢复。

关联分支

通过以下步骤为当前分支 dev 设置与之关联的远程分支:

  1. 手动设置远程分支

    git branch --set-upstream-to=origin/dev dev
    

    这个命令会将本地的 dev 分支与远程的 dev 分支建立关联。

  2. 推送本地分支到远程

    如果需要将本地分支 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冲突并成功合并分支或拉取远程更新。记得在解决冲突时仔细审查更改,确保代码的完整性和正确性。

相关推荐
high20119 小时前
【Git】-- 版本说明
git
kaixin_learn_qt_ing9 小时前
git clone
git
sin22019 小时前
git stash
git
喝鸡汤9 小时前
一起学Git【第二节:创建版本库】
git
慢慢成长的码农9 小时前
git 同步分支操作
git
sin22019 小时前
git推送本地仓库到远程(Gitee)
git·gitee
丁总学Java11 小时前
git branch -r(--remotes )显示你本地仓库知道的所有 远程分支 的列表
git
yylの博客14 小时前
Windows通过git-bash安装zsh
windows·git·bash·zsh
丁总学Java15 小时前
(Z Shell)zsh: no matches found: ? 使用单引号包裹
git·zsh
萌狼蓝天15 小时前
【NAS】绿联NAS+极狐Gitlab+1Panel
git