Git安装
1、Ubuntu安装
首先,确认你的系统是否已安装git,可以通过git指令进行查看,在命令行模式下输入git --version查看git的版本,
xxx@ubuntu:~$ git --version
git version 2.34.1
如果没有安装,则输入如下命令进行安装
xxx@ubuntu:~$ sudo apt-get install git
2、windows安装
git下载网址
https://git-scm.com/download/win
Git配置
1、配置Git,生成公钥
# 配置全局用户
$ git config --global user.name "用户名"
$ git config --global user.email "git账号"
# 生成ssh key
$ ssh-keygen -t rsa -C "git账号" # 注意:输入该命令后要一直回车
2、更新公钥至代码仓
1)ubuntu公钥路径:~/.ssh/id_rsa.pub
2)win公钥路径:C:\Users\Administrator.ssh\id_rsa.pub
Git常见命令
代码下载
ssh的克隆方式
1、只有配置git,将生成的密钥更新到代码仓,才能进行代码更新
2、ssh方式默认的下载端口为22,如果服务器的端口号不是22,需要进行如下配置
新建文件:
$ vi ~/.ssh/config
或打开配置文件:
$ vi /etc/ssh/ssh_config
http的克隆方式
# 代码下载命令
$ git clone [url]
代码更新
# 将远程信息更新到本地,包括新增的branch、commit和tag等信息
$ git pull
# 拉取指定分支的更新
$ git pull origin develop
分支管理
拉新分支
# 拉新分支的命令
$ git checkout -b (branchname)
# 基于某个分支拉取开发分支
$ git checkout <branchA>(base branch)
$ git checkout –b branchB(new branch base branchA)
# 基于某个commit点拉取分支
$ git checkout <commitA>
$ git checkout –b branchB(base commitA )
# 基于某个Tag拉取分支
$ git checkout <TagA>
$ git checkout –b branchB(base TagA)
# 注意:拉分支前先用git pull命令同步远程信息(branch/commit等)
分支切换
# 切换到现有的某个分支
$ git checkout(branchname)
# 注意:branchname可以是本地分支,也可以是远程的分支,但是一定要是现有的分支
分支操作
# 查看本地分支
$ git branch
# 查看远程分支
$ git branch -r
# 查看本地和远程分支
$ git branch -a
# 新建本地分支但不切换
$ git branch [branchName]
# 删除本地分支,会阻止删除包含未合并更改的分支
$ git brnach -d branchname
# 强制删除一个本地分支,即使包含未合并更改的分支
$ git branch -D branchname
# 重新命名分支
$ git branch -m [oldBranchName] [newBranchName]
# 删除远程分支
$ git push origin --delete 远程分支名
添加到暂存区
# 添加指定文件至暂存区
$ git add [file1] [file2]
# 添加指定目录至暂存区
$ git add [dir]
$ git add .
# 操作的对象是“当前目录”所有文件变更,"." 表示当前目录。会监控工作区的状态树,使用它会把工作区的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new)。
$ git add -u
# 操作的对象是整个工作区已经跟踪的文件变更,无论当前位于哪个目录下。仅监控已经被 add 的文件(即 tracked file),它会将被修改的文件(包括文件删除)提交到暂存区。git add -u 不会提交新文件(untracked file)。(git add --update 的缩写)
$ git add -A
# 操作的对象是“整个工作区”所有文件的变更,无论当前位于哪个目录下。是上面两个功能的合集(git add --all 的缩写)
查看状态
# 查看工作区和暂存区的状态
$ git status
提交代码修改
# 提交并添加描述
$ git commit -m "本次提交的说明"
# 将修改添加到暂存区,提交并添加描述,相当于 git add -A 和 git commit -m ''
$ git commit -am "本次提交的说明" # 比较危险,不建议使用
# 修改最新一次提交的描述信息。
$ git commit –-amend
$ git commit --amend -m "提交描述"
代码合并
合并所有修改
$ git merge
合并某一个或者几个修改
# 将分支切换到 branch1 分支
$ git cherry-pick <commit_id1>
# 将分支切换到 branch1 分支
$ git cherry-pick <commit_id1> <commit_id2>
# 将branch2中的修改(f)拿到到branch1,可执行如下命令行
$ git checkout branch1
$ git cherry-pick <commit_f>
管理跟踪远程仓库
# 查看连接的远程仓库地址
$ git remote -v
# 为本地仓库添加远程仓库地址
$ git remote add origin [gitUrl]
# 将本地仓库的master和远程仓库的master进行关联
$ git push -u origin master
# 为本地仓库修改远程仓库地址
$ git remote origin set-url [gitUrl]
# 添加远程代码仓到本地(两个仓公用本地代码,可以用该命令)
$ git remote add <shortname> <url>
标签操作(Tag)
# 新建标签
$ git tag [tagName]
# 查看标签列表
$ git tag
# 删除标签
$ git tag -d [tagName]
# 推送标签到远程仓库
$ git push origin [tagName]
代码推送
# 新建标签
$ git tag [tagName]
# 查看标签列表
$ git tag
# 删除标签
$ git tag -d [tagName]
# 推送标签到远程仓库
$ git push origin [tagName]
分支变基
# 请参考如下
https://www.yiibai.com/git/git_rebase.html
撤销修改
# 从暂存区撤销特定文件,但不改变工作区。它会取消这个文件的暂存,而不覆盖任何更改
$ git reset <fileName>
# 重置暂存区最近的一次提交,但工作区的文件不变
$ git reset 等价于 $ git reset HEAD (默认)
# 重置暂存区与工作区,回退到最近一次提交的版本内容
$ git reset --hard
# 重置暂存区与工作区,回退到最近一次提交的上一个版本,比如说本地commit了,但是发现错了,想要删除这个commit,可以用
$ git reset --hard HEAD^
# 将当前分支的指针指向为指定 commit(该提交之后的提交都会被移除),同时重置暂存区,但工作区不变
$ git reset <commit>
# 等价于
$ git reset --mixed <commit>
# 将当前分支的指针指向为指定 commit(该提交之后的提交都会被移除),但保持暂存区和工作区不变,可能会有冲突
$ git reset --soft <commit>
# 将当前分支的指针指向为指定 commit(该提交之后的提交都会被移除),同时重置暂存区、工作区
$ git reset --hard <commit>
版本回滚
# 生成一个撤销最近的一次提交的新提交
$ git revert HEAD
# 生成一个撤销最近一次提交的上一次提交的新提交
$ git revert HEAD^
# 生成一个撤销最近一次提交的上两次提交的新提交
$ git revert HEAD^^
# 生成一个撤销最近一次提交的上n次提交的新提交
$ git revert HEAD~num
# 生成一个撤销指定提交版本的新提交
$ git revert <commit_id>
# 生成一个撤销指定提交版本的新提交,执行时不打开默认编辑器,直接使用 Git 自动生成的提交信息
$ git revert <commit_id> --no-edit
修改保存至堆栈
# 将所有未提交的修改(提交到暂存区)保存至堆栈中
$ git stash
# 给本次存储加个备注,以防时间久了忘了
$ git stash save "存储"
# 存储未追踪的文件
$ git stash -u
# 查看存储记录
$ git stash list
# 恢复后,stash 记录并不删除
$ git stash apply "stash@{index}"
# 恢复的同时把 stash 记录也删了
$ git stash pop "stash@{index}"
# 删除stash记录
$ git stash drop "stash@{index}"
# 删除所有存储的进度
$ git stash clear
# 查看当前记录中修改了哪些文件
$ git stash show "stash@{index}"
# 查看当前记录中修改了哪些文件的内容
$ git stash show -p "stash@{index}"