Windows下GIT安装及使用
初次运行 Git 前的配置
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
git工具安装
git安装包: ftp://192.168.100.131/git/Git-2.15.1.2-64-bit.exe
比较工具meld安装包:ftp://192.168.100.131/git/Meld-3.16.2-win32.msi
git服务器相关配置
- 服务器地址:http://192.168.100.131
- 配置ssh
- 打开git bash, 输入命令
ssh-keygen -t rsa -C "your.email@example.com" -b 4096
生产ssh-key (注意:Email替换成自己的公司邮箱) - 打开id_rsa.pub文件,复制内容到
http://192.168.100.130/profile/keys
, 点击Add key即可
- 打开git bash, 输入命令
比较工具Meld的安装及配置
- 下载安装 http://meldmerge.org/
- 配置(修改 C:\Users\xx.gitconfig文件,添加如下内容)
[merge]
tool = meld
[mergetool "meld"]
path = C:/Program Files (x86)/Meld/Meld.exe
[diff]
tool = meld
guitool = meld
[difftool "meld"]
path = C:/Program Files (x86)/Meld/Meld.exe
linux配置如下
[merge] tool = meld
git常用别名设置
- 修改 C:\Users\xx.gitconfig文件,添加如下内容
[alias]
co = checkout
br = branch
ci = commit
st = status
fmerge = merge --no-ff
meld = difftool -y
flog = log --pretty=format:'%h - %an, %ar : %s' --graph
last = log -1 HEAD
unstage = reset HEAD --
sdiff = !git diff && git submodule foreach 'git diff'
spush = push --recurse-submodules=on-demand
supdate = submodule update --remote --merge
git 相关命令学习
《Git Pro》 参考:http://iissnan.com/progit/
git常用操作整理
代码修改前
- 如果存在多人修改同一分支上的内容,建议每次修改代码前先从服务器上更新一下
git pull
- 注意:如果本地代码没有指定跟踪服务器上哪个分支,需要自己明确指定从服务器上哪个分支做更新
git pull origin <branch-name>
- 注意:如果本地代码没有指定跟踪服务器上哪个分支,需要自己明确指定从服务器上哪个分支做更新
- 如果项目中使用了其他子项目,需要对子项目也做一下更新操作
git submodule update --remote
代码提交前
- 查看哪些文件处于什么状态
git status
- 检查每个文件具体做了哪些修改
git difftool -y
(建议每次提交前都先做一下diff操作,确保自己修改的内容无误)
提交代码
- 提交修改的代码
git commit -am "xx"
- 如果修改了多个文件想要按功能分多次提交,可逐次使然如下命令
git add <file-name>
git commit -m "xx"
- 如果修改了多个文件想要按功能分多次提交,可逐次使然如下命令
将代码提交到服务器
-
git push -u origin <branch-name>
, 其中-u
表示指定跟踪服务器上的哪个分支,只需要指定一次即可,之后在push可不用-u
选项
代码合并
- 更新本地的origin/分支为服务器上的最新版本
git fetch --all
- 合并某个分支上的内容到本地
git merge origin/<branch-name>
- 如果提示有冲突的话,需有手动解决冲突
git mergetool
,建议合并工具使用meld
,方便进行三方合并 - 手动合并完成之后,需要自己commit一下
分支操作
- 查看所有分支
git branch -a
- 切换分支
git checkout <feature-name>
- 注意:如果本地代码有修改,这时候需要切换分支,此时有两种情形可参考:
- 将代码修改完成,然后本地提交
git commit -am "xx"
- 保持代码现有状态,先将代码保存起来,然后等再次切换回这个分支的时候,将保存的代码做恢复操作,从而达到跟切换之前一样的效果,具体操作
- 保存操作
git stash
- 恢复操作
git stash apply
或者git stash pop
, 两者的区别是,后者在做完恢复操作之后,会将这条记录从stash栈中出栈, 简单起见,建议用pop命令。 (如果stash栈中有多条记录,想恢复其中的某条记录的话,使用git stash apply stash@{id}
)
- 保存操作
- 查看stash栈
git stash list
- 清空stash栈
git stash clear
- 将代码修改完成,然后本地提交
- 注意:如果本地代码有修改,这时候需要切换分支,此时有两种情形可参考:
- 创建新分支
git checkout -b <new-branch-name> <from-branch-name>
, 如果不指定<from-branch-name>
, 则默认是以本地当前分支为原型做的clone - 将当前的本地分支提交到服务器
git push -u origin <branch-name>
- 删除本地分支
git branch -d <branch-name>
- 删除服务器上的同名分支
git push origin --delete <branch-name>
- 常用分支模型, 参考
查询
- 从历史提交中查询某个关键字的修改
git rev-list --all | xargs git grep -n "xxx"
- 查看某个文件在历史版本中修改内容
git log -m --oneline --full-history --follow -p fileName
其他
- 如果服务器地址有修改,会导致本地无法跟服务器交互,需要重新设置服务器的git地址
git remote set-url origin <git@xxx.git>
- 如果gitlab服务器发生过迁移,导致跟服务器交互时出现"WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED", 可通过设置
sh-keygen -R "服务器地址"
来解决 - 比较当前版本某文件与其他版本的区别
git difftool -y 其他版本号 -- filename