Git和TortoiseGit的环境安装与使用
Git简介
Linus的第二个伟大作品
分布式,强调个体,速度快,灵活,已解决冲突,离线工作,每日工作备份
1 Git环境搭建
服务器基本搭建在Linux上。Windows上安装Git-1.7.9-preview20120201。
基本都是用默认选项,几个重要的界面选项如下:
使用默认的组件, 点击Next, 下一步
选择Git的命令行模式, 选择默认Git Bash 模式会创建一个快捷命令行, 点击Next下一步.
Finish 安装完成, 桌面会生成一个快捷图标。
2 Git使用
2.1 Git常用命令
2.1.1 创建git资源库
git init --bare <库名称>
kl@KINGLONG ~
$ cd /e/WorkData/code/gitcode
kl@KINGLONG /e/WorkData/code/gitcode
$ git init --bare openprj
Initialized empty Git repository in e:/WorkData/git/openprj/
2.1.2 clone资源
1.从用户文件夹clone资源
git clone <仓库目录> <用户目录>
注意:clone时候用户目录必须为空
例如:$ git clone /e/WorkData/git/openprj .
2.从远程仓库clone资源
以从github上clone资源为例。
Git能在多种协议下使用,Git URL可能以ssh://, http(s)://, git://为前辍。
git://协议较为快速和有效,但有可能被公司的防火墙阻止(非http访问请求)。
例如,Git本身的源代码可以用 git:// 协议来访问:
git clone git://github.com/kinglong198404/android-architecture.git
也可以通过http 协议来访问:
git clone https://github.com/kinglong198404/android-architecture.git
2.1.3 添加文件到版本控制
git add <文件名>
git status //查看状态信息 可看到readme.txt 的红色警告
git add readme.txt
2.1.4 提交到本地版本库
定位到master目录:cd /e/WorkData/code/gitcode/android-architecture
提交所有文件:git commit -m "提交到本地仓库"
如果报以下错误,删除index.lock文件后再提交:rm -f ./.git/index.lock
Unable to create 'E:/workdata/code/gitcode/android-architecture/.git/index.lock': File exists.
git commit <文件名> 或git commit
git commit readme.txt
要填写修改说明 按i 进入编辑模式,填写完成按esc退出编辑模式,然后按:wq保存
git commit -m “commit a file” readme.txt //带上修改注释
git commit -m “commit all files” //带上修改注释
2.1.5 推送到远程共享版本库
git push origin master
或
git push /e/WorkData/git/openprj master
如果报错信息如下:则是服务端没有授予当前账号相应权限,需联系管理员更改服务端配置。
You are not allowed to push code to protected branches on this project.。
如果报错信息如下:则是账号密码验证失败,应清除账号密码缓存后再提交,会弹出密码输入框。
emote: HTTP Basic: Access denied
fatal: Authentication failed for 'http://********
应清除账号密码的命令如下:
git config --system --unset credential.helper
如果以上操作还不能清除掉,在win10 用户凭据里删除相应项目:
控制面板 》 用户帐户 》 管理你的凭据
选择 [Windows 凭据]
git 保存的用户信息在普通凭据列表里,将其删除。
2.1.6 拉取最新的文件
git pull
2.1.7 删除目录或文件
git rm -r --cached framework # --cached不会把本地的framework目录删除
git commit -m 'deleted a folder'
git push -u origin master
2.1.8 覆盖本地目录或文件
git checkout 覆盖本地(不想保留本地的修改,用该命令同步到服务端版本)
撤销了所有的修改后,可以用git pull更新代码。
或者定位到项目目录依次执行以下命令:
git reset --hard origin/master
<span style="background-color: rgb(246, 248, 250); color: rgb(0, 0, 0); font-family: " source="" code="" pro",="" "dejavu="" sans="" mono",="" "ubuntu="" "anonymous="" "droid="" menlo,="" monaco,="" consolas,="" inconsolata,="" courier,="" monospace,="" "pingfang="" sc",="" "microsoft="" yahei",="" sans-serif;="" font-size:="" 14px;="" font-variant-ligatures:="" common-ligatures;="" white-space:="" pre;"="">git pull
2.1.9 git checkout
A.操作文件
git checkout filename 放弃单个文件的修改
git checkout . 放弃当前目录下的修改
B.操作分支
git checkout master 将分支切换到master
git checkout -b master 如果分支存在则只切换分支,若不存在则创建并切换到master分支
应用:将develop分支代码合并到master分支
develop代码目录上右键->Git Bash Here,执行以下命令,如果有合并失败,解决冲突后,commit和push即可。
git checkout master
git merge develop
git push (merge成功后也要push,否则代码没有提交到服务器的仓库)
合并完成后,使用git checkout develop回到develop分支继续开发。
将master分支合并到develop
develop代码目录上右键->Git Bash Here,执行git merge origin/master,git push即可(需要填写合并的理由)。
2.1.10 更多相关
master(主分支,永远是可用的、稳定的、可直接发布的版本,不能直接在该分支上开发)
2.2 git pull冲突解决
$ git pull
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From g:/software/repository/git/itheima26
50db030..a04027a master -> origin/master
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
解决方法:
1.git mergetool
调用上面命令之后会提示你输入编辑方法,输入:beyond compare 进入编辑器.
2.编辑完之后.调用git commit -a 把当前目录中所有都提交到本地库中.
3.git push origin master 提交到远程库中.
3.TortoiseGit使用
运行TortoiseGit-1.7.7.0-32bit.msi,按默认选项安装。
创建仓库:
Clone项目:
创建文件,add
提交内容:
Push到服务器:
点击空白地方(不是文件),右键菜单,选择TortoiseGit->Push
Pull从服务端获取代码:
4.TortoiseGit右键菜单不显示问题
安装完TortoiseGit之后,从远程仓库拉取项目的时候发现,右击没有TortoiseGit菜单。文件夹中TortoiseGit相关的状态图标不显示。
cmd窗口输入 regedit
定位到计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\ 下:
Tortoise1xxx到Tortoise9xxxx 改名,可统一在前面加几个空格,让它们排在最前面。
重启explorer.exe进程(资源管理器)即可。
5.git中文乱码
5.1 git中文乱码问题
https://blog.csdn.net/xl_lx/article/details/78223349
1.C盘“用户”目录,当前用户名下有个.gitconfig 文件,如C:\Users\kl\.gitconfig。添加以下配置:
[core]
quotepath = false
[gui]
encoding = utf-8
[i18n]
commitencoding = utf-8
logoutputencoding = utf-8
2.编辑etc\profile文件,在文件末尾添加如下内容:
export LESSHARESET=utf-8
3.编辑etc\inputrc文件,修改output-meta和convert-meta属性值:
set output-meta on #bash可以正常输入中文
set convert-meta off
4.编辑etc\git-completion.bash文件,在文件末尾增加以下内容:
alias ls='ls --show-control-chars --color=auto' #ls能够正常显示中文
5.2 git bash下中文乱码解决办法
1.在git bash下,右键出现下图,选择options:
2.选择"Text"
3.将"Character set"设置为 UTF-8
5.3 tortoisegit 中文乱码
下载安装最新版:2.7.0
https://tortoisegit.org/download/