git:分布式版本控制
相较于svn,多了一个暂存区 index
svn: 集中式版本控制
git的原理
其中svn中不存在Index这个区域
一般git工作流程
创建仓库
git init .
拉取remote数据
- 拉取本机remote数据
git clone H:/项目/git-remote dir_name
- 拉取其他服务器remote数据
git clone user@ip:/path/to save_path #需要输入密码
- 免密拉取代码
第一步,生产ssh公私钥对
ssh-keygen -t rsa
生产两个文件id_rsa, id_rsa.pub
将id_rsa.pub中的数据放入远端ssh 密钥管理,则可以免密直接clone
提交代码
- 将修改数据移交到Index,
git add xxxx
- 将修改数据移交到repository
git commit -s -m "提交日志"
-s : 对该次提交签名
- 将repository中的数据提交到remote中
git push origin(远程主机名) local_branch:remote_branch
查看提交记录
git log
git relog
回退版本
git reset --xxx hash_value #不加hash_value则不清空文件修改店
git reset --xxx head~index #index是往前回退几个版本,该值在git relog中有表现
–mixed 代码回退到workspace
–soft 代码回退到Index
–hard 代码回退到remote
修改上一次提交内容
git add xxx
git commit amend
批量整理repository
git rebase -i hash_start hash_end # 后面两个参数可省略
对repository中未到remote的数据进行修改
执行上述指令后,找到需要修改的hash版本,将前面的pick改为e,保存退出
git add xxxx
git commit --amend
git rebase --continue
合并提交
执行上述指令后,找到需要修改的hash版本,将前面的pick改为s,保存退出,这会将s的这一次提交与之前一次提交记录合并
分支处理
建立分支
git branch branch_name
切换分支
git checkout -b local_branch_name remote_branch_name
git checkout local_branch_name
分支合并
将 branch1合并到当前分支
git merage branch1
解决冲突文件
冲突文件中会有以下内容, 其中sssss是本地内容,xxxxxx是远端数据,手动修改冲突文件,选择自己所需要的内容,进行保存
<<<<<<<<<<<<<<<<<<
sssss
=================
xxxxxx
>>>>>>>>>>>>>>>>> hash_value(commit_string)
随后执行
git add
git commit -s -m "xxxxx"
git rebase --continue
配置用户信息
- 配置用户名
git config user.name lsy
- 配置用户邮箱
git config user.email 503000895@qq.com