博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git 使用心得
阅读量:4181 次
发布时间:2019-05-26

本文共 3243 字,大约阅读时间需要 10 分钟。

文章目录

配置

  1. 别名
    ~/.gitconfig中加入下面几行,可以使用更短的命令名字:
    [alias]	st = status	ci = commit	co = checkout	br = branch
  2. 解决显示中文乱码的问题
    $ git config --global core.quotepath false # 显示 status 编码 $ git config --global gui.encoding utf-8   # 图形界面编码 $ git config --global i18n.logoutputencoding utf-8	# 输出 log 编码

分支管理

  1. 本地创建分支,并提交到远程
    git checkout -b new_branchgit push -u origin new_branch # -u 即为 --set-upstream
  2. 修改分支名字
    git branch -m old_branch new_branch         # Rename branch locally. 如果当前就在old_branch上,可以省略old_branch.    git push origin :old_branch                 # Delete the old branch    git push --set-upstream origin new_branch   # Push the new branch, set local branch to track the new remote

回退

  1. 将某个特定文件回退到上一个版本:
    git checkout HEAD~1 file1/to/restore
  2. 临时退回上一个版本测试(将处于detached head状态)
    git checkout HEAD~1
    再恢复回来:
    git checkout master

Stash

  1. 将单个文件从stash中恢复
    $ git diff stash@{0} HEAD # 比较最近的缓存与当前版本$ git diff stash@{0} HEAD -- file_name # 比较特定的文件$ git checkout stash@{0} -- 
    # 恢复特定的文件

ref: https://stackoverflow.com/questions/1105253/how-would-i-extract-a-single-file-or-changes-to-a-file-from-a-git-stash

比较stash与HEAD

比较最新的Stash与HEAD,在cmder里不能加{0}:

git difftool stash HEAD

根本原因是终端把大括号{}吃掉了,列出了各种解决办法,但似乎在win10+cmder的机器上都不好用。只能用上面这种办法。

Commit

  1. 将别人的commit cherry-pick下来,修改后再提交,需要修改提交者的名字
    git commit --amend --author="your name 
    "

拉取部分代码

# 初始化git init # 添加源git remote add origin $CLONE_ADDRESS# 配置sparsecheckout为truegit config core.sparsecheckout true# 把要拉取的文件目录skynet以及所有的*.sh文件加入到.git/info/sparse-checkout文件中echo skynet >> .git/info/sparse-checkoutecho *.sh >> .git/info/sparse-checkout# 拉取文件git pull origin master

使用meld

作为difftool工具

git difftool使用GUI diff程序(即Meld)显示diff,而不是在终端中显示diff输出。

# Add the following to your .gitconfig file.[diff]    tool = meld[difftool]    prompt = false[difftool "meld"]    cmd = meld "$LOCAL" "$REMOTE"

[注意:这些设置不会改变git diff的行为,它会继续像往常一样工作。]

作为mergetool工具

git mergetool允许您使用GUI合并程序(即Meld)来解决合并期间发生的合并冲突。

# Add the following to your .gitconfig file.[merge]    tool = meld[mergetool "meld"]    # Choose one of these 2 lines (not both!) explained below.    cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED"    cmd = meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED"

使Meld忽略尾随空格

忽略尾随空白通常非常有用,尤其是在协作时,可以在Meld首选项文本过滤器选项卡中使用简单的Python正则表达式轻松手动添加。

# Use either of these regexes depending on how comprehensive you want it to be.[ \t]*$[ \t\r\f\v]*$

参考:https://codeday.me/bug/20180109/116253.html

添加meld右键菜单

如果想在git环境以外比较两个文件,也可以用meld,方法是:

  1. 新建一个meld的快捷方式(找到meld.exe,右键->新建桌面快捷方式),
  2. 在资源管理器中输入shell:sendto,打开“发送到”的文件夹,
  3. 将刚刚的meld快捷方式拖到这个目录中,大功告成,
  4. 使用的时候,选择两个要比较的文件,右键->发送到,这时就可以看到有meld的选项了。

参考:https://www.howtogeek.com/howto/windows-vista/customize-the-windows-vista-send-to-menu/

创建ssh仓库

小团队协作时,可以在一台安装了openssh-server的Linux服务器上配置git仓库,方便协作。方法分两步:1)在服务器上建立仓库容器;2)本地建立仓库并推到远端

服务器上建立仓库容器

  1. 到~目录下:
$ mkdir .ssh && chmod 700 .ssh$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
  1. 将本地的id_rsa.pub中的内容复制到服务器的authorized_keys,即添加了本地主机到信任列表。
  2. 在服务器上建立仓库容器:
cd ~mkdir git_repo && cd git_repogit init --bare

本地建立仓库并推到远端

  1. cd到代码所在目录
  2. 初始化仓库并推到远端:
git initgit add *.mgit commit -m "init"git remote add origin ssh://yourname@server_ip:/~/git_repogit push origin master

服务器上拉取代码

服务器上拉取代码就简单了,因为其实就是在本地拉取:

git clone ~/git_repo

转载地址:http://yahai.baihongyu.com/

你可能感兴趣的文章
android中SharedPreferences的简单例子
查看>>
android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
查看>>
andorid里关于wifi的分析
查看>>
Hibernate和IBatis对比
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
Android 的source (需安装 git repo)
查看>>
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
java多线程中的join方法详解
查看>>
在C++中如何实现模板函数的外部调用
查看>>
HTML5学习之——HTML 5 应用程序缓存
查看>>
HTML5学习之——HTML 5 服务器发送事件
查看>>
SVG学习之——HTML 页面中的 SVG
查看>>
SVG 滤镜学习之——SVG 滤镜
查看>>
mysql中用命令行复制表结构的方法
查看>>
hbase shell出现ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException
查看>>
让代码变得更优雅-Lombok
查看>>
解决Rhythmbox乱码
查看>>
豆瓣爱问共享资料插件发布啦
查看>>
kermit的安装和配置
查看>>
vim 配置
查看>>