Git 常用指令
用树的形式对代码的历史版本进行维护,有利于多人协作与代码回滚。
1. 基本概念
- 工作区:仓库的目录。工作区是独立于各个分支的。
- 暂存区:数据暂时存放的区域,类似于工作区写入版本库前的缓存区。暂存区是独立于各个分支的。
- 版本库:存放所有已经提交到本地仓库的代码版本
- 版本结构:树结构,树中每个节点代表一个代码版本。
2. 基础操作指令
git add
: 工作区 --> 暂存区
git commit
: 暂存区 --> 本地仓库,每一次 commit 代码一次提交记录
git log
: 查看提交日志
git log [option]
- -all : 显示所有分支
- –pretty=oneline : 提交信息显示为一行
- –abbrev-commit :使输出的 commitid 更简短
- –graph :以图的形式显示
git log --graph --oneline --abbrev-commit --all
git status
: 查看提交状态
git reset --hard commitID
: 回退到某个版本
git reset --hard HEAD^
或git reset --hard HEAD~
:将代码库回滚到上一个版本
git reset --hard HEAD^^
:往上回滚两次,以此类推
git reset --hard HEAD~100
:往上回滚100个版本
git reset --hard 版本号
:回滚到某一特定版本
git reflog
: 操作的日志 (查看已经删除的提交记录)
添加文件至忽略列表: 填写 .gitignore
3. 分支
HEAD: 标记当前分支
- 查看本地分支
git branch
- 创建分支 dev1
git branch dev1
git checkout -b dev1 # 创建并切换
- 切换分支
git checkout dev1
- 合并分支
git checkout dev1 # 切换到名为dev1的分支
vim file2 # 使用vim编辑器打开file2文件进行编辑
git add . # 添加当前目录下所有修改过的文件到暂存区
git commit -m 'add file2' # 提交暂存区的更改,并添加提交信息'add file2'
git checkout master # 切换到名为master的主分支
git merge dev1 # 将dev1分支的更改合并到当前所在的master分支
- 解决冲突
在 master 分支中修改 file1 内容:
this is file1
good luck
在 dev1 分支中修改 file1 内容:
this is file1
good luck to you
切换回 master 分支,合并时产生冲突,需要我们手动处理冲突!
$ git merge dev1
Auto-merging file1
CONFLICT (content): Merge conflict in file1
Automatic merge failed; fix conflicts and then commit the result.
打开 file1 内容如下:
this is file1
<<<<<<< HEAD
good luck
=======
good luck to you
>>>>>>> dev1
然后我们修改 file1
this is file1
good luck to you
good luck
www@DESKTOP-3QO16U4 MINGW64 /d/wordspace/code/study-program/git-test (master|MERGING)
$ git add .
www@DESKTOP-3QO16U4 MINGW64 /d/wordspace/code/study-program/git-test (master|MERGING)
$ git commit -m 'merge'
[master 35adfe8] merge
www@DESKTOP-3QO16U4 MINGW64 /d/wordspace/code/study-program/git-test (master)
$
解决冲突!!!
4.仓库托管
(1)配置 SSH 公钥
ssh-keygen -t rsa
生成密钥,通过以下查看公钥并配置
cat ~/.ssh/id_rsa.pub
通过以下方法判断是否成功
ssh -T git@gitee.com
(2)远程仓库推送
首先创建一个仓库
添加到远程仓库 (用 SSH 的地址)
git remote add origin git@gitee.com:xxx/git-test.git
查看远程仓库
git remote
把 master 分支推送到 origin 仓库
git push origin master
git push origin master:master
关联分支
git push --set-upstream origin master:master
关联之后仅需 git push
查看本地分支和远程分支的关系
git branch -vv
(3)远程仓库拉取
切换新的目录
克隆项目,并且文件夹命名为git-test2
git clone git@gitee.com:xxxxx/git-test.git git-test2
项目抓取
在git-test项目中添加文件 file3,并且提交远程仓库。
touch file3
git commit -m 'add file3'
git push
在git-test项目中抓取
# 从远程仓库拉取最新的分支和数据,但不会自动合并到本地分支
git fetch origin
# 将远程仓库的 master 分支的更改合并到当前本地分支
git merge origin/master
# 从远程仓库拉取最新的分支和数据,并自动合并到当前本地分支
git pull origin branch_name
远程仓库冲突
按照自己意愿修改冲突文件