下载
https://tortoisegit.org/download/
此处包含两个文件,一个是安装程序,一个是语言包
生成快捷方式,在当前用户下,命令cd ~ 进入账号根目录touch .bashrc
比如添加别名
alias www=‘cd /D/phpStudy/PHPTutorial/WWW’
alias o=‘explorer .’
alias hstead=‘cd /d/homestead’
alias ea=‘vim ~/.bashrc’
alias ra=‘source ~/.bashrc’
alias vm=‘ssh vagrant@192.168.10.10’
第一步,生成Key
新安装程序包含文件PuTTYgen密钥生成工具
新版本界面如下图,选择ECDSA或者ED25519密钥类型, 点击Generate, 然后不停地移动鼠标(估计为随机数生成密钥)
Save private key 保存密钥到本地磁盘,命名git.ppk, 此文件非常重要,提供TortoiseGit程序作为拉取代码的凭证, 后续使用PuTTYgen程序,可继续加载密钥字符串
第二步,配置gitlab凭证
登陆git仓库,点击个人头像,弹出下拉框中选择setting,选择SSH Keys, 添加上一步生成的key
第三步,配置TortoiseGit程序
进入仓库,右键TortoiseGit->设置->远端, 设置PuTTYgit密钥文件(第一步已经生成)
如果你是第一次配置,或许你还需要设置Git->编辑全局.git/config中的用户名和邮箱
[user]
name = your_name
email = your_mail
设置用户
git config --global user.name “dev_guo”
git config --global user.email “Dev_guo@patazon.net”
创建SSH Key
ssh-keygen -t rsa -C “youremail@example.com”
id_rsa是私钥,不能泄露出去。
id_rsa.pub是公钥,可以放心地告诉任何人。
基本使用
初始化目录
git init
查看远程分支
git branch -r
git remote show origin
创建分支
git checkout master
git checkout -b dev
第一次拉取远程分支
推荐:
git checkout master
git checkout -b local_branch origin/remote_branch
或者
git checkout master
git checkout -b local_branch
git pull origin remote:local
提交流程
git pull origin remote_branch:local_branch
git status
git add .
git commit -m ‘message’
git push origin master
删除分支
git branch -d dev
强制删除不管是否合并
git branch -D dev
删除本地库中这些相比较远程库中已经不存在的分支(之前从远程库拉取过,可能之后被其他人删除了)
git remote prune origin
untracks file
#选择分区提交
git checkout dev
git add .
或者丢弃
git clean -fd
切换版本(注意不是切换分支)
git reflog
git log
git reset --hard xxxxx
合并分支
查看当前所在分支
git branch
切换分支到master
git checkout master
当前在master 合并dev分支
git merge dev
合并分支操作实战, 注意,此处为master合并dev分支过程
git checkout master
echo ‘test’>readme.txt
git add .
git commit -m ‘create readme.txt’
git checkout -b dev
echo “create git branch dev”>>readme.txt
git add .
git commit -m ‘append readme.txt content’
git checkout master
git merge dev
权限问题
git config --add core.filemode false
查看日志
git log
git reflog
版本回退
未提交,放弃本地所有的修改
git checkout . [或者具体文件]
git clean -fd
缓冲区, 放弃缓冲区所有的修改
git reset HEAD . [或者具体文件]
回退上一个版本
git reset --hard head^ [或者版本号]
回退上上一个版本
git reset --hard head^^
指定到某个版本
此处恢复的是远程版本
git log
$ git log
commit 49f6f3ad7f49a15c5532279e51a0802ae76133ef
Author: pecwu email@hank.com
Date: Tue Apr 18 09:00:28 2017 +0800
commit all
commit 38169dbc76df69391f97b9d1cecb8559e31aab70
Author: pecwu email@hank.com
Date: Tue Apr 18 08:53:54 2017 +0800
commit git file
git reset 指定版本号即可
git reset --hard 38169
查看每次操作branch的信息
回滚到某个版本后, 之前的版本git log 就再也找不到,入需要, 则用git reflog 查找以前提交的版本号, 这样就可以再次恢复
$ git reflog
49f6f3a HEAD@{0}: reset: moving to 49f6f
ee068fb HEAD@{1}: reset: moving to ee068fb
49f6f3a HEAD@{2}: reset: moving to 49f6f
38169db HEAD@{3}: reset: moving to head^
49f6f3a HEAD@{4}: reset: moving to HEAD^
743c401 HEAD@{5}: commit: change
49f6f3a HEAD@{6}: commit: commit all
38169db HEAD@{7}: commit: commit git file
164ef3b HEAD@{8}: commit: test git file
ee068fb HEAD@{9}: commit (initial): first commit
忽略版本控制
修改.gitignore添加你略略的文件即可
上述方法仅对本来就不在分支内的文件有效,否则你可以先删除一下文件在分支的信息
当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用
git rm --cached file_path
git commit -m ‘delete remote somefile’
git push
本地回退checkout
文件还没提交到远程服务器
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
git status
git checkout – test.txt
总结
场景1:
当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout – file。
场景2:
当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,
git reset HEAD file,等于重置缓存区
按场景1操作,恢复版本
git reset head [filename]
git checkout – filename
场景3:
已经提交了不合适的修改到版本库时,想要撤销本次提交
git reflog
git reset --hard gitid
场景4:
untracked file删除
删除仅仅为文件
git clean -f
删除文件和目录,并且显示删除条目
git clean -nfd
Git使用原則
命名规则
快进式和非快进式
分支说明
重点:特性(feature)分支开发
修复(bug)分支开发
预发布分支开发
文献来源
https://www.cnblogs.com/gzpblog/p/5463031.html
https://www.zybuluo.com/pecwu/note/785860